ななばたの趣味ノート

ゲームの話とか。技術系も書くかも。

XR Handsでサンプルを動かす

XR HandsでVR

Quest2とPCでVR空間上でコントローラーでの簡単な操作とコントローラーなしでのハンドトラッキングの実装までをやってみた。

いろいろ四苦八苦してミニマムな感じに設定できたので自分用にメモしておく。

Open XRについて

調べた限り立ち位置としてはこんな感じっぽい。

UnityでQuest2を繋いでVRのゲームをつくるとき、だいたい以下のような選択肢があるらしい。

  • OpenXR
    VR/AR標準仕様らしい。
    • XR Interaction Toolkit
      基本的な移動やコントローラー認識。
    • XR Hands
      ハンドトラッキング
  • Oculus独自
    Oculusの用意した開発キット。
    • Oculus Integration
      たぶん移動とか認識とか。今回やってないので詳細不明。
    • Interaction SDK
      Meta純正のハンドトラッキング。今回使ってないので詳細不明。

なんとなく標準仕様に惹かれたのでOpen XRでの実装を目指した。

Open XRとOculus Integrationの情報が調べるときごっちゃになって難しかった。

環境

Unity 2022.3.5f1
 Android Build Support, Windows Build Support (IL2CPP), 日本語言語パック

XR Interaction Toolkit: 2.4.3

XR Hands:1.2.1

手順

  1. プロジェクト作成:3D(コア)
  2. パッケージのインストール:
    ウインドウ>パッケージマネージャー>Unityレジストリを開き、以下をインストール
    ・XR Interaction Kit
    ・XR Hands
  3. サンプルプログラムのインポート:
    XR Interaction Kitのタブのサンプルから以下をインポート
    ・Hands interaction Demo
  4. XR Plug-in Management設定
    編集>プロジェクト設定>XR Interaction Kit>XR Plug-in Management
    今回はOpen XRにチェックを入れる。

    いろいろエラーが出ると思うのでエラーマークをクリックした先でFix All。

    Open XRの設定について一つエラーが残るのでEditを押すとOpenXRの設定画面へ。
  5. OpenXR設定:

    Render Mode:Multi-Pass これを入れないと片目しか見えなかったりする
    Interaction Profiles:今回はQuest2で使うのでOculus Touch Controller Profileを追加。+から追加できる。
    OpenXR Feature Groups:Hand系3つにチェック
    ・Hand lnteraction poses
    ・Hand Tracking Subsystem
    ・Meta Hand Tracking Aim

動作確認

ここまで出来たら
Assets/Samples/XR Interaction Toolkit/2.4.3/Hands Interaction Demo/Runtime/HandsDemoScene.unity
を開いて動かしてみる。

うまくできていればOculus Linkした状態でPlayボタンを押すとサンプルのシーン内でコントローラーでの移動・ターン、ハンドトラッキングの指先やつまみ操作ができる。

なんか若干エラーは出てるがまぁ動くのでよしとする。