【问题标题】:How can I merge the colour of 3D foliage with the texture beneath it?如何将 3D 树叶的颜色与其下方的纹理合并?
【发布时间】:2015-12-26 12:32:51
【问题描述】:

我有一个 2D 纹理,比如这个,我现在只是直接放到地形上。

然后我在该纹理之上渲染树叶。

我想(使用片段着色器)获取草下方纹理的颜色,并将草设置为其下方纹理的颜色。

为此,我需要获取地形上每个草顶点相对于纹理的位置。

然后我需要获取与对象位置相对应的纹理颜色,并将其与当前的草颜色混合(假设我有红色草用于演示目的)。

我目前不知道如何开始。我知道我需要通过着色器获取草在世界中的 X 和 Z 位置(我目前没有),但是我需要计算出相应的纹理像素,我目前不知道该怎么做。

任何有助于解决此问题的建议将不胜感激。

【问题讨论】:

    标签: java opengl glsl lwjgl multitexturing


    【解决方案1】:

    主要思想是将位置坐标作为纹理坐标传递。

    希望我算对了

    您有一个放置高度图的矩形,让位置坐标相对于该矩形。在这种情况下,如果你的高度图是 NxM,纹理坐标是 1x1,你可以把位置归一化到 0..1,然后你就得到了一个纹理坐标。

    现在有了这个纹理坐标,你可以让颜色作为一个统一的纹理通过纹理。

    我希望它清楚并满足您的问题,但我也愿意看到澄清。

    【讨论】:

    • 这里有很多我不明白的地方。例如,我如何获得草的 X/Z 坐标,然后我不知道我是如何仅使用“纹理坐标”从某个位置获得像素的。
    • @Joehot200 "我怎样才能得到草的 X/Z 坐标" - 嗯,你一定已经有了这些,因为你在那里画了草!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多