我正在使用freeglut在OpenGL中制作游戏。
我有一辆车,我可以使用钥匙前后移动,相机跟着它。现在,当我转动汽车(在xz平面上的glRotate)时,我希望相机改变相机位置(使用gluLookAt),因此它总是指向汽车的后部。
有什么建议怎么办?
对于相机跟随我使用对象变换矩阵
camera=object
使用glGetMatrix
或其他任何东西Z
轴指向你想要的位置
我使用对齐的对象在Z
轴上向前移动,但并非所有网格模型都是这样的,所以围绕(+/-)90 deg
或x,y
旋转z
来匹配这个:
Z
轴向前(或向后取决于您的投影矩阵和深度函数)
X
-axis是对的
Y
-axis是Up
相对于您的相机/屏幕坐标系(投影矩阵)。然后转换到落后的位置POV
旋转(可选)
如果您可以从前进方向稍微旋转相机视图(鼠标外观),则在此步骤执行此操作
camera*=rotation_POV
camera=Inverse(camera)
有关更多信息,请查看understanding transform matrices,其中包含C ++中的OpenGL逆矩阵计算。