c-在OpenGL中沿对象后面的方向旋转相机



我正在OpenGL中制作一个游戏,使用freeglut。

我有一辆车,我可以使用按键前后移动,相机会跟随它。现在,当我转动汽车(在xz平面中的glRotate)时,我希望相机改变相机的位置(使用gluLookAt),使其始终指向汽车的后部。

有什么建议吗?

对于相机跟随,我使用对象变换矩阵

  1. 获取对象变换矩阵

    camera=object
    

    对使用glGetMatrix或其他

  2. 移位旋转位置,使Z轴指向您想要查看的位置

    我使用对齐的对象在Z轴上向前,但不是所有的网格模型都是这样的,所以通过(+/-)90 deg围绕x,yz旋转以匹配这一点:

    • Z-轴是向前的(或向后取决于投影矩阵和深度函数)
    • X-轴为右
    • Y-轴向上

    相对于您的相机/屏幕坐标系(投影矩阵)。然后转换到后面的位置

  3. 应用POV旋转(可选)

    如果你可以从向前的方向(鼠标看)稍微旋转相机视图,然后在这个步骤

    camera*=rotation_POV
    
  4. 将矩阵转换为相机

    相机矩阵通常是它所代表的坐标系矩阵的倒数,因此:

    camera=Inverse(camera)
    

有关更多信息,请参阅此处了解变换矩阵,其中包括C++中的OpenGL逆矩阵计算。

相关内容

  • 没有找到相关文章

最新更新