【Unity】ScreenSpace OverlayなCanvas上に3Dモデルを表示する
はじめに
通常、ScreenSpaceをOverlayに指定した場合は最前面にCanvas上のUIの描画が来るため、3Dモデルをさらにその上に表示することはできません。 今回は、Canvasの設定はOverlayにしておきたいが、3DモデルをUIの上に表示したい!という場合の対応方法の一つをやってみたのでまとめます。
完成形
以下のようにOverlayなCanvasのUI上に3D表示を行い、それを切り替えることができるようになります。
やり方
やり方は単純で、3Dモデルの描画をRenderTextureに行いCanvas上ではRawImageでそのRenderTextureの表示を行えば完了です。
順を追って具体的に説明します。
RenderTextureの作成
Projectウィンドウで Create > RenderTextureで作成できます。 細かい設定が気になる方はこちらを見てください。
3Dモデル描画用のカメラを作成
Hierarchy上でメニューから選択してCameraを新しく作ります。その際に、ClearFlagsをSolidColorにしてアルファ値を0にしておいてください。 また、先ほど作成したRenderTexutreをTargetTextureに設定してください。
RawImageの配置
OverlayなCanvas上にRawImageを配置して、Textureに先程作成したRenderTextureを設定します。
カメラの微調整
これで新しく作成したカメラに描画されているものがUIとして表示されるようになります。 写したい3Dモデルが映るような位置に微調整をしましょう。
まとめ
同様な方法で、パーティクルに関してもOverlayなCanvasの上に表示を行うことができます。 ただし、RenderTextureへの描画を行うためにCameraを一つ作成する必要があるため、パフォーマンスのことを考えるとUI上に3Dモデルをばんばん出したいという場合には向いていないかもしれません。
OverlayのままUI上に3Dモデルを表示できるいい方法が他にあれば是非教えてください。