UnityでOculus Quest2開発入門(設定編)
こんにちは。たつぷり(@Tatsupuri2)です。シリーズ「UnityでOculus Quest2開発入門」の第1回目です。最近Oculus Quest2を買ったので、Unityを使って何か作ろうと思います。とりあえず何回かに分けて、チュートリアルをこなしていく記事を書いていく予定です。
今回は入門前の、開発環境の設定などに関してです。
入門前
入門編のチュートリアル一覧は以下にある。 https://developer.oculus.com/documentation/unity/unity-gs-overview/
推奨されるUnityのバージョンは2019.x 以上。Oclusアプリはアンドロイド向けにビルドするので、アンドロイド向けのモジュールを入れておけばよい。
実機テストの方法
レファレンスによると、
In general, connecting your device through USB is the basic and mandatory way to test your app on the Oculus device. In addition, you can optionally use Android Debug Bridge (ADB) to perform advanced-level testing and debugging activities for Android apps.
とのことであるが筆者の場合は、当面は基本的にUSBで転送することにする。実機に転送するにはアプリをビルドする前に、DeveloperモードにしたOculusをUSBでつないでおく必要がある。
Developerモード
まず、Depeloperモードに入る前に、Developerとして登録しておく必要がある。
からOrganizationを登録しておく。
Developerの登録が済んだら、公式のレファレンスにあるように以下の手順で実機と接続する。
- iPhoneのOculusアプリからSettingを開く
- MoreSetting>DeveloperModeにいき、DevelopperModeをオンにする
- その上でUSBで実機とつないで装着すると、認証を求められるので許可する
- Unity側でBuildターゲットがAndroidになっていることを確認する
筆者の場合、この段階でいきなり問題が発生したので以下にまとめておく。
Oculus を認識しない
問題は、上記の手順で接続を行っても機器を認識しなかったことである。
これに関して原因を考えてみたが、次のことが分かった。まず、レファレンスによると接続するUSBケーブルがUSB Power Deliveryに対応していることが要求されている。もっとも、付属のUSB-C to USB-C ケーブルを使えばここには反しないはずである。
そこで自分のPCのポートについて仕様を見てみると、USB-CのポートのみUSB Power Deliveryに対応していないというようなことが書かれていた。これが原因かと思いサポートに問い合わせるとControl Panel > Hardware and Sound > Power Options
から USB selective suspend settingをオフにするなどの方法を試すよう言われたが、それでも接続はできなかった。
そこで、USB-A to USB-Cのケーブルを使って接続してみたら、今度は正常に接続された。以上のことからやはり自分の使っているPCのポートの問題だったようである。
Oculus Integration の導入
Oculus IntegrationはOculus向けのアプリ開発に必要なSDKやサンプルをまとめたAssetでAsset Storeから入手することができる。 2020年11月時点で、393.7 MBの容量であった。
これを導入する。それなりの容量だが、初回なのですべてインポートした。結構時間がかかった気がするので、今後は中身をちゃんと理解して選別する必要があるかもしれない。
補足であるが、この後で行うBuild Settings のいくつかで設定を行うとOculus Integration で導入した画像ファイル?の変換が行われることを確認した。そのため先にビルドの設定を行ってから、インポートした方が時間が節約できるとも考えられる。これは憶測にすぎないので今後試してまた追記する予定である。
基本的に通常通りAssetをインポートをするだけだが、公式レファレンス(Import Oculus Integration Package | Oculus Developers)にあるように、Asset Importの完了後OVRPlugin
のアップグレードをするか選択させられる。ここでYesにしておかないと最新のプラグインを使うにはマニュアルでアップグレードしないといけない。
続いて、Spatializer plugins のアップグレードに関しても聞かれることがある。これもYesにして置き、再起動する。なお自分の環境では再起動時、Unityが落ちたが、再度開いたところ特に問題はなかった。
Build Setting
Build Settings に関しては、以下の図のように
- ターゲットをAndroidにする
- Texture CompressionをASTCにする
- Run DeviceをOculus Quest2にする
Run Deviceに関してOculus Quest2の選択肢は実機を接続した状態でないと出てこない。もし問題なく機器と接続しているのに選択肢が現れないときはRefreshを押して更新すれば良い。
Player Setting
次に、Player Settingを設定していく。詳しくは、公式レファレンス(Configure Unity Settings | Oculus Developers)を見るのが良い。
Identification
Other Setting > Identificationの設定などは他のプラットフォームに向けた設定と同じように、ユニークなパッケージネームをつけるとか、Versionを指定するとかをすればよい。
変更があるのは基本的にMinimum API Level で、Questの場合はAndroid 6.0 Marshmallowに設定しておく。
XR Setting
Project Setting から XR Plugin Managementの設定を行う(バージョン2018以下の場合はこの方法は使えない)。
XR Plugin Managementをインストールして、Oculusを選択する(するとまたインポートが始まる)。
レンダリングの設定
Auto Graphic APIを消して、自分でAPIの優先順位を指定する。これはLinearカラー空間がOpen GL3.0かVulkanである必要があるが、Vulkanはまだテスト段階のようではOpenGL 3.0を選択することが推奨されている。
Multithreaded Renderingをオン リリース版ではLow Overhead Modeをオン(エラーチェックをスキップする)
Quality Settings
レファレンス通りに設定すると以下の図のようになる。
これに関して知られている問題として、URPでレンダリングするときはMSAAレベルを4xに手動で変えないといけないと書いている。
Android Manifest File
アンドロイド向けのアプリを作るときは、AndroidManifest.xmlというファイルを定義して、使用しているパッケージの詳細を書く必要がある。
Oculus向けの開発ではこのプロセスが自動化されている。Oculus Integrationを導入すると、上にOculusというタブが表示されるようになる。
Oculus > Tools > Create store-compatible AndroidManifest.xml
を選択することでこのファイルが自動で作成される。