Obj格式中纹理坐标的问题

时间:2011-10-16 03:48:14

标签: 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.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?任何人都可以向我解释一下吗?谢谢!

你看到纹理看起来很怪异 enter image description here

1 个答案:

答案 0 :(得分:5)

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

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

以下是OpenGL redbook

的相关引用
  

您可以指定范围[0,1]以外的纹理坐标   它们可以在纹理贴图中夹紧或重复。随着重复   纹理,如果你有一个纹理坐标运行的大平面   从两个方向的0.0到10.0,例如,你将获得100   纹理的副本在屏幕上平铺在一起。在重复期间,   忽略纹理坐标的整数部分,并复制   纹理地图瓷砖表面。适用于大多数纹理应用   要重复,纹理顶部的纹素应该匹配   那些在底部,类似于左边和右边。