5

据我所知,纹理坐标的范围应为 [0,1],但在此 obj 文件中如下所示,纹理坐标的范围似乎为 [0,2]

vt 2.0000 2.0000 0.0000
vt 1.7500 2.0000 0.0000
vt 1.7500 1.9750 0.0000
vt 2.0000 1.9750 0.0000
vt 1.7500 1.9500 0.0000
vt 2.0000 1.9500 0.0000
vt 1.7500 1.9250 0.0000
vt 2.0000 1.9250 0.0000
vt 1.7500 1.9000 0.0000
vt 2.0000 1.9000 0.0000
vt 1.5000 2.0000 0.0000
vt 1.5000 1.9750 0.0000
vt 1.5000 1.9500 0.0000
vt 1.5000 1.9250 0.0000
vt 1.5000 1.9000 0.0000
vt 1.2500 2.0000 0.0000
vt 1.2500 1.9750 0.0000
vt 1.2500 1.9500 0.0000
vt 1.2500 1.9250 0.0000
vt 1.2500 1.9000 0.0000
vt 1.0000 2.0000 0.0000
vt 1.0000 1.9750 0.0000
vt 1.0000 1.9500 0.0000
vt 1.0000 1.9250 0.0000

为什么这里的纹理坐标可以大于 1 ?谁能给我解释一下?谢谢!

你看纹理看起来很奇怪 在此处输入图像描述

4

1 回答 1

5

[0,1] 之外的 UV 纹理值预计会被平铺。

我从未在任何非正式的 OBJ 规范中看到过这种明确的表述,但它模仿了 OpenGL 的行为。

这是来自OpenGL 红皮书的相关引述:

您可以在 [0,1] 范围之外分配纹理坐标,并让它们在纹理贴图中固定或重复。例如,对于重复纹理,如果您有一个大平面,其纹理坐标在两个方向上从 0.0 到 10.0,您将在屏幕上获得 100 个平铺在一起的纹理副本。在重复过程中,纹理坐标的整数部分被忽略,纹理贴图的副本平铺表面。对于要重复纹理的大多数应用程序,纹理顶部的纹素应该与底部的纹素匹配,左右边缘也是如此。

于 2011-10-16T09:15:22.050 回答