A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Animações Independentes na Mesma Cena

Apresentações semelhantes


Apresentação em tema: "Animações Independentes na Mesma Cena"— Transcrição da apresentação:

1 Animações Independentes na Mesma Cena

2 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

3 O uso do glPushMatrix() e glPopMatrix()
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..

4 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..

5 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

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

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

8 O uso do glPushMatrix() e glPopMatrix()
// 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(); }

9 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


Carregar ppt "Animações Independentes na Mesma Cena"

Apresentações semelhantes


Anúncios Google