0

我正在学习webgl,我在这个问题上卡了半天。

我正在以这种方式进入我的场景:

mat4.rotate(mvMatrix, degToRad(-angle), [0, 1, 0]); 
mat4.translate(mvMatrix, [-currentX, 0, -currentZ]);

我应该如何获得我面前一个点的坐标(x/z)(比如说 10 个单位)?

4

1 回答 1

1

模型视图矩阵是从模型局部空间到视图空间的变换矩阵。现在,“您面前 10 个单位”的点可以在任何地方,具体取决于您感兴趣的空间。但是假设您想知道您面前 10 个单位的点在模型空间中的位置。好吧,没有这么简单的事情。

观察者前面 10 个单位的点位于 (0,0,-10) 的视图空间中。所以你现在要做的就是应用逆变换,即将该向量与逆ov mvMatrix相乘:

mat4.inverse(mvMatrix) * vec4(0,0,-10,1);

如果您想知道最后一个1元素来自哪里以及为什么将 4 元素向量用于 3 维坐标(这是您应该真正想知道的事情),请阅读有关齐次坐标

于 2013-09-24T17:41:50.880 回答