【发布时间】:2015-03-17 15:05:21
【问题描述】:
我正在使用 OpenGL,并且有一堆圆柱体通过我要旋转的球体连接。
我正在制作一种“管道”的东西,并希望旋转平滑(所以当底部圆柱体旋转时,顶部圆柱体会相应移动,但顶部圆柱体可以旋转而不移动底部圆柱体
唯一的问题是我想以此为基础,但即使现在只有圆柱体,我也无法在不移动整个物体的情况下让顶部旋转。
我的代码是:
void draw_cylinder(float translate_x, float translate_y, float angle1) {
GLUquadricObj *qobj = gluNewQuadric();
//first cylinder
glPushMatrix();
glTranslatef(translate_x, translate_y-0.5, 0.0);
glRotatef(angle1, 0.0, 0.0, 1.0);
glPushMatrix();
glRotatef(90.0, -45.0, 0.0, 0.0);
gluCylinder(qobj, 1.0, 1.0, 10.0, 20, 20);
gluQuadricOrientation (qobj, GLU_INSIDE);
gluDisk(qobj, 0.0, 1.0, 20, 20);
glTranslatef(0.0, 0.0, 10.0);
gluQuadricOrientation (qobj, GLU_OUTSIDE);
gluDisk(qobj, 0.0, 1.0, 20, 20);
glPopMatrix();
glPushMatrix(); //Connecting sphere
glTranslatef(translate_x, translate_y+10.5, 0.0);
glutSolidSphere(1,20,20);
glPopMatrix();
//second cylinder
glPushMatrix();
glTranslatef(translate_x, translate_y+11.3, 0.0);
glRotatef(angle2, 0.0, 0.0, 1.0);
glPushMatrix();
glRotatef(90.0, -45.0, 7.0, -7.0);
gluCylinder(qobj, 1.0, 1.0, 5.0, 20, 20);
gluQuadricOrientation (qobj, GLU_INSIDE);
gluDisk(qobj, 0.0, 1.0, 20, 20);
glTranslatef(0.0, 0.0, 5.0);
gluQuadricOrientation (qobj, GLU_OUTSIDE);
gluDisk(qobj, 0.0, 1.0, 20, 20);
glPopMatrix();
glPopMatrix();
glPopMatrix(); }
任何帮助将不胜感激
【问题讨论】:
-
这听起来像骨骼动画,研究一下这个主题,你可能会得到答案