たつぷりの調査報告書

博士後期課程(理学)の学生が趣味でUnityやBlenderで遊ぶブログです。素人が独学で勉強した際の忘備録です。

UnityでOculus Quest2開発入門(設定編)

こんにちは。たつぷり(@Tatsupuri2)です。シリーズ「UnityでOculus Quest2開発入門」の第1回目です。最近Oculus Quest2を買ったので、Unityを使って何か作ろうと思います。とりあえず何回かに分けて、チュートリアルをこなしていく記事を書いていく予定です。

今回は入門前の、開発環境の設定などに関してです。

f:id:Tatsupuri:20201202123015j:plain

入門前

入門編のチュートリアル一覧は以下にある。 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として登録しておく必要がある。

developer.oculus.com

からOrganizationを登録しておく。

f:id:Tatsupuri:20201202115714p:plain

Developerの登録が済んだら、公式のレファレンスにあるように以下の手順で実機と接続する。

  1. iPhoneのOculusアプリからSettingを開く
  2. MoreSetting>DeveloperModeにいき、DevelopperModeをオンにする
  3. その上でUSBで実機とつないで装着すると、認証を求められるので許可する
  4. 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の容量であった。

f:id:Tatsupuri:20201202115710p:plain

これを導入する。それなりの容量だが、初回なのですべてインポートした。結構時間がかかった気がするので、今後は中身をちゃんと理解して選別する必要があるかもしれない。

補足であるが、この後で行う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にする

f:id:Tatsupuri:20201202115718p:plain:w400

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以下の場合はこの方法は使えない)。

f:id:Tatsupuri:20201202115722p:plain:w400

XR Plugin Managementをインストールして、Oculusを選択する(するとまたインポートが始まる)。

f:id:Tatsupuri:20201202115727p:plain:w400

レンダリングの設定

Auto Graphic APIを消して、自分でAPIの優先順位を指定する。これはLinearカラー空間がOpen GL3.0かVulkanである必要があるが、Vulkanはまだテスト段階のようではOpenGL 3.0を選択することが推奨されている。

Multithreaded Renderingをオン リリース版ではLow Overhead Modeをオン(エラーチェックをスキップする)

Quality Settings

レファレンス通りに設定すると以下の図のようになる。

f:id:Tatsupuri:20201202115733p:plain:w400

これに関して知られている問題として、URPでレンダリングするときはMSAAレベルを4xに手動で変えないといけないと書いている。

Android Manifest File

アンドロイド向けのアプリを作るときは、AndroidManifest.xmlというファイルを定義して、使用しているパッケージの詳細を書く必要がある。 Oculus向けの開発ではこのプロセスが自動化されている。Oculus Integrationを導入すると、上にOculusというタブが表示されるようになる。 Oculus > Tools >  Create store-compatible AndroidManifest.xml を選択することでこのファイルが自動で作成される。

f:id:Tatsupuri:20201202115739p:plain:w400