Quest2上で動作するパススルーモードを試す

はじめに
エンジニアの松原です。先日社内でVarjo XR-3が導入され、今後はハイエンドなXRコンテンツが作っていけそうです。最近はAR/MR関連も業界で活発化しているのを見かけており、さらに楽しみが増えました。
それに関連して、先日Oculus Integration SDKがアップグレードされたのですが、ついに実験的機能としてパススルーモードが追加されました!
早速試してみたのですが、ビルドの際に気を付ける箇所があったので、備忘録的に記事としてまとめました。
Oculus Integration v31について
2021/08/12にリリースされたOculus Integration SDK v31には大きな変更がありました。
- Passthrough APIが実験的機能に追加された
- (Quest/Quest2のOSに)Vulkan検証レイヤが利用できるようになり、今後のアプリケーション開発にVulkanでの開発が推奨される
- Unity上で動作するOVRPluginがOpenXR backendがデフォルトで有効になったこと
OVRPluginのバックエンドがOpenXRベースのものに変わったものも含め、以下にUnityでのQuest2向けのパススルーモードを有効にする設定までの手順をまとめてみました。
XR Plug-in ManagementとOculus XR Pluginをインストール
OpenXR backendを利用する場合、XR Plug-in ManagementとOculus XR PluginをPackage Managerに追加する必要があります。
Unity2019~2021ではProject SettingsのGUIから追加することができます。一番下の項目にXR Plugin Managementの項目から、下図のボタンを押します。

しばらく待つと自動的にXR Plug-in Managementが利用できるようになります。続けてOculus XR Pluginも追加します。下図のようにXR Plugin ManagementのPlug-in Providersのリストのうち、Oculusにチェックを入れます。チェックを入れたら自動的にプラグインが追加されます。

Oculus Integrationをインストール
これらのパッケージが追加できたら、Oculus Integrationの最新版のv31をPackage Managerからアセットをダウンロード、インポートします。

Unity2019をお使いの場合、バックエンドがOpenXRベースのものになっていないので、メニューバーの Oculus > Tools > OpenXR > Switch to OVRPlugin with OpenXR backend を選択し忘れないよう注意してください。
(Unity2020や2021ではデフォルトでOVRPluginがOpenXR backendを使うように変更されましたので、そのままで大丈夫です。)

ビルド設定を変更する
Project SettingsのPlayerのOther Settingsの設定を変更していきます。
Color Space を Linear に変更します。

Graphics APIはOpenGLES3、VulkanいずれかでもPassthrough APIは動作するようですが、v31ではVulkan APIの利用が推奨されているようなので、せっかくなので Auto Graphics API のチェックを外し、Vulkan を利用するように変更します。

v31のパッケージではPassthrough APIではARM64ビルドでないと動作しないようで、そのためには Scripting Backend を IL2CPP に変更したうえ、ARMv7 のチェックを外し、 ARM64 の箇所にチェックを入れます。

シーン中にあるOVRCameraRigのパススルーモードを有効にする
パススルーモードを利用するにはUnityのScene中にあるOVRCameraRigの設定を変更する必要があります。今回は Assets/Oculus/SampleFramework/Usage/Passthrough/Scenes 配下にある AugmentedObjects のシーンをサンプルとして利用します。

Hierarchyにある OVRCameraRig を選択します。

インスペクタにある OVR Manager (Script) の Experiment Features Enabled や Passthrough Capability Enabled にチェックを入れ、Enable Paththrough にもチェックを入れます。

他、サンプルからでなく、一から自分のアプリをパススルーにする方法に関しては追加で以下の記事を参考にしてください。 https://developer.oculus.com/experimental/passthrough-api/
設定後、シーンを保存アプリをビルドして実機に転送します。
ADBコマンドからQuest2実機側のパススルーモードを有効にする
2021/08/13日時点だと、パススルーモードの有効/無効設定はADBコマンドからしか変更できないようです。
PCとQuest2をUSBケーブルを使って接続した状態で、ADBコマンドが利用できるPC環境で、以下のコマンドを実行します。
adb shell setprop debug.oculus.experimentalEnabled 1
※Quest2を再起動するたびに上記コマンドが必要になるようです(パススルーモードが無効になるようにリセットがかかるみたいです)。
実行画面例

試した所感など
パススルーモードは現在実験的機能で、まだ本機能として実装されるか不明ですが、Quest2があればAR/MRコンテンツが体験できるようになりそうで嬉しいです。
また、Graphics API が 本格的にVulkanに移行されることも期待され、パフォーマンスの向上が期待でき、今後の開発が楽しみです!
お知らせ
Synamonでは現在Unityエンジニアやサーバーサイドの採用を積極的に行っております!Unityの開発経験がある方をお待ちしております!
ご自身のキャリアプランに合わせて役職を選べます!詳しくは以下の求人を見ていただけると嬉しいです!