-1
我正在使用OpenGL 4.0,我试图写一个游戏摄像头有两个属性。 “攻角”和“旋转”RTS风格的游戏摄像头编码模型矩阵
我想构建一个非常类似于其他RTS游戏的相机,例如魔兽争霸3或Starcraft II,其中相机(默认情况下)以相当陡峭的角度面对地面。
我使用一些支持代码,其作用非常类似于旧的OpenGL的glTranslatef,glRotatef 我现在的尝试是这样的:
shaders->Model.Translate(-cameraPosition.x,-cameraPosition.y,-cameraPosition.z);
//Apply rotation
//shaders->Model.Rotate(rotation/M_PI*180.0f,0,0,1);
//Apply AOA
float aX = cos(2*3.141592 - rotation - 3.141592/2.0);
float aY = sin(2*3.141592 - rotation - 3.141592/2.0);
shaders->Model.Rotate(90.0f-(float)angleOfAttack/M_PI*180.0f,aY,aX,0);
这一点之后,地面被画成从一个矩形(0 ,0,0)到(宽度,高度,0) 这种尝试主要是功能性的,除非y越大,地面距离越远。我不确定是什么导致了这一点,但我认为它与这个代码有关,因为当我将AOA设置为90(所以相机直接指向下方)时,它不会发生。
注意:我使用模型矩阵而不是视图矩阵来处理摄像机的运动。