Unity で VR:開発環境構築

先日、PCを新調いたしましたので、この機会にあらためて Unity を触ってみようと思いました。

前回に触ったときは、ほぼインストールしただけでなにもせずでした。原因として、PCが非力だったこともありますが、その時使っていたケンジントンSlimBlade Trackballではホイールプッシュ操作ができなかったのが大きかったと思います。ケンジントントラックボールは最高なのですが、3Dツール使うときはホイールプッシュできることが重要ですね。

いまはホイールマウス付きのトラックボール、ロジクールM575Sを使っているので問題なしです。

ちなみに、Unityをインストールして、Oculus Go 実機で地平線を見るところまではやりました!


ということで、再チャレンジ。

こちらのページに従って開発環境を作りました。まとまっててすばらしいです。

FRAME SYNTHESIS : Unity + Oculus Quest 2 開発メモ
https://framesynthesis.jp/tech/unity/oculusquest/

以前にインストールしたときは、Android StudioやらAndroidNDKやら自分で入れないといけなかったのですが、そのあたりも含めて全部 Unity Hub がやってくれました。Unity Hub を起動して「インストール」タブから「インストール」します。

Oculus Quest は Android OS ベースなので、インストール時には Android Build Support をチェックしてください。Microsoft Visual Studio Community は特には必要ないと思います。(僕は、別途 Visual Studio Code をインストールして、ステップ実行デバッグなどできるようにしました。)

Android NDKも、各Oculus SDKバージョンのフォルダ以下にインストールされるようになってて、既存のAndroid開発環境を壊さないようになってるみたいです。その分、ストレージは必要になりますけれど。

バージョンは 推奨 2020.3.22f1 なのですが、先ほどのページの助言「2021年8月現在は2021.1で問題ないでしょう」に従って 2021.1.27f1 を選びました。複数バージョンがインストールできるってことは「ソースのバージョン依存が結構ある」ということが想像できますね…。(スクリーンショット取ったときは、バージョンが進んで 2021.1.28.f1になってました。この「27」ってリリース日付じゃなかったのか!)

インストールにはしばらく(十数分)時間かかりますので、ゆっくり待ちましょう。


Unity で Oculus Quest 用アプリを開発するプロジェクトを開始するには以下の手順です。

プロジェクトを新規作成、テンプレートで「3D」を選択。(VRっていうのもあるけど、3Dでだいじょうぶでした)

プロジェクト名と保存先を適当に決めて「作成」すると、ファイル生成後に Unity が開きます。

まっさら Unity。


File – Build Settings で プラットフォームをAndroidにして「Switch Platform」。後でもできますが、最初にやったほうが時間かからないです。

ここで一度 Build して、エラー無くAPKファイル作られることを確認しておくと安心。

JDK / Android SDK / Android NDK の位置は、Edit – Preferences の External Tools から確認できます。

デフォルトだと Program Files \ Unity \ Hub \ Editor \ [各バージョン]  \ Editor \ Data \ PlaybackEngines \ AndroidPlayer \ の下ですね。結構深い。バージョンごとに別管理になりますので「このバージョンを使うには、どのAndroid NDKバージョンをインストールすれば?」みたいな混乱は、ここで吸収されてるのですね。


Windows – Asset Store を開く。すると「Asset Store はWebブラウザになりましたよ~」みたいな画面が出るので「Search Online」押すと Webブラウザが開きます。

「Oculus Integration」で検索してインストール

ダウンロード後、Unity から Windows – Package Manager を開き、My Asset を選択すると Oculus Integration が出てくるので、選択して「Import」を押すと、プロジェクトに Oculus Integration 関連のファイルが追加されます。

サウンドとかアバターは使わないのでインポートから外してもいいらしいのだけど、最初はよくわからないのでそのままインポートしましたw

インポートも結構時間かかります。(これも十数分ぐらい?以前はもっとかかったみたいです。)

その後、いくつか質問がきますが、オススメ選択で問題ないかと思います。

質問が終わったら、ここでいったん Unity 再起動されます。

Assets の中に色々増えました。


XR Plug-in Management を有効化します。Edit – Project Settings から XR Plugin Management を選択して「Install XR Plugin Management」

インストール終わったら、「Oculus」を選択。選択するとすぐファイルコピーが実行されます。

ついでにPC側のタブの Oculus も ON にしておきましょう。


これで準備完了。実機での動作確認します。

Assets > Oculus > VR > Scenes の ControllerModels をダブルクリックで開きます。

実機を接続して、Build And Run!

適当な APK名(testとかなんでもよいです)を入力すると、実機での動作が開始されます。

エラーがあると、一番下に赤文字表示されます。タブを Console に切り替えると詳細と履歴が確認できます。エラー出てますね…。

先ほど質問ダイアログでおすすめのまま選択した「OpenXR」では動作できないみたいなので、古いほうのバージョンに切り替えます。

Oculus – Tools – OpenXR から、Switch to Legacy OVRPlugin を選択。あらためて、Build And Run!

無事、サンプルが実機で起動しましたー!スティックによる移動と回転が実装されてるサンプルですね。


ちなみに、Android に必要な Bundle Identifier は、Oculus – Platform – Edit Settings のところにありました。

デフォルトは「com.DefaultCompany.[プロジェクト名]」ですね。ローカルで遊ぶだけならこのままでもいいですし、気になるなら適当な値に変更しておくとよいでしょう。