90 likes | 199 Views
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.
E N D
O uso do glPushMatrix() e glPopMatrix() • Vamossuporquevocêtenhadoisobjetosnacena: Vamossuporquevocêqueira, aomesmo tempo, transladar o rotacionar o quadrado e transladar o circulo
O uso do glPushMatrix() e glPopMatrix() • A cadachamada da calback de desenho, vocêempilha a matriz de tranformação • glPushMatrix() // empilhaumamatriz de transformaçãoatual • Emseguida, fazumarotação (glRotate …), desenha o quadrado com a rotaçãoaplicada) • glPopMatrix() // desempilhou a matrizquetinha antes de glPush..
O uso do glPushMatrix() e glPopMatrix() • glPushMatrix() // empilhaumamatriz de transformaçãoatual • Emseguida, fazumaTranslação (glTranslate …), desenha o circulo com a Translaçãoaplicada) • glPopMatrix() // desempilhou a matrizquetinha antes de glPush..
O uso do glPushMatrix() e glPopMatrix() • Vamossuporquevocêtenhadoisobjetosnacena: Vamossuporquevocêqueira, aomesmo 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 previamente glClear(GL_COLOR_BUFFER_BIT); // Guarda a matriz de transformação corrente na pilha glPushMatrix(); // 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 preto glColor3f(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 pilha glPopMatrix();
O uso do glPushMatrix() e glPopMatrix() // Guarda a matriz de transformação corrente na pilha glPushMatrix(); // 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 escuro glColor3f(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 pilha glPopMatrix(); // 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 cinza glColor3f(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 pilha glPopMatrix(); // Executa os comandos OpenGL glFlush(); }
Tarefa • DesenharváriosobjetosnaTela, contendoiluminação(e iterações com o mouse e teclado, casoqueira) e transformaçõesgeométricaindependentesparacadaobjeto