0

当使用通常的算法在标准多边形网格上实现纹理映射时,您可能会遇到与沿 y 轴的变形相关的问题,因为变形沿着四边形的恒定高度行的带而不是该方向上的顶点能够与沿 x 轴的拉伸相比独立拉伸。

我遇到了这个问题,因为在定义网格的顶点时,每一行都定义了一个底部和一个顶部顶点,导致一行的顶行顶点共享其上方行的底行顶点。

如果您只沿 x 或 z 轴变形网格,这是可以的,但如果您沿 y 轴变形网格而不考虑这一点,您会看到四边形的行一起作为一个带恒定高度而不是独立点的行。您将看到网格沿 y 轴发生变形,但您还会看到纹理撕裂,因为这些条带的宽度不会改变,从而导致网格中出现间隙。

有没有其他人遇到过这个问题,他们会对如何最好地将(x,y)置换贴图过滤器应用于以这种方式构建的多边形网格提出建议?或者定义网格的方法是否必须以某种基本方式改变?

可以在ZEUS OpenGL|ES Tutorial on Texture Mapping中查看网格生成算法的示例。

谢谢。

4

1 回答 1

0

好的,让我们先看看我是否理解这个问题。

如果我理解正确,您正在尝试渲染纹理映射补丁。但是,当您尝试在垂直方向拉伸补丁以使其变高时,网格中不同的水平带会撕裂,最终会出现几个水平带的补丁。

是对的吗?

如果是这样,问题出在网格生成算法上,纹理映射本身必须保持不变。从我在提供的链接上可以看到,每个水平带之间的顶点不共享,它们是重复的。因此,如果您缩放顶部顶点之间的间距,您还需要缩放带高度,以便底部顶点适合下一行顶部顶点。

该算法的基础工作,您只需要调整行间距和行高。当您进一步了解原始列表的工作原理时,您可能想了解索引原始列表。这些实际上会让您共享顶点,而不是为每个图元复制它们。

希望能帮助到你。

于 2009-02-04T18:32:46.293 回答