接触 C++ 和 OpenGL,来自 Python 背景,您有 applyMovement 和 applyRotation(当然还有 worldPosition,< em>worldOrientation) 我觉得我在 OpenGL 中遗漏了一些东西。基本上,我有一个播放器,一个立方体。
我希望立方体使用向上/向下箭头键前后移动,始终位于它面向的位置。然后,使用左/右箭头,我希望播放器围绕其自己的 原点旋转。所以我最终会得到一个旧的生化危机风格的控制方案(Tank Controls)
现在,glTranspose 和 glRotate 可以工作,但是取决于我首先 做的哪一个,它似乎朝着正确的方向移动,但是旋转围绕世界起源。
或
它绕着自己的轴旋转,但运动总是按照世界轴。
我不想移动/旋转世界或世界+相机,因为我想做一款第三人称固定相机游戏。基本上,我希望做与 Python 中的 applyMovement/applyRotation 完全相同的事情。但我对如何实现的想法持开放态度。
最佳答案
由于您使用即时模式进行渲染,因此您首先需要对对象中心的负 vector 进行 glTranslate,应用旋转,然后 glTranslate 回到其位置。有效地:
glTranslate( -center.x, -center.y, -center.z );
glRotate( ... );
glTranslate( center.x, center.y, center.z );
现在这只是渲染部分。对于移动,您需要跟踪立方体旋转的角度,并使用正弦和余弦将其向前或向后移动。
关于python - 如何根据本地位置/旋转在 OpenGL 中移动/旋转对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29829908/