有OpenGl经验的人可以提出一个策略来帮助我解决我在轮换时遇到的问题吗?
想象一下用螺栓固定在宇宙中心的一组世界坐标xyz轴;也就是说,就此而言 讨论他们不动。我也没有翻译,相机是固定的, 保持简单。我有一个以原点为中心的立方体,意图是 按'x','y'和'z'键会增加 表示旋转立方体绕世界xyz轴的度数的变量。每个按键都是90°(你可以想象旋转乐高积木 以这种方式),所以按'x'键增加一个浮动属性RotXdeg: RotXdeg + = 90.0f; 同样按下'y'和'z'键。
实现 [1] 的一种天真的方式是:
Gl.glPushMatrix();
Gl.glRotatef(RotXdeg, 1.0f, 0.0f, 0.0f);
Gl.glRotatef(RotYdeg, 0.0f, 1.0f, 0.0f);
Gl.glRotatef(RotZdeg, 0.0f, 0.0f, 1.0f);
Gl.glPopMatrix();
这当然具有效果或旋转立方体及其局部xyz轴,因此尚未实现关于世界
([1]顺便说一句,我正在使用Tao OpenGl命名空间;感谢http://vasilydev.blogspot.com的建议。)
答案 0 :(得分:0)
如果立方体位于(0,0,0)世界,并且局部旋转具有相同的效果。如果立方体处于另一个位置,则90度旋转将导致四分之一圆周轨道(0,0,0)。目前还不清楚你未能实现的目标,我还建议不要使用旧的立即模式进行矩阵运算。然而,通过这种方式实现世界轮换的方法是: - 翻译成(0,0,0) - 旋转90度 - 翻译回来