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

In a obj+mtl+jpg 3D file, how to get the 3D coordinate where a specific pixel in the jpg file will be applied?

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

有没有办法为 .jpg 文件中的每个(相关)像素获取颜色为 "projected" 的 3D 点?

我的意思是,这一定是在将纹理应用到模型的过程中计算出来的,对吧?

想法是拥有一个与 jpg 文件具有相同高度和宽度的数组,但其中包含 3D 坐标。

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

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

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

这是它的可视化表示:

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

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