如何解决使用精灵掩盖Unity中的3D对象
我有一个要用作透明蒙版的png图像,在该场景中它将在场景中完全透明,但不会显示其后面的3D对象(类似于sprite蒙版,但需要使用3D对象)。
因此,我在3D场景中将图像添加为sprite(点-无滤镜),并且已经将着色器应用于sprite材质,但无法正常工作。看起来边界中的像素没有被“正确切割”。
我之所以使用这种方法,是因为内置的统一“ 2D Sprite蒙版”仅影响使用Sprite Renderer的对象(如此处https://docs.unity3d.com/Manual/class-SpriteMask.html所述),但我希望它影响3D对象。
这就是着色器:
Shader "Masked/Mask" {
SubShader {
Tags {"Queue" = "Geometry+10" }
ColorMask 0
ZWrite On
Pass {}
}
}
这是用作遮罩的精灵(png图像): sprite mask
这些是我想要的结果与我得到的结果: results compared
我对着色器不好,所以我想知道是否可以更改代码以改善结果。我已经为精灵图片尝试了不同的格式(png,tif,压缩),但是结果是相同的。
解决方法
我已经使用“透明” 3D遮挡器进行了类似的操作并渲染了优先级,我想这与子画面类似...
- 渲染不可遮挡的几何图形(包括Sprite){“ Queue” =“ Geometry”}
- 渲染可封闭的几何体{“ Queue” =“ Geometry + 1”}
严格来说,如果遮挡物(子画面)始终是透明的,则只需渲染到深度(Z)缓冲区即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。