はじめに
この記事は、UnityとMeta Quest2 / Pro でMR表現を試す(1)の続きとなります。
Meta QuestでMR表現を実現する技術として、シーンモデル、シーンキャプチャ、シーンAPIという概念があります。
大雑把に言ってしまうと、以下のような関係になるのでしょうか。
シーンモデル
シーンキャプチャで設定された空間にアンカーを設置することで、現実世界のオブジェクトを認識する
シーンキャプチャ
現実世界の壁や家具など部屋の構造を取り込む
現在は手動で行う必要があるルーム設定機能のお話です。
詳しくは割愛しますが、Quest2 / Pro の「設定 > 試験中 > ルーム設定」メニューから壁や家具の設定を行うことができます。
シーンAPI
シーンモデルをUnityで利用するために提供されているインターフェース
シーンモデルの利用設定
シーンアンカーのサポートを許可
Assets > Oculus > OculusProjectConfig
Anchor Support を「Enabled」に設定
現実世界のオブジェクトにシーンアンカーを設置することで、現実世界のオブジェクトを利用できるようになります
OVRSceneManagerの設置と設定
Assets > Oculus > VR > Prefabs > OVRSceneManager
このプレファブが、シーンキャプチャで設定した壁や家具を認識して、シーンアンカーを設置してくれます。
現在、以下の種類分けがされているようです
- Floor
- Ceiling
- WallFace
- Desk
- Couch
- DoorFrame
- WindowFrame
- Other
- Storage
- Bed
- Screen
- Lamp
- Plant
Plane Prefabの設定
「Floor(床)」「Ceiling(天井)」「Walls(壁)」に設定するプレファブの指定
これは、ルーム設定で壁を設定することで決定されます
必ず、シーンアンカー(OVRSceneAnchor)のコンポーネントがアタッチされているものを指定します。
ここでは、SampleFramework パッケージに含まれているInvisiblePlaneを指定します。
シーンアンカーとコライダーのシンプルな構成です。
Assets > Oculus > SampleFramework > Usage > SceneManager > Prefabs > InvisiblePlane
Volume Prefabの設定
「Floor(床)」「Ceiling(天井)」「Walls(壁)」以外 に設定するプレファブの指定
必ず、シーンアンカー(OVRSceneAnchor)のコンポーネントがアタッチされているものを指定します。
ここでは、SampleFramework パッケージに含まれているInvisibleVolumeを指定します。
これもシーンアンカーとコライダーのシンプルな構成です。
特定の種類に別のプレファブを設定
ここでは、「Desk(机)」に別のプレファブを設定する例を示します。
Prefab Overridesの項目で設定が可能です。
- InVisibleVolume を設置
- Cubeプリミティブを設置し、Colliderオブジェクトと同じ位置に修正
既にコライダーが存在するので、CubeのBoxColliderは削除する
- InVisibleVolume の名称を適当に変更(ここでは、Deskに変更)
- DeskをPrefab化
- HierachyのDeskを削除
- Prefab OverridesにDeskを設定
シーンモデルの確認
ここまでで、シーンモデルの設定は完了していますので、コライダーとリジッドボディのついたCGを設置して、ビルドしてみます。
床と机が認識されていることがわかるかと思います。
参考になれば、幸いです。