Render Textureを設定したときに、「余計なものが映り込んでる!どうなってるの!(ヒス)」と慌てたことがあります。
結論、ただカメラ描画範囲にRender Textureを設定したオブジェクトが映り込んでいるだけです(初めて遭遇して先輩に指摘された時はほんとお恥ずかしい思いでした。。)
回避策は2点、カメラに映り込まないようにするか、Culling Maskを設定するか。
おそらく後者の方がメジャーだと思うので、備忘録として書いていきます。
なお、本記事の環境は以下です。
・MacOS Sequoia 15.1.1
・Unity 6000.0.23f1 URP
※前提として、カメラにRenderTextureが追加されていること、RenderTexture付きマテリアルがオブジェクトにアタッチされていることとします。要するに以下の状況。
PlaneにRenderTexture付きマテリアルをアタッチしていますが、カプセルの奥にまたPlaneが描画(無限ミラーリング)されていますね。まるでGoogle Meetで画面共有した時みたいに。
それでは細かく見ていきます。
手順
-
描画しないオブジェクト用のLayer追加
RenderTextureを設定しているカメラにて、Layer > Add Layer…を選択する。
Layersリスト内の空いている箇所に、描画しないためのLayerを追加。今回はNoRenderと設定する。
-
描画しないオブジェクトでLayer変更
今回はPlaneをカメラで描画したくないので、PlaneのLayerに1.で作成した”NoRender”を設定する。
-
CullingMaskで描画する対象を変更
カメラコンポーネントのRendering > CullingMask > NoRender(1.で追加したLayer)のチェックを外します。