2013-05-05 163 views
0

我想在OpenGL中移动一个对象。我在(0,0,0)中绘制对象,如果对象位于该点上,它将很好地旋转(使用对象的中心作为旋转的参考)。当我移动物体时会出现问题,它会使用与参考点相同的点进行旋转,而不是旋转点。该代码是:在OpenGL中旋转对象

glPushMatrix(); 
glRotatef(xangle,1.0f,0.0f,0.0f); 
    glRotatef(yangle,0.0f,1.0f,0.0f); 
    glRotatef(zangle,0.0f,0.0f,1.0f); 
    glTranslatef(x,y,z); 
//draw object 
    glPopMatrix(); 

有谁知道它有这样做的目的总是使用旋转它是作为参考点?

+0

见http://gamedev.stackexchange.com/a/16721/1134 =) – leander 2013-05-05 20:21:10

+0

谢谢:)。翻译点我该怎么办? – Jack 2013-05-05 20:30:09

回答

1

只需重新排序转换:

glPushMatrix(); 
glTranslatef(x,y,z); 
glRotatef(xangle,1.0f,0.0f,0.0f); 
glRotatef(yangle,0.0f,1.0f,0.0f); 
glRotatef(zangle,0.0f,0.0f,1.0f); 
//draw object 
glPopMatrix(); 
+0

如果我这样做,对象旋转正常,但问题是翻译(它有一个前面和后面的部分),因为它可以翻译移动两边,当它应该移动使用正面或背面。 – Jack 2013-05-05 20:36:58

+0

我不明白。前后部分是什么?当它不应该发生什么样的动向? – 2013-05-05 20:42:59

+0

该对象有一个前部和后部,我用键盘使用翻译向前和向后移动它。如果平移是在旋转之前旋转,那么对象不会沿前/后部分的方向移动。 – Jack 2013-05-05 20:56:49