【发布时间】:2022-04-30 01:00:53
【问题描述】:
我的目标是在柏油路上画白线。由于道路的特性发生了变化,不可能只有一个纹理同时代表沥青和白线。 当前的方法是应用沥青纹理并在其他两个纹理坐标中编码一些信息。在像素着色器中,读取这些坐标,我决定该片段是否应该是白色的。
这会导致高水平的混叠。这就是我想尝试解决的问题。
我一直在应用平滑步长或线性插值来更改线条的“白度”。我还根据与相机的距离更改了宽度和颜色。这有点帮助,但在很远的距离,仍然有难看的锯齿线。
您将如何继续这样做?有一个表示平滑白线并访问纹素的纹理会更好吗?我应该实现一个访问相邻纹素的双线性过滤器吗?
【问题讨论】:
-
您能否详细说明“道路的特性发生了变化,因此我不能使用表示沥青和白线的纹理”位?为什么你不能从预渲染的集合中选择正确的纹理并将它们缝合在一起?也许我们可以建议一种方法来克服您在该领域遇到的问题,将“绘制白线”问题默认为普通纹理。
-
至于实际问题,您可以尝试使用 Humus (humus.name/index.php?page=3D&ID=84) 绘制的贴花技术,但仅将其应用于白线(因为您已经覆盖了沥青位)。
-
谢谢@Paul-Jan 我会彻底检查那个链接,看起来很有希望。至于另一个问题:用户可以在运行时编辑道路(宽度、车道数、交叉点、彩绘标志……)。必须有一种方法可以只创建一堆纹理并将它们正确附加到几何图形上,但我认为更改编码(通过额外的纹理坐标)会更容易和更灵活。我可能在那里采取了错误的方法,但到目前为止,除了混叠之外,我已经取得了很好的结果。
标签: opengl graphics 3d glsl antialiasing