gpt4 book ai didi

unity3d - 在 Unity 中使用 Sprite mask 3D 对象

转载 作者:行者123 更新时间:2023-12-05 07:03:03 27 4
gpt4 key购买 nike

我有一个 png 图像,我想用作透明蒙版,它在场景中将完全透明,但不会显示其后面的 3D 对象(类似于 sprite 蒙版,但需要使用 3D 对象).

所以我在我的 3D 场景中将图像添加为 sprite(点 - 无过滤器)并且我已经将着色器应用于 sprite Material ,但它无法正常工作。看起来像素在边框中没有被“正确切割”。

我使用这种方法是因为 unity 内置的“2D sprite mask”仅影响使用 Sprite Renderer 的对象(如此处解释 https://docs.unity3d.com/Manual/class-SpriteMask.html ),但我希望它影响 3D 对象。

所以这是着色器:

    Shader "Masked/Mask" {

SubShader {
Tags {"Queue" = "Geometry+10" }
ColorMask 0
ZWrite On
Pass {}
}
}

这是用作 mask 的 Sprite (png 图像): sprite mask

这些是我想要的结果与我得到的结果: results compared

我不擅长着色器,所以我想知道是否可以更改代码以改善结果。我已经为 sprite 图像尝试了不同的格式(png、tif、压缩),但结果是一样的。

最佳答案

我已经使用“透明”3D 遮挡器和渲染优先级做了类似的事情,我想它会与 sprites 类似...

  1. 渲染不可遮挡的几何体(包括 Sprite){"Queue"= "Geometry"}
  2. 渲染可遮挡几何体 {"Queue"= "Geometry+1"}

严格来说,如果遮挡物( Sprite )始终透明,则它只需要渲染到深度 (Z) 缓冲区。

关于unity3d - 在 Unity 中使用 Sprite mask 3D 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63367443/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com