如果我知道平面上纹理的顶点坐标,我该如何计算顶点的uv坐标

时间:2015-04-25 10:35:02

标签: opengl-es coordinates texture-mapping vertex uv-mapping

我试图在平面上绘制纹理,我知道纹理的顶点坐标,以及4个顶点的坐标。那么如何计算4个顶点的uv纹理坐标?

这是一张图片,向您展示我想要做的事情,

enter image description here

带网格区域的黄色是我的纹理,它是一个倾斜到该形状的方形纹理。绿色区域是我想要将纹理映射到的平面。我知道点abcd和点123的顶点坐标,4

例如,如果我的纹理像这样放置

enter image description here

这些是所有点的顶点坐标。然后,点abcd的uv坐标应为(-0.5f, -0.5f), (1.5f, -0.5f), (1.5f, 1.5f), (-0.5f, 1.5f)

但如果纹理像第一张图片一样倾斜,我该如何计算点abcd的紫外坐标?

1 个答案:

答案 0 :(得分:0)

你想在哪里做这个CPU或GPU?假设CPU可以做的是将倾斜平面的顶点投影到绿色平面上。如果您将绿色平面视为具有相机并因此关联的视图和投影矩阵的屏幕,则可以将每个点投影到其表面上,然后在绿色平面的中间找到距离原点的距离。

从您的标签看起来您使用的是OpenGL ES,您使用的是固定功能还是着色器?你使用什么数学库? GLM有glm :: project和glm :: unproject,基本上你想要here's链接到那个信息。

Here's关于你想做什么的一些一般信息,你基本上想要从3D投影到2D,然后找到你飞机上的相对距离。

希望有所帮助。