我在3D球体上有2D纹理,我想知道如何将纹理上的2D坐标转换为3D坐标。我知道它与纹理的剪裁有关:我使用OpenGL的自动剪切功能将纹理放在球体上。
修改
澄清问题:
我有一个2D平面,这是一个包含红色绘制边框的图像,现在我把对象放在这个平面上,它有一个碰撞半径并且正在四处乱窜。每当物体与红色边界碰撞时,它们就会反弹回来。
现在,我将这个2D平面绕在3D球体周围。在圆圈的位置,我想放置在球体上移动的3D模型。现在的问题是从简单的"平面上的2D坐标使球体上的3D坐标更加复杂,从而正确定位3D模型。
我的第一种方法是将2D坐标映射到球形坐标,这些坐标可以很容易地转换为3D坐标但是我该怎么做?
答案 0 :(得分:2)
您不会将2D坐标“转换”为3D坐标。您拥有的2D坐标是UV坐标(从0到1),它们代表纹理空间中的位置。您要做的是将这些UV坐标映射到顶点。
您可以阅读有关UV贴图here的更多信息。
在OpenGL中,它取决于您使用的是哪个版本。要么在glTexCoord
调用之前使用glVertex
次调用(对于old versions of OpenGL),要么在VBO中将其设置为在newer versions of OpenGL上的片段着色器处理。