对象在OpenGL中旋转

时间:2017-05-03 05:20:05

标签: opengl 3d kinematics

我正在制作一个带有push-pop矩阵和弹出菜单条目的方形手臂。我想让对象单独旋转,所以我创建了下面的代码,但是一个手指与其他手指一起移动。它为什么一起移动?

void display(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    draw_lines();

    glPushMatrix();

    glColor3f(1.0, 1.0, 1.0);
    glTranslatef(-1.0, 0.0, 0.0);
    glRotatef((GLfloat)shoulder, 0.0, 0.0, 1.0);
    glTranslatef(1.0, 0.0, 0.0);

    glPushMatrix();

    glScalef(2.0, 0.4, 1.5);
    glutWireCube(1.0); //First square(Shoulder)

    glPopMatrix();

    glTranslatef(1.0, 0.0, 0.0);
    glRotatef((GLfloat)elbow, 0.0, 0.0, 1.0);
    glTranslatef(1.0, 0.0, 0.0);

    glPushMatrix();

    glScalef(2.0, 0.4, 1.5);
    glutWireCube(1.0); //Second Square(Elbow)

    glPopMatrix();

    glTranslatef(1.0, 0.0, 0.0);
    glRotatef((GLfloat)finger_1, 0.0, 0.0, 1.0);
    glTranslatef(0.25, 0.0, 0.7);

    glPushMatrix();

    glScalef(0.5, 0.2, 0.2);
    glutWireCube(1.0); //First Finger

    glPopMatrix();

    glTranslatef(-0.3, 0.0, 0.0);
    glRotatef((GLfloat)finger_2, 0.0, 0.0, 1.0);
    glTranslatef(0.25, 0.0, -0.4);

    glPushMatrix();

    glScalef(0.5, 0.2, 0.2);
    glutWireCube(1.0); //Second Finger

    glPopMatrix();

    glTranslatef(-0.3, 0.0, 0.0);
    glRotatef((GLfloat)finger_3, 0.0, 0.0, 1.0);
    glTranslatef(0.25, 0.0, -0.5);

    glPushMatrix();

    glScalef(0.5, 0.2, 0.2);
    glutWireCube(1.0); //Third Finger

    glPopMatrix();

    glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();
}

对象旋转由单独的函数完成。

0 个答案:

没有答案