关于python:如何根据OpenGL的本地位置/旋转来移动/旋转OpenGL中的对象

How to move/rotate an object in OpenGL according to it's local position / rotation

进入Pc++和OpenGL,来自Python背景,在那里你有Apple运动和Apple旋转(当然,世界定位,世界定位),我觉得我错过了OpenGL的东西。基本上,我有一个球员,一个立方体。

我希望立方体能用上/下箭头键前后移动,始终保持它所面对的位置。然后,使用左/右箭头,我希望玩家围绕自己的原点旋转。所以我将以一个古老的居民邪恶的控制方案(坦克控制)结束。

现在,gltransfe和glrotate起作用,但取决于我先做什么,它似乎朝着正确的方向移动,但绕着世界原点旋转。

它绕着它自己的轴旋转,但移动总是根据世界轴。

我不想移动/旋转世界或世界+摄像头,因为我想做第三人固定摄像头游戏。基本上,我希望做的与Python中的applymvement/applyrotation完全相同。但我对如何实现这一目标持开放态度。


由于使用即时模式进行渲染,首先需要gltranslate对象中心的负矢量,应用旋转,然后gltranslate返回其位置。有效地:

1
2
3
glTranslate( -center.x, -center.y, -center.z );
glRotate( ... );
glTranslate( center.x, center.y, center.z );

现在,这只适用于渲染部分。对于移动,您需要跟踪立方体旋转的角度,并使用正弦和余弦将其向前或向后移动。