プログマのプログラマ日記

技術メモや自社サービスに関する記事を書いていく予定です。

Unity + Oculus Integrationで物をつかむ(その1:ルームスケールで動き回れるSceneを作成)

Unity + Oculus Integrationを使ってコントローラやハンドトラッキングでオブジェクトをつかむまでの手順をStep by stepで説明します。
やっていることはOculus Integrationのサンプルシーン「HandGrabExamples」と同様ですが、これを0から組み立ててみてSceneを構成するコンポーネントの役割への理解を深めようという趣旨の記事です。

以下のステップで実装を進めていきます。

  • ルームスケールで動き回れるSceneを作成する手順(本記事)
  • コントローラを表示できるようにする手順
  • 手を表示できるようにする手順
  • オブジェクトをつかめるようにする手順
  • オブジェクトをつかむときのポーズ(つかむ場所・手の形)を設定する手順

2022/11/7: githubにプロジェクトを共有しました。
github.com

環境構築・プロジェクト作成

環境構築とプロジェクト作成の手順については、こちらの記事を参照してください。

rhikos-prgm.hatenablog.com

利用するコンポーネント

部屋の中を動き回るだけであればOVRCameraRigというprefabをSceneに配置するだけで実現できます。

OVRCameraRig

ヘッドセットとUnityのカメラの動きを同期させるために使います。

詳しい解説はこちら:
https://developer.oculus.com/documentation/unity/unity-add-camera-rig/

Sceneの実装手順

Sceneの作成

空のSceneを作成します。(Assets/Sandbox/HandGrab/Scenes/Scene0)
MainCameraを削除して、「Oculus/VR/Prefabs/OVRCameraRig」のPrefabをシーン上に配置します。
OVRCameraRigのコンポーネント「OVRManager」のTracking Origin Typeを「Floor Level」に設定します。
(立って体験するタイプのアプリを作成する場合はこれにする。詳細はこちらの「トラッキング」の部分を参照)

Roomの作成

何でもよいので動き回れるための部屋を作ります。
本記事では、floor(Plane)とtable(Cube)のみを作成しました。

Scene0のオブジェクト階層

動作確認

実行すると床とテーブルがあるVR空間内を動き回れるようになります。

参考サイト

公式:Oculusスタートガイド(Unity)
Get Started with Oculus in Unity | Oculus Developers

公式:APIリファレンス
Reference