Top View


Author Daiki Urata

Unityで初めてのVR(Meta Quest 2)アプリ開発やってみた

2023/02/25

はじめに

チームで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のテンプレートを選びました。

new-project.png

Project Settingsで下の画像の設定画面でOculusにチェックを入れる必要がありました。

project-settings.png

Build SettingsではPlatformをAndroidに切り替えます。

その後、Oculus Quest 2をUSB接続した状態でRun Deviceのところで端末を選択します。

接続がうまくいったら、Build And Runを押すとビルドが始まり端末でアプリが無事動いたら成功です。

build-settings.png

初めてのVRアプリを構築する

次に初めてのVRアプリを構築するという公式のチュートリアルをやってみました。

これもいくつかつまずきポイントがあったので、以下に示します。

つまずきポイント

Unityの仕様が新しくなっていたようで、ドキュメントの更新が追いついていないようでした。

3番目はMacだけ?なのか、プレイボタンで動作確認できず、毎回Build And Runで実機確認が必要でした。

完成したアプリは壁のあるエリア内でボールを転がせるゲームです。

vr-tutorial.gif

Oculus Integration SDKを使ってVRの機能を使う

チュートリアルで作成したアプリはキーボードやコントローラーのスティックでボールを操作できるもので、とくにVR特有の機能は使用していませんでした。

Oculus Integration SDKを使用すると、VRコントローラーの表示やハンドトラッキングなどの機能を実装ができます。

まずはSDKをプロジェクトへインポートして、その中にあるサンプルアプリを動かしてみたいと思います。

SDKのインポート

UnityアセットストアからSDKをインポートするの手順でインポートできました。

アセットストア経由で下の画像のようにPackage Manager上でimportボタンを押すことでインポートできます。

package-manager.png

サンプルを動かしてみる

ProjectビューのAssets > Oculus > SampleFramework > Usageを開くとさまざまなサンプルシーンがあります。

それらを動かしてどのような機能が実現できるか確認ができます。

oculus-sample.png

とくにDistanceGrabのサンプルシーンは面白かったです。

遠くの物を引き寄せて掴むことができ、超能力者になった気分でしたw

oculus-sample.gif

コントローラーでボールを触れるようにしてみる

次に「初めての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が設定されているはずので、このまま動かすとコントローラーでボールに触れるはずです。

ovrcamerarig.png

Oculus Integration SDKのOVRControllerPrefabを使用したことで実際のMeta Quest 2のコントローラーと同じものがVR上でも表示されました。

ovrcontrollerprefab.png

ビルドして動かしてみると転がってきたボールを止めることができました。

危うく現実世界のディスプレイを殴るところだったので、みなさんも操作するときは気をつけましょう。

vr-touch-ball.gif

さいごに

少しだけですが、VRアプリの開発を体験することができました。

まだエラーにつまずいたり、Unityの操作が不慣れだったり、普段書かないC#を扱ったりなど、本格的なアプリを作れるようになるまでは道のりが遠いですね。

VR開発についての情報も少なかったり、ドキュメントもまだ充実してるとは言えない状況で、まだまだ発展途上なのかなと感じました。

ただ、作成したアプリを実機で動かすのは楽しいので、またやってみたいなと思いました。

Daiki Urata

Daiki Urata

Twitter X

フロントエンド/モバイルアプリなどを主に開発しています。