Animações Independentes na Mesma Cena

9
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 Presentation

Transcript of Animações Independentes na Mesma Cena

Page 1: Animações Independentes na Mesma Cena

Animações Independentes na Mesma Cena

Page 2: 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

Page 3: Animações Independentes na Mesma Cena

• 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()

Page 4: Animações Independentes na Mesma Cena

• 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()

Page 5: 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

Page 6: Animações Independentes na Mesma Cena

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();

Page 7: Animações Independentes na Mesma Cena

// 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()

Page 8: Animações Independentes na Mesma Cena

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()

Page 9: Animações Independentes na Mesma Cena

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