animações independentes na mesma cena
DESCRIPTION
Animações Independentes na Mesma Cena. O uso do glPushMatrix () e glPopMatrix (). Vamos supor que você tenha dois objetos na cena :. Vamos supor que você queira , ao mesmo tempo, transladar o rotacionar o quadrado e transladar o circulo. - PowerPoint PPT PresentationTRANSCRIPT
Animações Independentes na Mesma Cena
• Vamos supor que você tenha dois objetos na cena:
O uso do glPushMatrix() e glPopMatrix()
Vamos supor que você queira, ao mesmo tempo, transladar o rotacionar o quadrado e transladar o circulo
• A cada chamada da calback de desenho, você empilha a matriz de tranformação
• glPushMatrix() // empilha uma matriz de transformação atual
• Em seguida, faz uma rotação (glRotate …), desenha o quadrado com a rotação aplicada)
• glPopMatrix() // desempilhou a matriz que tinha antes de glPush..
O uso do glPushMatrix() e glPopMatrix()
• glPushMatrix() // empilha uma matriz de transformação atual
• Em seguida, faz uma Translação (glTranslate …), desenha o circulo com a Translação aplicada)
• glPopMatrix() // desempilhou a matriz que tinha antes de glPush..
O uso do glPushMatrix() e glPopMatrix()
• Vamos supor que você tenha dois objetos na cena:
O uso do glPushMatrix() e glPopMatrix()
Vamos supor que você queira, ao mesmo tempo, transladar o rotacionar o quadrado e transladar o circulo
O uso do glPushMatrix() e glPopMatrix()
void Desenha(void){
// Limpa a janela de visualização com a cor // de fundo definida previamenteglClear(GL_COLOR_BUFFER_BIT);
// Guarda a matriz de transformação corrente na pilhaglPushMatrix(); // Aplica uma translação glTranslatef(-35.0f, 0.0f, 0.0f); // Aplica uma rotação ao redor do eixo z glRotatef(90.0f, 0.0f, 0.0f, 1.0f); // Altera a cor do desenho para pretoglColor3f(0.0f, 0.0f, 0.0f);// Função da GLUT para fazer o desenho de um "torus" glutWireTorus(7.0, 14.0, 20, 40); // Restaura a matriz de transformação corrente da pilhaglPopMatrix();
// Guarda a matriz de transformação corrente na pilhaglPushMatrix(); // Aplica uma rotação ao redor do eixo x glRotatef(90.0f, 0.0f, 0.0f, 1.0f); // Aplica uma translação glTranslatef(-35.0f, 0.0f, 0.0f); // Altera a cor do desenho para cinza escuroglColor3f(0.4f, 0.4f, 0.4f);// Função da GLUT para fazer o desenho de um "torus" glutWireTorus(7.0, 14.0, 20, 40); // Restaura a matriz de transformação corrente da pilhaglPopMatrix();
// Guarda a matriz de transformação corrente na pilha
O uso do glPushMatrix() e glPopMatrix()
glPushMatrix(); // Aplica uma translação glTranslatef(35.0f, 0.0f, 0.0f); // Aplica uma rotação ao redor do eixo x glRotatef(90.0f, 1.0f, 0.0f, 0.0f); // Altera a cor do desenho para cinzaglColor3f(0.6f, 0.6f, 0.6f);// Função da GLUT para fazer o desenho de um "torus" glutWireTorus(7.0, 14.0, 20, 40); // Restaura a matriz de transformação corrente da pilhaglPopMatrix();
// Executa os comandos OpenGLglFlush();
}
O uso do glPushMatrix() e glPopMatrix()
Tarefa
• Desenhar vários objetos na Tela, contendo iluminação (e iterações com o mouse e teclado, caso queira) e transformações geométrica independentes para cada objeto