在obj + mtl + jpg 3D文件中,如何获取将应用jpg文件中特定像素的3D坐标?

时间:2018-07-04 11:37:07

标签: python opengl 3d textures wavefront

我有3个文件,.obj,.mtl和.jpg文件。

是否可以为.jpg文件中的每个(相关)像素获取颜色“投影”的3D点?

我的意思是,必须在将纹理应用于模型的过程中的某处计算出来,对吧?

我们的想法是使用与jpg文件相同的高度和宽度的数组,但其中包含3D坐标。

我在python中工作,我已经使用PyWavefront(+ pyglet.gl)导入了带有纹理的obj文件,并在此处提供了示例:https://github.com/greenmoss/PyWavefront/blob/master/pywavefront/texture.py

这可能与该问题无关,因为我想在不显示任何内容的情况下计算数组。

1 个答案:

答案 0 :(得分:1)

这并不是真正应用纹理的方式。 obj给您的是每个顶点的UV坐标。 UV坐标是2D向量,可告诉您某个顶点在图片中的位置。所有这些坐标构成了所谓的UV贴图。

这是它的视觉表示:

enter image description here

此信息在.obj文件中。每条以vt开头的行都描述了一个向量。并且以f开头的每行描述一个多边形。每组3/4/5描述3dcoord / TextureCoord / normal。

在片段着色器中,将使用在此片段处插入的UV坐标对纹理进行采样。