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

问题描述 投票:0回答:1

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

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

有什么建议怎么办?

c opengl graphics glut
1个回答
0
投票

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

  1. 获取对象变换矩阵 camera=object 使用glGetMatrix或其他任何东西
  2. 移动旋转位置,因此Z轴指向你想要的位置 我使用对齐的对象在Z轴上向前移动,但并非所有网格模型都是这样的,所以围绕(+/-)90 degx,y旋转z来匹配这个: Z轴向前(或向后取决于您的投影矩阵和深度函数) X-axis是对的 Y-axis是Up 相对于您的相机/屏幕坐标系(投影矩阵)。然后转换到落后的位置
  3. 应用POV旋转(可选) 如果您可以从前进方向稍微旋转相机视图(鼠标外观),则在此步骤执行此操作 camera*=rotation_POV
  4. 将矩阵转换为相机 相机矩阵通常与它所代表的坐标系矩阵相反,因此: camera=Inverse(camera)

有关更多信息,请查看understanding transform matrices,其中包含C ++中的OpenGL逆矩阵计算。

© www.soinside.com 2019 - 2024. All rights reserved.