所以我在 3D 空间中有一组四个点。
P1 [0, 0, 0]
P2 [128, 0, 0]
P3 [0, 128, 0]
P4 [128, 128, 0]
然后我将其正交投影到屏幕上,有效地在屏幕空间中给我两个线框三角形。
我现在想将纹理映射到这个由两个三角形组成的“平面”。所以我采用我的方形纹理,并使用 u,v 坐标我可以将纹理映射到这两个三角形中。
当我尝试将 az 组件添加到顶点时,问题就来了。屏幕空间中生成的三角形现在有些失真,但纹理映射完全关闭。
在我看来,由于它只是三个点,它们仍然形成某种仿射矩形,我们可以将该矩形表示为以下形式的矩阵:
[ab 0] [cd 0] [tx ty 1]
谁能给我一些提示,关于如何将屏幕空间中的三个 2D 点转换为上述形式的矩阵的想法?
我查阅的所有教程等都解释了纹理映射的松散理论,然后让 OpenGl/DirectX 原生函数进行实际映射。
我正在寻找更多的直接方法,在给定三个点的情况下,我可以使用仿射矩阵将纹理映射到该三角形。(不做扫描线渲染方法)
谢谢!