在OpenGL中的对象后面旋转相机

时间:2013-11-25 03:33:11

标签: c opengl graphics glut

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

我有一辆车,我可以使用钥匙前后移动,相机跟着它。现在,当我转动汽车(在xz平面上的glRotate)时,我希望相机改变相机的位置(使用gluLookAt),因此它总是指向汽车的后部。

有任何建议我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

  1. 获取对象转换矩阵

    camera=object
    

    使用glGetMatrix或其他任何内容

  2. 移动位置以使Z轴指向您想要的位置

    我使用对齐的对象在Z轴上转发,但并非所有网格模型都是这样的,因此(+/-)90 deg围绕x,yz进行旋转以匹配:< / p>

    • Z - 轴向前(或向后取决于您的投影矩阵和深度函数)
    • X - 轴是正确的
    • Y - 轴已启动

    关于相机/屏幕坐标系(投影矩阵)。然后转换为落后位置

  3. 应用POV轮换(可选)

    如果您可以从前向轻微旋转相机视图(鼠标外观),请执行此步骤

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

    相机矩阵通常与它所代表的坐标系矩阵相反:

    camera=Inverse(camera)
    
  5. 有关详细信息,请查看understanding transform matrices C ++ 中的 OpenGL 逆矩阵计算。