我正在使用freeglut在OpenGL中制作游戏。
我有一辆车,我可以使用钥匙前后移动,相机跟着它。现在,当我转动汽车(在xz平面上的glRotate)时,我希望相机改变相机的位置(使用gluLookAt),因此它总是指向汽车的后部。
有任何建议我该怎么做?
答案 0 :(得分:0)
对于相机跟随我使用对象变换矩阵
获取对象转换矩阵
camera=object
使用glGetMatrix
或其他任何内容
移动位置以使Z
轴指向您想要的位置
我使用对齐的对象在Z
轴上转发,但并非所有网格模型都是这样的,因此(+/-)90 deg
围绕x,y
或z
进行旋转以匹配:< / p>
Z
- 轴向前(或向后取决于您的投影矩阵和深度函数)X
- 轴是正确的Y
- 轴已启动关于相机/屏幕坐标系(投影矩阵)。然后转换为落后位置
应用POV
轮换(可选)
如果您可以从前向轻微旋转相机视图(鼠标外观),请执行此步骤
camera*=rotation_POV
将矩阵转换为相机
相机矩阵通常与它所代表的坐标系矩阵相反:
camera=Inverse(camera)
有关详细信息,请查看understanding transform matrices C ++ 中的 OpenGL 逆矩阵计算。