Graphics Obj格式中的纹理坐标问题

Graphics Obj格式中的纹理坐标问题,graphics,format,textures,dataformat,Graphics,Format,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.75

据我所知,纹理坐标的范围应该是[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?有人能给我解释一下吗?谢谢

你看,纹理看起来很奇怪

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

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

以下是来自以下网站的相关引用:

可以指定范围[0,1]之外的纹理坐标,并具有 它们可以在纹理贴图中钳制或重复。重复 纹理,如果有一个运行纹理坐标的大平面 例如,从两个方向的0.0到10.0,您将得到100 纹理的副本在屏幕上平铺在一起。在重复过程中, 纹理坐标的整数部分将被忽略,而 纹理贴图平铺曲面。对于大多数应用程序,纹理 如果要重复,纹理顶部的纹理应匹配 那些在底部,和类似的左,右边缘


为什么要翻页?最常见的行为是重复,而不是翻转。。。(翻转或夹紧是其他的可能性)。@nsands:谢谢你的回答!所以我在我的程序中添加了“glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);”但是纹理看起来仍然很奇怪:(你知道如何解决这个问题吗?它应该是什么样子吗?你确定纹理贴图没有弄糟吗?试着把它加载到Blender中(或类似的3d建模工具)。这将表明是您的代码还是模型出错。