【问题标题】:How to filter light through non transparent pixel in texture?如何通过纹理中的非透明像素过滤光线?
【发布时间】:2018-08-02 18:41:31
【问题描述】:

带有纹理的透明平面 (TP) 位于灯光和平面 (P) 之间。

TP 的纹理包含不同颜色的矩形,代表P 上图像的边界多边形。例如,P 上有一张汽车的图像,TP 上有汽车的轮廓(以给定的颜色)。这些飞机的目标是能够点击P,检查TP 上的相应像素颜色,然后说“你点击了汽车”或其他任何内容。

现在我想突出显示图像上的汽车。目前,我计算TP 中每种颜色(每个对象的质心)的质心,并将聚光灯指向这个方向。我们可以注意到,如果一个像素是透明的,我们认为没有有趣的对象。

您可以想象,对于复杂的形状,它根本不准确。所以我想也许我们可以根据它通过的像素的 alpha 通道过滤来自聚光灯的光。因此,如果像素不透明,则光线会穿过它,如果纹理上的像素是透明的,则光线会在其上反弹或其他。

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    如果不能使用图层进行光线投射,而您确实想使用灯光来实现,请考虑以下事项:

    将所有相关对象放入“透明”队列。这些对象将被从后到前绘制。这可能有助于处理不透明的像素。

    “Zwrite Off”可能有帮助,但我不确定这是否是你想要的。

    【讨论】:

    • 感谢您的回答。我不是我理解你的建议,让我改写我的问题。我有一个包含凸形的不可见 2d 纹理,纹理的其余部分包含透明像素。我希望能够阻挡穿过透明像素的光线。问题是我的纹理在场景中不可见。
    • 然后将其放入几何队列(在着色器设置中选择材质并设置队列)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多