在OpenGL中计算相机的法线?

时间:2017-03-25 22:44:04

标签: c++ opengl camera

我正在制作一个使用OpenGL的第一人称射击游戏,我试图抵消物理刚体的创建(使用Bullet库),以便始终在相机看起来相当的地方创建刚体而不是总是在相机前面的设定点。

显然,一种方法是通过从视图矩阵创建一个3x3旋转矩阵或四分之一,并将其​​乘以前向矢量,以获得指向相机外观的法线。

但是,我不确定如何获取这些值(视图矩阵中的quat,前向矢量是什么,是否必须标准化乘法的结果等)。我已经尝试过查看教程,但我仍然不确定是否能获得这些值。

1 个答案:

答案 0 :(得分:1)

你实际上非常接近,cameraPos应该是正确的。假设你有逆视图矩阵,那么摄像机的法线/方向就是摄像机位置之前的列。

这是一些类似伪GLSL的代码:

mat4 inv = inverse(view);

vec3 pos = vec3(inv[3]);
vec3 dir = -vec3(inv[2]);

view是相机的视图矩阵(mat4)。