Unity技術検証

UI上に3Dオブジェクトを表示させる方法まとめ【Unity】

はじめに

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なる区分けがあり、
BaseOverlayの2種類が存在します。

CameraStackingとは複数のカメラをレイヤーのように処理する機能で、
BaseのカメラにOverlayカメラを重ね合わせ、最終的な画面を出力するような構成になっています。

手順としては、BaseカメラのCameraコンポーネントーStackに、
Overlayカメラを配置することで、レイヤー処理されます。

Stackには複数のOverlayカメラを設定でき、レイヤー順もこちらの項目から変更可能です。

「2.RenderTexture」の方法と同様に、Overlayカメラで特定のオブジェクトを映しておくことで、UIのように表示できます。

CameraStackingについて、公式で3分でまとめられています。

おわりに

他にも方法があるかもしれません。
用途によって望ましい方法、他の仕様と突合しない方法があると思います。

タイトルとURLをコピーしました