【问题标题】:problems about texture coordinate in Obj formatObj格式的纹理坐标问题
【发布时间】:2011-10-16 18:49:20
【问题描述】:

据我所知,纹理坐标应在 [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?谁能给我解释一下?谢谢!

你看到纹理看起来很奇怪

【问题讨论】:

    标签: graphics format textures dataformat


    【解决方案1】:

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

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

    这是来自OpenGL redbook的相关引用:

    您可以在 [0,1] 范围之外分配纹理坐标,并具有 它们要么在纹理贴图中夹紧要么重复。随着重复 纹理,如果你有一个运行纹理坐标的大平面 从 0.0 到 10.0 在两个方向上,例如,你会得到 100 纹理的副本平铺在屏幕上。重复过程中, 纹理坐标的整数部分被忽略, 纹理贴图平铺表面。对于大多数应用的纹理 要重复,纹理顶部的纹素应该匹配 底部的那些,左右边缘也是如此。

    【讨论】:

    • 为什么要翻转?最常见的行为只是重复,而不是翻转......(翻转或夹紧是其他可能性)。
    • @nsanders:感谢您的回答!所以我添加“glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);”到我的程序,但纹理看起来仍然很奇怪:(你知道如何解决这个问题吗?
    • 它应该是什么样子的?你确定纹理贴图不只是搞砸了吗?尝试在 Blender(或类似的 3D 建模工具)中加载它。这将表明是您的代码错误还是模型错误。
    猜你喜欢
    • 2012-02-08
    • 2017-10-03
    • 1970-01-01
    • 2012-03-06
    • 2011-07-31
    • 1970-01-01
    • 2020-07-12
    • 2017-05-28
    • 2018-06-26
    相关资源
    最近更新 更多