
Oculus Quest 2+UnityでVR:Oculus Integrationを導入
前章でOQ2の姿勢をUnityのカメラに同期させる方法を見て来ました。もちろんそれでも開発は進められるのですが、色々調べてみるとOculusが公式で提供している「Oculus Integration」を導入した方がOQ2の開発が色々便利になるようです。
そこでこれを導入してみる事にします。
Oculus Integrationの導入
Oculus IntegrationはOculusの開発に特化したAPIやモデル、各種機能を提供してくれるアセットです。以下のリンク先から導入できます:
サイズがかなり大きいのでUnityにImportする時にかなり時間がかかります。Importが終わるとAssetフォルダ直下に「Oculus」というアセットフォルダが追加されます。別のプロジェクトで流用する時は毎度DLするとシンドイので、このフォルダをコピーしましょう。
なぜOculus Integrationを使うのか?
UnityはVR用のAPI等を提供してくれているのですが、それだとOculus固有の機能を使う事が出来ません。また、カメラやモーションコントローラの制御などもより扱いやすくしてくれます。要は面倒臭い事は回避したいなぁ~っという事です(^-^;
OVRCameraRigでカメラを置き換え
Oculus Integrationを導入したので、試しにカメラをセットしてみましょう。前章でUnityのデフォルトカメラにTracked Pose Driverコンポーネントをアタッチしましたが、これを無くしてOculusが提供する「OVRCameraRigプレハブ」に差し替えます。
OVRCameraRigプレハブはAssets/Oculus/VR/Prefabsフォルダ下にあります。これをヒエラルキにドロップします:

これだけで全章と同様にOQ2の姿勢とカメラが同期します。ご機嫌~(^-^)
プレハブの構成をさらっと見ていきます。さらっとですが割と大切です。
〇 OVRCameraRig
カメラのトラッキング情報をまとめているOVRCameraRig、OculusのVR環境を管理するOVRManager、Unity Editor上でカメラの動きをエミュレート出来るOVR Headset Emulatorをコンポーネントに持ちます。OQ2の主要な情報が集約しています:

〇 TrackingSpace
下にぶら下がっているカメラやモーションコントローラの起点となるトラッキング座標です。コンポーネントは特に付いていません。プレイヤーの位置を変更する時にはこのノードのTransformを操作する事になります。
〇 LeftEyeAnchor、CenterEyeAnchor、RightEyeAnchor
それぞれにUnityのカメラがアタッチされています。UnityのTrackedPoseDriverと同じように毎フレームOQ2の姿勢がTransformに反映されます。
〇 TrackerAncker
何もコンポーネントが付いていないノードです。おそらくプレイヤーの位置をベースとする色々な物(アバターモデルとか)をこの下にぶら下げる為に設けられているのかなと思います。
〇 LeftHandAnchor、RightHandAnchor
左右のモーションコントローラの位置や回転情報が毎フレームこれらにTransformに反映されます。その下にぶら下がっているAnchorの下に手用のモデルを置けば、VRの世界に手が見えるようになります。
このように、OVRCameraRigをヒエラルキに置けば、OQ2やOculus Touchの姿勢をすぐに活用出来るようになります。同じ事を自前でやると泣きそうになるので大変ありがたいですね。
次回はOculus Touchの情報を取ってみます。