unity3d 如何剪切掉一个相机在Unity中渲染的部分内容,以显示另一个相机在其后面的渲染?

pokxtpni  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(284)


上面的图像是我试图在Unity中使用默认渲染器复制的。我需要一个网格或平面或任何东西来剪切掉相机渲染的部分,并显示其他相机渲染的内容。
我尝试使用渲染纹理和剔除遮罩,但都不起作用。我确实看过着色器,但我以前从未使用过,这就是为什么我需要帮助。如果有人了解着色器,或知道更好的解决方案,那将是非常感谢。
这个问题可能有点短,但我的较长草稿已被删除,我不想再重复每一个细节。此外,我正在使用默认渲染器,这将是一个虚拟现实应用程序,我想我应该提到的情况下,完全改变我必须做的。现在还不晚,如果需要改变渲染器虽然。

j0pj023g

j0pj023g1#

一个不需要编写着色器的简单解决方案,你可以只使用一个UI遮罩来显示RenderTexture。我假设你有2个图层L和M,一个RenderTexture R,下面是层次结构:

Camera1 (culling mask = L)
Camera2 (culling mask = M, target = R)
Object1 (layer = L)
Object2 (layer = M)
Canvas
  Mask (Mask and Image components)
    Image (Raw Image component, texture = R)

将Camera2的目标设置为RenderTexture,然后创建一个UI画布,在其下面添加Mask和RawImage,为Mask给予一个sprite,将RawImage的纹理设置为RenderTexture,现在您应该看到RenderTexture被遮罩。

相关问题