Obj格式中纹理坐标的问题

yve*_*owe 4 format graphics textures dataformat

据我所知,纹理坐标应该在[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
Run Code Online (Sandbox Code Playgroud)

为什么纹理坐标在这里可以大于1?任何人都可以向我解释一下吗?谢谢!

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

nsa*_*ers 5

预期[0,1]之外的UV纹理值将被平铺.

我从来没有在任何非正式的OBJ规范中看到这种明显的说法,但它模仿了OpenGL的行为.

以下是OpenGL红皮书的相关引用:

您可以指定范围[0,1]之外的纹理坐标,并在纹理贴图中将它们钳制或重复.通过重复纹理,如果你有一个大的平面,纹理坐标在两个方向上从0.0到10.0运行,例如,你将获得在屏幕上拼贴在一起的100个纹理副本.在重复期间,忽略纹理坐标的整数部分,并且纹理贴图的副本平铺表面.对于要重复纹理的大多数应用,纹理顶部的纹理像素应与底部的纹理像素相匹配,左右边缘的纹理像素也应相似.