Obj格式的纹理坐标问题

发布于 2024-12-09 23:23:28 字数 785 浏览 1 评论 0原文

据我所知,纹理坐标应该在[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 ?有人可以向我解释一下吗?谢谢!

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

as far as i know, texture coordinates should range [0,1]
but in this obj file as follow, the texture coordinates seem to range [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

Why the texture ordinates here can be greater than 1 ? Can anybody explain it to me? Thanks!

you see the texture seems weird
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2024-12-16 23:23:28

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

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

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

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

UV texture values outside [0,1] are expected to be tiled.

I've never seen this explicity stated in any of the informal OBJ specs floating about, but it mimics the behavior of OpenGL.

Here is a relevant quote from the OpenGL redbook:

You can assign texture coordinates outside the range [0,1] and have
them either clamp or repeat in the texture map. With repeating
textures, if you have a large plane with texture coordinates running
from 0.0 to 10.0 in both directions, for example, you'll get 100
copies of the texture tiled together on the screen. During repeating,
the integer part of texture coordinates is ignored, and copies of the
texture map tile the surface. For most applications where the texture
is to be repeated, the texels at the top of the texture should match
those at the bottom, and similarly for the left and right edges.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文