Table of Contents
はじめに
チームでMeta Quest 2を購入し、せっかくなのでUnityを使ってVRアプリを作成してみました!
開発したといっても、テンプレートやチュートリアルを動かすだけでも、つまずくことが多くて大変で、実際はチュートリアルのものを少し拡張する程度で終わりました…
開発環境設定 (Mac)
環境設定は基本的に公式のスタートガイド にしたがっていくだけでよかったです。
ただ、いくつかのつまずきポイントがあったので残しておきます。
つまずきポイント
- 開発者モードをONにするため、組織登録が必要だった
- LTS(2021.3.19f1)で動かず最新バージョン(2022.2.8f1)のUnityで動いた
- プロジェクト設定やビルド設定でOculus用の設定が必要だった
とくに2番目のバージョン違いで動かなかったのは辛かったです。出力されたエラーを調べてもわからずで、結局LTSではない最新のバージョンを使うことで解決できました。これだけでかなり時間が溶けました…
3番目については次で少しご説明します。
Meta Quest 2でビルドしたアプリを動かしてみる
簡単にUnityのプロジェクトを作成してMeta Quest 2でビルドしたアプリを動かす手順をご紹介します。
まずはテンプレートを選んでプロジェクトを作成します。
VRのテンプレートを選びました。
Project Settingsで下の画像の設定画面でOculusにチェックを入れる必要がありました。
Build SettingsではPlatformをAndroidに切り替えます。
その後、Oculus Quest 2をUSB接続した状態でRun Deviceのところで端末を選択します。
接続がうまくいったら、Build And Runを押すとビルドが始まり端末でアプリが無事動いたら成功です。
初めてのVRアプリを構築する
次に初めてのVRアプリを構築するという公式のチュートリアルをやってみました。
これもいくつかつまずきポイントがあったので、以下に示します。
つまずきポイント
- 日本語のドキュメントのスクリプトが間違っているので英語版(https://developer.oculus.com/documentation/unity/unity-tutorial/?locale=us)を参照する必要があった
- Game ObjectのUI > Textがなく、UI > Legacy > Textのものを使った
- Unityのプレイボタンでの動作確認ができず、実機でしか動かせなかった
Unityの仕様が新しくなっていたようで、ドキュメントの更新が追いついていないようでした。
3番目はMacだけ?なのか、プレイボタンで動作確認できず、毎回Build And Runで実機確認が必要でした。
完成したアプリは壁のあるエリア内でボールを転がせるゲームです。
Oculus Integration SDKを使ってVRの機能を使う
チュートリアルで作成したアプリはキーボードやコントローラーのスティックでボールを操作できるもので、とくにVR特有の機能は使用していませんでした。
Oculus Integration SDKを使用すると、VRコントローラーの表示やハンドトラッキングなどの機能を実装ができます。
まずはSDKをプロジェクトへインポートして、その中にあるサンプルアプリを動かしてみたいと思います。
SDKのインポート
UnityアセットストアからSDKをインポートするの手順でインポートできました。
アセットストア経由で下の画像のようにPackage Manager上でimportボタンを押すことでインポートできます。
サンプルを動かしてみる
ProjectビューのAssets > Oculus > SampleFramework > Usageを開くとさまざまなサンプルシーンがあります。
それらを動かしてどのような機能が実現できるか確認ができます。
とくにDistanceGrabのサンプルシーンは面白かったです。
遠くの物を引き寄せて掴むことができ、超能力者になった気分でしたw
コントローラーでボールを触れるようにしてみる
次に「初めてのVRアプリを構築する」で作成したアプリを拡張してみます。
Oculus Integration SDKを使ってコントローラーでボールを触れるようにしてみたいと思います。
やることは以下です。
- VRテンプレートデフォルトのXRigCameraを削除する
- ProjectビューのAssetsからOVRCameraRigをシーンに追加する
- ProjectビューのAssetsからOVRControllerPrefabを探して、OVRCameraRig > TrackingSpace > LeftHandAnchor/RightHandAnchorそれぞれの下に配置する
- OVRControllerPrefabを選択、InspectorビューのControllerリストから右左それぞれR Touch/L Touchを選択する
- OVRControllerPrefabを選択InspectorビューのAdd ComponentからPhysics > Sphere Colliderを選択する
ボールにはチュートリアルですでにColliderが設定されているはずので、このまま動かすとコントローラーでボールに触れるはずです。
Oculus Integration SDKのOVRControllerPrefabを使用したことで実際のMeta Quest 2のコントローラーと同じものがVR上でも表示されました。
ビルドして動かしてみると転がってきたボールを止めることができました。
危うく現実世界のディスプレイを殴るところだったので、みなさんも操作するときは気をつけましょう。
さいごに
少しだけですが、VRアプリの開発を体験することができました。
まだエラーにつまずいたり、Unityの操作が不慣れだったり、普段書かないC#を扱ったりなど、本格的なアプリを作れるようになるまでは道のりが遠いですね。
VR開発についての情報も少なかったり、ドキュメントもまだ充実してるとは言えない状況で、まだまだ発展途上なのかなと感じました。
ただ、作成したアプリを実機で動かすのは楽しいので、またやってみたいなと思いました。