MetaQuest2でパススルーとハンドトラッキングをしてみよう!

最近、MetaQuest2ではパススルーを使ったアプリが増えてきました。
本記事ではパススルーに加え、ハンドトラッキングも使用するための環境構築を行います。
アプリ開発の参考になれば幸いです。

環境構築

使用バージョンはUnity2021.3.6f1となります。まずはBuildSettingsから、Androidに変更しましょう。

その後、Project Settings>Playerへ移動し、下記の設定を行います。
・Auto Graphics APIのチェックをはずして、Graphics APIsのOpenGLES2を削除する

・Script BackendをIL2CPPにする。
・Target ArchitectureのARM64のみにする。
・ AndroidのターゲットAPIレベルを29にする。

次に、Oculus Integrationをアセットストアから入手し、インストールを行いましょう。
最後にXR Plugin Managementへ移動し、Oculusを有効化します。

これで設定は完了です!

パススルー

まずは、HierarchyウインドウのMainCameraを削除し、OVRCameraRigプレハブを追加しましょう。

Inspectorウインドウを見ると、OVRManager内にPassthrough Capability Enabledの項目がありますのでオンにします。その後表示されるEnable Passthroughの項目もオンにしましょう。

続いてAdd Componentより、OVR Passthrough Layerを追加します。
OlacementやOpacityの値を調整することで、パススルーの映像と、CGの映像の合成具合を調整することができます。デフォルトではOpacityが1になっていますが、今回は0.8にしました。

ハンドトラッキング

「OVRCameraRig」をクリックし、Inspectorウインドウを見ると、OVRManagerがあり、項目にHandtrackingSupportがあります。
ここでハンドトラッキングを切り替えます。「Controllers and Hands」または「 Hands only」に変更しましょう。

Quest2でハンドトラッキングを使用していない方は、そちらの設定変更も必要です。
設定 > デバイス > ジェスチャーコントロールとコントローラーへ移動し、ジェスチャーコントロールをオンにしましょう。

これでハンドトラッキング・パススルーの設定が完了しました。
ビルドしてみると、パススルーで部屋を見渡すことができるほか、ピンチインでOculusのメニューを表示させることができます。
試しに、OVRCameraRigのなかにOVRHandPrefabやCubeを加えてみました。

ビルドしてみよう!

ビルドした映像がこちらになります。
パススルーの画面は通常のキャプチャでは真っ黒になってしまうため、UnityのAndroidLogcatを使用して動画を撮影しました。

このように、うっすらとCubeをみることができます。HandPrefabは手とほぼ同化してしまい、みることができませんでした。
また、デフォルトで設定されている背景も薄く確認することができます。

まとめ 

パススルーもハンドトラッキングも簡単に設定することができました。
サンプルも充実しているため、どういった表現ができるか確認したい場合はAssets/Oculus/SampleFramework/Usage/Passthroughなどのシーンを確認すると良いでしょう。