はじめに
UI上(手前)に3Dのオブジェクトを表示させる方法を調査しましたので、以下にまとめます。
※2022.3.0LTSのURP環境での内容になります。
1.Screen-Space Camera
UIのRenderModeをScreen-Space Cameraに設定すると、
あたかもWorldSpace上にあるUIが、カメラを追従するような動きになります。
UIとカメラとの距離をPlaneDistanceで調整することで、
間にあるオブジェクトをカメラに映すことができます。
2.RenderTexture
RenderTextureという機能を使う方法です。
・専用のカメラを用意し、UI上に表示させたいオブジェクトを映すように配置します。
・新規にCreateしたRenderTextureを、CameraコンポーネントのOutput-OutputTextureにアタッチします。
・RenderTextureにカメラが写す映像が渡されるので、UI上のRawImageで表示できます。
撮影の際には、Layer及びCullingMaskを利用することで、
必要なオブジェクトのみを映すことができます。
3.CameraStacking
URPのCameraStackingを使う方法です。
初めて知ったのですが、URPのカメラにはRenderTypeなる区分けがあり、
BaseとOverlayの2種類が存在します。
CameraStackingとは複数のカメラをレイヤーのように処理する機能で、
BaseのカメラにOverlayカメラを重ね合わせ、最終的な画面を出力するような構成になっています。
手順としては、BaseカメラのCameraコンポーネントーStackに、
Overlayカメラを配置することで、レイヤー処理されます。
Stackには複数のOverlayカメラを設定でき、レイヤー順もこちらの項目から変更可能です。
「2.RenderTexture」の方法と同様に、Overlayカメラで特定のオブジェクトを映しておくことで、UIのように表示できます。
CameraStackingについて、公式で3分でまとめられています。
おわりに
他にも方法があるかもしれません。
用途によって望ましい方法、他の仕様と突合しない方法があると思います。