[英]How does one rotate relative to the camera in openGL or more specifically LWJGL?
我正在用LWJGL
制作3D游戏。 在此游戏中,每当我按箭头键时,无论当前方向如何,我都希望屏幕朝该方向旋转。 我正在努力用代码来实现这一点。 使用基于旋转向量3f的三个glRotatef
函数无法实现此目的。 向上和向下旋转是因为首先调用glRotatef(rotation.x, 1, 0, 0)
,但只有当您不向上或向下查看时,才可以左右glRotatef(rotation.x, 1, 0, 0)
。 如果是这样,则绕通用y轴旋转,然后相机旋转。 我看到另一个实现可以使用gluLookAt()
,但是我想我会遇到同样的问题。
编辑我以为我可以通过更改glRotatef()的调用顺序来解决问题,具体取决于我想旋转的方向。 我认为这会起作用,因为在我的游戏中,我一次只会旋转一个轴。 它有些奏效,但在某些方面却没有奏效。
if(updown){
glRotatef(rotation.x, 1, 0, 0);
glRotatef(rotation.y, 0, 1, 0);
} else if(leftright){
glRotatef(rotation.y, 0, 1, 0);
glRotatef(rotation.x, 1, 0, 0);
}
glTranslatef(position.x, position.y, position.z);
gluLookAt可能会使您更快地到达那里,但是您将需要围绕原点坐标手动旋转眼睛坐标。 如果计划绕所有3轴旋转,则还需要使用gluLookAt计算向上矢量。
我有一种预感,在执行glRotate之前,您只需要添加一个glTranslate即可使相机周围有一些东西。
如果显示一些代码,则可能会获得更多帮助。
我已经解决了这个问题,并继续前进。 因为我一次只能将一个轴旋转90度,所以我经历了所有64种可能的方向并手动应用了必要的转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.