我正在使用 freeglut 在 OpenGL 中制作游戏。
我有一辆车,我可以使用按键来前后移动,并且摄像头会跟随它。现在,当我转动汽车(在 xz 平面中进行 glRotate)时,我希望相机更改相机位置(使用 gluLookAt),以便它始终指向汽车的后部。
有什么建议我该怎么做吗?
最佳答案
对于相机跟随,我使用对象变换矩阵
获取对象变换矩阵
camera=object
使用
glGetMatrix
或其他任何东西shift 旋转位置
Z
轴指向你想要看的地方我使用对齐的对象来转发
Z
轴,但并非所有网格模型都是这样,因此旋转(+/-)90 deg
左右x,y
或z
匹配这个:-
Z
-axis 向前(或向后取决于您的投影矩阵和深度函数) -
X
-轴为右 -
Y
-轴向上
相对于您的相机/屏幕坐标系(投影矩阵)。然后平移到后面位置
-
申请
POV
旋转(可选)如果您可以从向前方向稍微旋转相机 View (鼠标注视),则执行此步骤
camera*=rotation_POV
将矩阵转换为相机
相机矩阵通常是它所表示的坐标系矩阵的逆矩阵:
camera=Inverse(camera)
有关更多信息,请查看此处 understanding transform matrices其中包含C++中的OpenGL逆矩阵计算。
关于c - 在 OpenGL 中沿对象后面的方向旋转相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184298/