animações independentes na mesma cena

9
Animações Independentes na Mesma Cena

Upload: joshwa

Post on 20-Feb-2016

27 views

Category:

Documents


0 download

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

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