我正在使用OpenGL创建图形引擎。但是,当我应用旋转来旋转我的相机时,世界就转向了。
请看这里(请原谅一些裁剪问题 - 残余立方体不存在):
我使用四元数旋转我的初始旋转相机。每次用户点击Q
或E
时,我都会将原始四元数与围绕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
是要转换的顶点的位置。
我应该将每个顶点乘以相机矩阵吗?如何进一步调试此问题?
答案 0 :(得分:0)
正如我在评论中所说,我只需在inverse
矩阵上拨打worldToCamera
即可。这是因为,正如datenwolf所说,我正朝着相反的方向转变。