Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Interação (OpenGL)

Aula sobre Interação (mouse e teclado) com OpenGL para a disciplina de Introdução à Computação Gráfica do curso de Ciência da Computação da UFPB no período 2010.1

  • Be the first to comment

  • Be the first to like this

Interação (OpenGL)

  1. 1. Introdução à Computação Gráfica Aula – Interação com OpenGL Herbet Ferreira herbet@di.ufpb.br 13/05/2010 1
  2. 2. Introdução • Interação – Ações do usuário capturadas pelo sistema para atualizar a cena gráfica; • A GLUT contém funções e palavras reservadas para gerenciar eventos de Mouse e Teclado; • A chamada de glutPostRedisplay(); no final da função é necessária para forçar o re- desenho da cena gráfica; 13/05/2010 2
  3. 3. Interação com Teclado • Comandos do Teclado: – glutKeyboardFunc(Key); // Funções do teclado – glutSpecialFunc(Special); // Teclas especiais • Key  função que determinará a ação de cada tecla (valor alfanumérico) • Special  função que reconhece teclas especiais do teclado (não alfanuméricos) – Associado pela GLUT um valor inteiro 13/05/2010 3
  4. 4. Interação com Teclado • void Key(unsigned char key,int x,int y); – unsigned char key  valor ASCII da tecla; – int x, int y  posição do mouse quando a tecla foi pressionada; • void Special(int key,int x,int y) – int key constante que identifica a tecla; – int x, int y  posição do mouse quando a tecla foi pressionada; 13/05/2010 4
  5. 5. Interação com Teclado Special • GLUT_KEY_DOWN • GLUT_KEY_UP • GLUT_KEY_LEFT • GLUT_KEY_RIGHT • GLUT_KEY_PAGE_UP • GLUT_KEY_PAGE_DOWN • GLUT_KEY_HOME • GLUT_KEY_END • GLUT_KEY_INSERT • GLUT_KEY_F1 ... GLUT_KEY_F12 13/05/2010 5
  6. 6. Aplicação Básica • Tamanho da Tela: 500 x 500 • Inicialização – Fundo Preto – Projeção Perspectiva • Angle = 300 • Aspect = 1 • Near = 0.5 • Far = 400 • Display – Translação  Z = -10 – glutSolidCube(1);  Cor Verde – glutSolidCube(1);  Cor Vermelho 13/05/2010 6
  7. 7. Exercício 1. Construa um programa em OpenGL+glut que faça interação com o teclado usando a função de callback do teclado. Crie interações para rotação com as teclas z, c, x e s e translação com teclas especiais do tipo GLUT_KEY_LEFT, GLUT_KEY_RIGHT, GLUT_KEY_UP e GLUT_KEY_DOWN. 13/05/2010 7
  8. 8. Interação com Mouse • Comandos do Mouse: – void Motion(int x, int y); – void Mouse(int button, int state, int x, int y); • Motion  possível identificar a posição do mouse no plano xy • Mouse  verifica qual botão do dispositivo foi pressionado e em que posição do plano xy 13/05/2010 8
  9. 9. Interação com Mouse • void Motion(int x, int y) – int x, int y  Posição do mouse no plano xy • void Mouse(int button, int state, int x, int y) – int button  GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON e GLUT_RIGHT_BUTTON – int state  GLUT_UP ou GLUT_DOWN – int x, int y  posição do mouse no momento que ocorreu o evento; 13/05/2010 9
  10. 10. Exercício 1. Construa um programa em OpenGL+glut que faça interação com o mouse usando a função de callback do mouse. Crie interações para Zoom-in e Zoom-out com o botão esquerdo do mouse e botão direito. 13/05/2010 10
  11. 11. Z-buffer • Utilizado para calcular a distância do observador e remover superfícies ou partes ocultas de objetos sobrepostos; • Manter para cada pixel um valor de profundidade; • Não esquecer de alocar o z-buffer – glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); • Ao gerar um novo quadro, limpar também o z- buffer: – glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 13/05/2010 11
  12. 12. Z-buffer • Habilitar o Z-buffer: – glEnable(GL_DEPTH_TEST); • Antes da composição da cena, desenhar no buffer de segundo plano; – glDrawBuffer(GL_BACK); • Após a completa composição da cena, descarrega-se o conteúdo do buffer de segundo plano no primeiro com a função; – glutSwapBuffers(); 13/05/2010 12
  13. 13. Exercício 1. Construa um programa em OpenGL+glut que ative o z-buffer na visualização de dois cubos. – Utilizar os exercícios anteriores com interação do mouse e teclado. 2. Entregar todo o exercício na próxima aula; – Código • Interação Teclado e Mouse • Z-Buffer – Printscreens 13/05/2010 13

×