我正在学习webgl,我已经被困在这个问题上半天了。
我正以这种方式进入我的场景:
mat4.rotate(mvMatrix, degToRad(-angle), [0, 1, 0]);
mat4.translate(mvMatrix, [-currentX, 0, -currentZ]);
我怎么能得到我前面一个点的坐标(x / z)(让我们说10个单位)?
答案 0 :(得分:1)
模型视图矩阵是从模型局部空间到视图空间的变换矩阵。现在,“你面前10个单位”可以在任何地方,取决于你感兴趣的空间。但是你想知道你面前的10个单位在模型空间中的位置。好吧,没有那么简单。
观察者前面的10个单位位于(0,0,-10)的视野中。所以你现在要做的就是应用逆变换,即将该向量与逆ov mvMatrix相乘:
mat4.inverse(mvMatrix) * vec4(0,0,-10,1);
如果你想知道最后一个1
元素的来源以及为什么一个4元素向量用于三维坐标(这是你应该真正想知道的),请阅读homogenous coordinates。