如何旋转相机而不是世界?

时间:2014-02-01 02:28:16

标签: opengl math camera quaternions

我正在使用OpenGL创建图形引擎。但是,当我应用旋转来旋转我的相机时,世界就转向了。

请看这里(请原谅一些裁剪问题 - 残余立方体不存在):

我使用四元数旋转我的初始旋转相机。每次用户点击QE时,我都会将原始四元数与围绕Y轴的旋转相乘。

以下是我的相机到剪辑矩阵,基于相机的四元数:

1 - 2y^2 - 2z^2    2xy - 2wz    2xz + 2wy    0
2xy + 2wz    1 - 2x^2 - 2x^2    2yz - 2wx    0
2xz - 2wy    2yz + 2wx    1 - 2x^2 - 2^2     0
-xt    -yt    zt    0

其中x/y/zt是相机的当前位置,w,x,y,z是相机当前的四元数旋转矢量。

我的矩阵成倍增加:

cameraToClip * worldToCamera * modelToWorld * position

其中position是要转换的顶点的位置。

我应该将每个顶点乘以相机矩阵吗?如何进一步调试此问题?

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,我只需在inverse矩阵上拨打worldToCamera即可。这是因为,正如datenwolf所说,我正朝着相反的方向转变。