【问题标题】:What's the Meaning of Texture Coordinate in obj Filesobj文件中纹理坐标的含义是什么
【发布时间】:2016-07-14 09:23:46
【问题描述】:

那么问题来了:纹理坐标的值代表什么? 例如,在我的 obj 文件中,纹理坐标如下所示:

vt 0.474178 0.050139
vt 0.477308 0.050139
vt 0.480438 0.050139
vt 0.483568 0.050139

我的纹理(bmp 文件)的大小是 640*360。这是否意味着 obj 文件中的 (0.474178, 0.050139) 对应于 bmp 文件中的 (0.474178*640, 0.050139*360) 点?也就是说,纹理坐标通过以下方式指示bmp文件中的点位置:

 u*width_of_the_bmp,  v*height_of_the_bmp

如果我错了,如何获得vt和bmp点位置之间的对应关系?因为我想得到每个顶点的RGB值,并且我可以得到bmp文件中每个像素的RGB值,那么如何将这些数据链接在一起得到我想要的呢?

【问题讨论】:

  • 如果这真的是关于 OpenGL,那么 uv 坐标的插值会在顶点和片段着色器阶段之间自动完成。只需确保在片段着色器中查找纹理即可。

标签: c++ opengl opengl-es 3d


【解决方案1】:

没错。

通常,纹理坐标 0,0 是像素坐标 0,0,纹理坐标 1,1 是对角。 大于 1 的纹理坐标会环绕纹理,因此如果从 0,0 变为 2,0,则会环绕纹理两次。

当然,某些程序可能会以不同的方式解释它们。没有规定必须这样,但通常是这样。

【讨论】:

  • 非常感谢!但是还有一个问题。以bmp中的像素点为矩阵,我们可以得到一个640*360的矩阵。我们可以在这个矩阵中引用像 (10, 1) 这样的点,但是 (10.5, 1.4) 似乎是不可能的。但是当vt坐标乘以bmp文件的高/宽时,很难得到整数,所以四舍五入的结果可能是这样吗?
  • @lilliam.C 这些将被舍入或插值,具体取决于程序使用的纹理模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 2013-09-06
  • 2015-09-30
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 2012-02-08
相关资源
最近更新 更多