1 / 32

OpenGL

OpenGL. Modulo 2E: - transformações - cores - luz Marcus G. Pivatto. Conteúdo. realidade virtual ? ( linguagens 3D & resultados) projeções e seus efeitos rotação, translação, escala animação, problemas hardware/software atribuição de cores definições de luz.

tanuja
Download Presentation

OpenGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL Modulo 2E: - transformações - cores - luz Marcus G. Pivatto

  2. Conteúdo • realidade virtual ? (linguagens 3D & resultados) • projeções e seus efeitos • rotação, translação, escala • animação, problemas hardware/software • atribuição de cores • definições de luz

  3. TITLE: warm_up Megapov 0.7 • NAME: Norbert Kern, Germany • TOPIC: Insects and Spiders • PARSE: 11min 40s TRACE: 101 h 18 min MEMORY: 1110 MB peak • HARDWARE USED: 1,4 GHz Athlon C / 1 GB RAM

  4. TITLE: The wet bird • NAME: Gilles Tran, France • TOPIC: City • RENDER TIME: 21 h • HARDWARE USED: Pentium II 350 • Megapov 0.4

  5. M.C. Escher (1898- 1972) • A Dutch graphic artist, most recognized for spatial illusions, impossible buildings, repeating geometric patterns (tessellations), and his incredible techniques in woodcutting and lithography.

  6. Projeções • visão  percepção • real  virtual • 2D  3D • TITLE: That's Impossible • NAME: Joe Wise • COUNTRY: USA

  7. Ortogonal • A Projeção Ortogonal é selecionada pelo comando glOrtho e utiliza seis parâmetros que definem um volume de visão. glOrtho(left,right,bottom,top,near,far);

  8. Perspectiva • A percepção das distâncias entre os objetos e o ponto de visão é o efeito característico da projeção em perspectiva. • Comando glFrustum, define o volume de visão em forma de tronco de pirâmide ( frustum ). glFrustrum(left,right,bottom,top,near,far); ou gluPerspective(angle,aspect,near,far);

  9. Exemplo - Ortogonal • Observar o sentido de rotação do disco colorido!

  10. Exemplo - Perspectiva • Observar o sentido de rotação do disco colorido!

  11. Transformações - Comandos • Translação • Rotação • Escala • Reinicialização • Armazenar e restaurar um “estado de transformação” anterior.

  12. Estado de Transformação • A idéia central as transformações em OpenGL é que elas são cumulativas, ou seja, podem ser aplicadas umas sobre as outras. • Uma transformação geométrica de OpenGL é armazenada internamente em uma matriz. A cada tranformação esta matriz é alterada e usada para desenhar os objeto a aprtir daquele momento, até que seja novamente alterada.

  13. Matrizes de Transformação • O OpenGL mantém três matrizes de transformação: ModelView, Projection e ViewPoint que são usadas para transformar um vértice qualquer dado em um ponto da janela de visualização. • Cada vértice especificado é multiplicado por estas três

  14. Pipeline de Transformação • glMatrixMode executado com uma das constantes: GL_MODELVIEW, GL_PROJECTION ou GL_TEXTURE.

  15. O GL_Fotógrafo • Arrumar o tripé e posicionar a câmera para fotografar a cena - equivalente a especificar as transformações de visualização ( função gluLookAt ); • Arrumar a cena para ser fotografada, incluindo ou excluindo objetos/pessoas - equivalente à etapa de modelagem (inclui as tranformações geométricas, glTranslatef, glScalef, glRotatef, e o desenho dos objetos); • Escolher a lente da câmera ou ajustar o zoom - equivalente a especificar as transformações de projeção ( função gluPerspective ); • Determinar o tamanho final da foto (maior ou menor) - equivalente a especificar a viewport (funções glViewport e ChangeSize).

  16. Exemplo de Código glMatrixMode( GL_MODELVIEW ); // Define a Matriz alvo glLoadIdentity(); // re-inicializa a matriz DesenhaObjeto(); // Desenha o objeto na posição // correspondente às suas coordenadas // originais                 glTranslatef(10,10,10); DesenhaObjeto(); // Desenha o objeto descolado de 10                  // unidades em cada eixo glTranslatef(10,10,10); DesenhaObjeto(); // Desenha o objeto descolado de 20 // unidades em cada eixo // LEMBRE-SE, AS TRANSFORMAÇÕES SÃO // CUMULATIVAS

  17. Transformações - Translação     Para efetuar uma translação há o comando: glTranslatef(tx, ty, tz) que move todas as coordenadas dos objetos ao longo dos eixos coordenados.

  18. Transformações - Rotação    Para efetuar uma rotação há o comando: glRotatef(Angulo, x, y, z) que gira o objeto ao redor do vetor (x,y,z). O giro é de Angulo graus, no sentido anti-horário.

  19. Transformações - Escala   Para efetuar uma escala há o comando: glScalef(ex, ey, ez) que altera a escala do objeto ao logo dos eixos coordenados.

  20. Reinicializando as Tranformações    Para permitir que a transformação atual seja reinicializada há o comando: glLoadIdentity().

  21. Limitando o escopo das Tranformações   Para permitir que uma transformação valha somente em um certo trecho de prograam e assim não altere o que está sendo desenhado depois, há os comados: glPushMatrix() e glPopMatrix(). A idéia é que o glPushMatriz armazene as transformações atuais em um pilha interna do OpenGL e que estas transformações possam ser retiradas depois por um glPopMatriz.

  22. Exercício 1 Inserir os comandos: glLoadIdentity glPushMatrix glPopMatrix glRotatef glTransalef adequadamente no código fornecido, de maneira a obter um disco branco, girando como uma moeda sobre a mesa.

  23. Cor – Conceitos Básicos

  24. Cor – Comandos Básicos • glClearColor(1.0f, 0.0f, 0.0f, 0.0f); define a cor ( Red, Green, Blue, Alpha ) utilizada ao se apagar a janela • glClear(GL_COLOR_BUFFER_BIT); apaga a janela com a cor definida em glGlearColor • glColor3f(1.0f, 0.0f, 0.0f); define a cor ( Red, Green, Blue ) com a qual os próximos objetos serão desenhados

  25. Cada vértice tem cor própria ! glBegin( GL_TRIANGLES ); // red glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.000f, 1.000f, -5.000f); // green glColor3f(0.0f,1.0f,0.0f); glVertex3f(-0.866f, -0.500f,-5.000f); // blue glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(0.866f, -0.500f, -5.000f); glEnd();

  26. Vsync? f H = 96kHz horizontal scanning frequency Vres = 768 pixel Hres = 1024 pixel Refresh rate = f H / Hres * 0.95 = 89 Hz  Vsync

  27. Luz OpenGL considera que a luz é dividida em quatro componentes independentes: • Ambiente: resultado da luz refletida no ambiente; é uma luz que vem de todas as direções; • Difusa: luz que vem de uma direção, atinge a superfície e é refletida em todas as direções; assim, parece possuir o mesmo brilho independente de onde a câmera está posicionada; • Especular: luz que vem de uma direção e tende a ser refletida numa única direção; • Emissiva: simula a luz que se origina de um objeto; a cor emissiva de uma superfície adiciona intensidade ao objeto, mas não é afetada por qualquer fonte de luz; ela também não introduz luz adicional da cena.

  28. Materiais • A cor do material de um objeto depende da porcentagem de luz vermelha, verde e azul incidente que ele reflete. Para determiná-la deve-se multiplicar o coeficiente de reflexão (MR, MG, MB) do material pelos componentes (LR, LG, LB) de intensidade da luz incidente. luz que chega no observador é dada por: (LR.MR, LG.MG, LB.MB)

  29. Efeito da luz sobre o objeto Abaixo o memo modelo com todos parâmetros de luz definidos

  30. Parâmetros de luz • glEnable(GL_LIGHTING);habilita a iluminação GL_COLOR_MATERIAL atribui a cor para o material a partir da cor corrente • glShadeModel(GL_SMOOTH); estabelece o modelo de tonalização (GL_FLAT, GL_SMOOTH) • glMaterialfv(GL_FRONT, GL_SPECULAR, especularidade); estabelece os parâmetros do material que serão usados pelo modelo de iluminação (GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_SHININESS, GL_AMBIENT_AND_DIFFUSE ou GL_COLOR_INDEXES)

  31. Parâmetros de luz – cont. • glLightModelfv(GL_LIGHT_MODEL_AMBIENT, luzAmbiente); estabelece os parâmetros do modelo de iluminação usado por OpenGL (GL_LIGHT_MODEL_AMBIENT, GL_LIGHT_MODEL_LOCAL_VIEWER ou GL_LIGHT_MODEL_TWO_SIDE;) • glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente); estabelece os parâmetros da fonte de luz para uma das oito fontes de luz disponíveis de GL_LIGHT0 a GL_LIGHT7 (GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_POSITION, GL_SPOT_DIRECTION, GL_SPOT_EXPONENT, GL_SPOT_CUTOFF. GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION);

  32. Bibliografia / Referências Sites diversos: • http://www.worldofescher.com ( World of Escher ) • http://www.irtc.org ( Internet Raytracing Competition ) • http://www.povaray.org ( Persistence of Vision Raytracer ) Páginas de Professores: • http://www.inf.pucrs.br/~manssour/OpenGL/index.html • http://www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/OpenGL.html • http://www.cesec.ufpr.br/~mcunha/opengl/ • http://astronomy.swin.edu.au/~pbourke/opengl/ Documentos e Livros: • The OpenGL Graphic System: A Specification ( Version 1.4 ) • The OpenGL Graphics System Utility Library ( Version 1.3 ) • The OpenGL Utility Toolkit Programming Interface ( API Version 3 ) • OpenGL Reference Manual 2nd. ed. ( Version 1.1 )

More Related