はじめに
ユニバーサルレンダーパイプライン(URP)の環境を利用している場合は、カメラスタッキングを利用してしまうのが楽ですが、ビルトインレンダーパイプラインを利用している場合の手法として、OVROverlayコンポーネントを利用する方法を試してみました。
環境
Unity 2022.3.40f1
Meta XR Core SDK 67.0.0
Meta Quest3
シーン構築
プロジェクト作成などの環境構築は割愛します。
ベースシーンの作成
PlaneとOVRPlayerController、Cubeを追加
Plane : OVRPlayerControllerを原点に配置するため、Positionを(0, -1, 0)
OVRPlayerController : Positionを(0, 0, 0)
Cube : Positionを(0, 0, 3)
UIとCameraを追加
Canvas, Image : 画像の通り
UI Camera : Positioinを(0, 0, 0)
※CanvasやUI Cameraは、UI Cameraから対象のUIが映っていれば、Positionはどこでも大丈夫です。
UIを手前に表示
レンダーテクスチャを作成
UI Cameraの設定を変更
Background : (0, 0, 0, 0)
Canvasのレイヤーが「UI」になっているため、UI Cameraは、UIレイヤーのみを映すようにする
OVRPlayerControllerのCenterEyeAncyhorの設定を変更
Canvasのレイヤーが「UI」になっているため、UIレイヤーを映さないようにする
OVROverlayコンポーネントを追加
- CenterEyeAnchorの下に空のGameObjectを作成し、OVROverlayと名前を変更
- OVROverlayコンポーネントを追加
- レンダーテクスチャをLeft Eye Textureに設定
- CenterEyeAnchorのカメラ表示と重なるため、Positionを(0, 0, 1)に設定
Left Eye Texture に設定すると、自動的にRight Eye Textureに設定されます。
Positionは、(0, 0, 1)でなくても、重ならなければ大丈夫です。