[英]Calculating a camera's normal in OpenGL?
我正在使用OpenGL开发第一人称射击游戏,并且尝试抵消物理刚体的创建(使用Bullet库),以便始终在相机所看的位置而不是始终在镜头的位置创建刚体。摄像机前面的设定点。
显然,一种方法是通过从视图矩阵创建3x3旋转矩阵或quat,然后将其乘以正向矢量来获得指向相机所处位置的法线。
但是,我不确定如何获取这些值(视图矩阵中的quat,正向向量是什么,是否必须对乘法结果进行归一化等)。 我尝试过看教程,但是我仍然不确定要获得这些值。
您实际上距离很近, cameraPos
应该正确。 假定您具有反视图矩阵,则相机的法线/方向仅位于相机位置之前的列。
以下是一些类似GLSL的伪代码:
mat4 inv = inverse(view);
vec3 pos = vec3(inv[3]);
vec3 dir = -vec3(inv[2]);
其中view
是摄像机的视图矩阵( mat4
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.