はじめに
エンジニアの松原です。先日社内で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の本体のセキュリティで静止画や動画キャプチャをすると真っ暗になるようなので、実機のレンズにスマホを押し当てて撮影しています。
試した所感など
パススルーモードは現在実験的機能で、まだ本機能として実装されるか不明ですが、Quest2があればAR/MRコンテンツが体験できるようになりそうで嬉しいです。
また、Graphics API が 本格的にVulkanに移行されることも期待され、パフォーマンスの向上が期待でき、今後の開発が楽しみです!
お知らせ
Synamonでは現在Unityエンジニアやサーバーサイドの採用を積極的に行っております!Unityの開発経験がある方をお待ちしております!
ご自身のキャリアプランに合わせて役職を選べます!詳しくは以下の求人を見ていただけると嬉しいです!