見出し画像

XR Interaction Toolkitでコントローラーを表示する

Unityが提供しているXR Interaction Toolkitを使用して、コントローラーを表示します。
Oculus Integrationでは、OVRPlayerControllerにコントローラーのモデルが付属しており、デフォルトで設定済みなので、OVRPlayerControllerを使用する事で、特に意識せずに表示されます。
しかし、XR Interaction Toolkitでは、コントローラーのモデルが付属していないので、自前でモデルを用意し設定しないと表示されません。
簡単なコントローラーのモデルを作成、設定して表示してみます。

環境

Unityバージョン:2020.3.11f1
XR Interaction Toolkit:1.0.0-pre.4
Oculus Quest2: v29 ソフトウェア (※)

※Oculus Quest2のテスト機能である「VRにデスクを持ち込もう」を有効にしていると自作プログラムが動作しませんでした。
回避方法はあると思いますが、確認できていません。

プロジェクトの作成及び設定

以前の記事「XR Interaction Toolkitで移動する - プロジェクトの作成及び設定」を参考にしてください。

コントローラーのモデルの作成

コントローラーに設定するモデルを作成し、プレハブ化します。ここでは、球体(Sphere)をコントローラーのモデルとします。
Hierarchyビューの右クリックして表示されるコンテキストメニューからCreate Emptyを選択し空オブジェクトを作成、名称を「HandController」とします。
作成したHandControllerを選択し、右クリックして表示されるコンテキストメニューから3D Object > Sphereを選択し、「Sphere」を作成します。
作成したSphereを選択し、InspectorビューのTransform - ScaleのX、Y、Zに0.1を設定します。

画像4

HierarchyビューのHandControllerを選択し、ProjectビューのAssetsにドラッグ&ドロップすると、HandControllerがプレハブ化されます。
プレハブ化した後は、HierarchyビューのHandControllerは、不要なので削除します。

Unity_HandControllerプレハブ化

プログラムの作成

■VR用カメラと床の作成
VR用のカメラと床は、以前の記事「XR Interaction Toolkitを使用してみる - プログラムの作成」を参考にしてください。
XR Interaction Toolkit 1.0.0-pre.4では、「Room-Scale XR Rig (Action-based)」と「Stationary XR Rig (Action-based)」が無くなり、「XR Rig (Action-based)」になっています。
XR Rig (Action-based)を作成し、InspectorビューのXR RigコンポーネントのTracking Origin Modeを「Floor」に設定してください。

画像4

■Input Action Managerの作成とコントローラーの設定
Input Action Managerの作成とコントローラーへのアクションのマッピング情報の設定は、以前の記事「XR Interaction Toolkitで移動する - プログラムの作成」の「Input Action Managerの作成」と「コントローラーの設定」を参考にしてください。

■コントローラーのモデルの設定
HierarchyビューのXR Rig > Camera Offset > LeftHand Controllerを選択し、InspectorビューのXR Controller (Action-based)コンポーネントのModel - Model Prefabに、先ほど作成したHandControllerをProjectビューのAssetsからドラッグ&ドロップします。
RightHand Controllerも同様に設定します。

Unity_Model_Prefab_コメント記載

実行

保存(File > Save)してから、Oculus Quest2が接続されている事を確認し、Build And Run(File > Build And Run)を実行します。
コンパイルが開始され、コンパイル終了後に接続されているOculus Quest2にプログラムが自動転送され実行されます。
球がコントローラーとして表示されます。

終わりに

球をコントローラーとして表示させました。ボタンの押下に合わせてコントローラーを変化させたり、手の形を表示させるには、モデルやアニメーションを用意する必要があります。
UnityのXR Interaction Toolkitのサンプルプログラムには、アニメーションはしませんが、独自のコントローラーのモデルがあるので、ここで作成した球の代わりに使用するとよりコントローラー感が出ると思います。

Unity XR Interaction Toolkit サンプル
https://github.com/Unity-Technologies/XR-Interaction-Toolkit-Examples
コントローラーのモデルは、以下にあります。
Assets > Prefabs > controller

将来の自分への備忘録、ついでに誰かの何かのきっかけになれば幸いです。

いいなと思ったら応援しよう!