繁体   English   中英

在openGL或更确切地说在LWJGL中,一个人如何相对于相机旋转?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM