坐在我面前(webgl / opengl)

时间:2013-09-24 17:27:59

标签: opengl-es webgl

我正在学习webgl,我已经被困在这个问题上半天了。

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

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

我怎么能得到我前面一个点的坐标(x / z)(让我们说10个单位)?

1 个答案:

答案 0 :(得分:1)

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

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

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

如果你想知道最后一个1元素的来源以及为什么一个4元素向量用于三维坐标(这是你应该真正想知道的),请阅读homogenous coordinates