我想在 xz 平面上投影一个网格,如下所示:
为此,我创建了一个 x 和 z 范围为 [-1|1] 的顶点网格。在着色器中,我将顶点的 xz 屏幕坐标与 View-Projection 矩阵的倒数相乘。然后我想根据新的世界 xz 坐标调整高度,最后我通过将这些坐标与 View-Projection 矩阵相乘将它们转换回屏幕空间。
我不知道为什么,但屏幕上显示了一架非常奇怪的飞机。我使用的数学运算是否正确?
您最初创建的网格是在投影空间中还是在实际屏幕坐标中?听起来它在投影空间中,因为您只需使用视图投影矩阵的逆矩阵将其转换为世界坐标。我认为你也需要包括“窗口”矩阵,即通过 View-Projection-Window 矩阵的倒数来转换它们(同样在返回屏幕坐标的路上)。
编辑:
我可能不完全理解你想要做什么,所以这里有一些问题。:)
您是否尝试采用问题中屏幕截图中显示的网格并将其投影到世界 zx 坐标上?如果是这样,那么为什么要从 zx 值的网格开始呢?此外,如果您对那些应用逆视图矩阵,那么您肯定会得到一条线,因为相机沿 z 方向看,尽管您的第二个屏幕截图显示您正在获得一架飞机。我有点困惑。