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