先日の記事 Meta Quest の Mixed Reality 機能 では Meta Quest でルーム設定を実施した壁や床に対して、バーチャルなオブジェクトを張り付けて重ね合わせる方法を紹介しました。
今回はこれに少し手を加えて「バーチャル空間上のオブジェクトが壁や床の向こうに隠れる」という表現をやってみます。 この設定を行わないと「壁の向こう側にあるはずのオブジェクトがなぜか見えてしまう」というかなり不自然な状況となり、一気に現実味がなくなってしまいます。 逆にこの設定を行っておけば「床の下からアバターがヌッと現れる」といったような、なかなか面白い表現ができます。
作り方
この表現は、OVRSceneManager に設定するプレハブのメッシュを「他のオブジェクトを隠すことができるもの」に変更することで実現できます。
具体的には以下の手順になります。
- OVRSceneManager を設定して、パススルー表示ができるようにする。詳細は前回の記事 をご参照ください。
- OVRSceneManager に設定した Plane プレハブ (
Assets/Oculus/SampleFramework/Usage/SceneManager/Materials/Plane
) をコピーして新しいプレハブを作成する (名前はなんでもいいですが、ひとまずOccluderPlane
を設定したものとします)。 OccluderPlane
の Mesh の Mesh Renderer に設定されているマテリアルを「他のオブジェクトを隠すことができるもの」に変更する。具体的には Render Queue を 2000 未満 に設定したマテリアルを使います。Assets/Oculus/SampleFramework/Usage/SceneManager/Materials/InvisibleOccluder
はあらかじめその設定 (1998) になっているので、とりあえずこれをそのまま使うのが簡単です。
実際の動作
OVRSceneManager に設定するプレハブについてのまとめ
OVRSceneManager に設定するプレハブについて、前回の記事で紹介した範囲も含めてまとめておきます。
- Plane
- 用途:
- そのまま使う場合: 壁や床の設定場所・向きの確認 (デバッグ) のために
- 加工して使う場合: x, y, z 軸を外して、メッシュのテキスチャを変更して壁や床を任意の見た目に変更するためのひな形として
- 特徴:
- メッシュが着色されていて、x, y, z 軸を表す棒が追加されている
- 場所:
- Assets/Oculus/SampleFramework/Usage/SceneManager/Prefabs/Plane
- 用途:
- InvisiblePlane
- 用途:
- 仮想のボールオブジェクトを跳ね返す床や壁を作ることができる
- 特徴:
- Box Collider が追加されているため、任意のオブジェクトとの衝突を検出できる
- メッシュ設定がないため目視はできない (現実世界がそのまま投影される)
- 場所:
- Assets/Oculus/SampleFramework/Usage/SceneManager/Prefabs/InvisiblePlane
- 用途:
- OccluderPlane
- 用途:
- 任意のオブジェクト (の一部) を隠すことができる
- 特徴:
- 見た目は透明 (現実世界がそのまま投影される)
- Render Queue 設定が 2000 未満になっている
- 場所:
- Plane を加工して自作
- 用途: