在OpenGL中相对于视口旋转

Nic*_*ick 8 opengl rotation

我试图在视图中显示一个可以通过拖动光标/触摸屏自然旋转的对象.此刻我有一个像这样的物体的X和Y旋转

glRotatef(rotateX, 0f, 1f, 0f); // Dragging along X, so spin around Y axis
glRotatef(rotateY, 1f, 0f, 0f);
Run Code Online (Sandbox Code Playgroud)

我理解为什么这不能做我想做的事情(例如,如果你将它旋转180度,上下旋转反转).我无法弄清楚两个方向相对于观察者保持左右和上下的方式.

我可以假设相机是固定的并且沿着Z轴看.有任何想法吗?

Xav*_* Ho 7

最好的办法是实现基于四元数的旋转.在四元数世界中,每次旋转时,它都将与您指定的轴轴对齐,而不受先前旋转的影响.这也是它没有受到万向锁的原因.

我发现这些页面有助于实现四元数:

祝好运.我敢肯定还有其他解决方案,但这个是你能拥有的最干净的解决方案之一.

  • 我将等待你的胜利. (2认同)