1 / 11

Computação Gráfica

Computação Gráfica. Iluminação e Texturas. Iluminação. Para que o OpenGL ilumine a cena é necessário: Na fase de setup: Indicar o modelo de shading : FLAT ou SMOOTH Indicar as características das fontes de luz Activar a iluminação Na fase de rendering :

liv
Download Presentation

Computação Gráfica

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. Computação Gráfica Iluminação e Texturas

  2. Iluminação • Para que o OpenGL ilumine a cena é necessário: • Na fase de setup: • Indicar o modelo de shading: FLAT ou SMOOTH • Indicar as características das fontes de luz • Activar a iluminação • Na fase de rendering: • Especificar os materiais dos objectos • Indicar as normais dos modelos DI-UM Computação Gráfica 07/08

  3. Modelo de Shading • glShadeModel (opção) • Opção = GL_FLAT ou GL_SMOOTH DI-UM Computação Gráfica 07/08

  4. Fonte de Luz • Uma fonte de luz direccional é especificada indicando o vector direcção: float l_dir={0., 1., 0., 0.}; // w=0. -> vector glLightfv (GL_LIGHT0, GL_POSITION, l_dir); • A intensidade difusa é especificada: float l_diff={1., 1., 1.}; glLightfv (GL_LIGHT0, GL_DIFFUSE, l_dir); • A luz ambiente presente na cena: float amb={0.2, 0.2, 0.2}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); DI-UM Computação Gráfica 07/08

  5. Activar iluminação • glEnable (GL_LIGHT0); • glEnalble (GL_LIGHTING); DI-UM Computação Gráfica 07/08

  6. Especificar os materiais • Antes de desenhar cada objecto indicar ao OpenGL que se devem usar as propriedades dos materiais dos objectos. • Para a componente de reflexão difusa: glColorMaterial(GL_FRONT, GL_DIFFUSE); • Usar a cor do objecto: glEnable(GL_COLOR_MATERIAL); DI-UM Computação Gráfica 07/08

  7. Normais • Ao especificar cada vértice especifica-se a normal: glNormal3f (Nx, Ny, Nz); glVertex3f (Vx, Vy, Vz); • No caso do terreno a função terrainLoadFromImage (char *fname, int normals)calcula as normais para cada vértice se normals!=0 • A função terrainCreateDL() encarrega-se de especificar as normais se estas tiverem sido previamente calculadas DI-UM Computação Gráfica 07/08

  8. Exercício • Adapte a aplicação desenvolvida nas sessões anteriores para que: • Use uma fonte de luz direccional • Permita aumentar/diminuir a componente ambiente pressionando as teclas ‘A’/’a’ DI-UM Computação Gráfica 07/08

  9. Transformações das texturas As texturas podem ser transformadas tal como a geometria. Para especificar transformações a aplicar a texturas usar: glMatrixMode(GL_TEXTURE); As transformações especificadas a seguir aplicar-se-ão às texturas. DI-UM Computação Gráfica 07/08

  10. Transformações das texturas • Por exemplo, para rodar uma textura mapeada num polígono de um ângulo dependente da frame actual (contada usando a variável step) usar: glMatrixMode(GL_TEXTURE); glPushMatrix(); glRotatef(step/100.,0.,0.,1.); glMatrixMode(GL_MODELVIEW); • Após o desenho do polígono fazer o reset à matriz: glMatrixMode(GL_TEXTURE); glPopMatrix(); glMatrixMode(GL_MODELVIEW); DI-UM Computação Gráfica 07/08

  11. Exercício • Adapte a aplicação desenvolvida nas sessões anteriores para que: • Desenhe um polígono horizontal (plano XZ) com uma textura representando água mapeada (ficheiro water.tga) • A coordenada YY deste polígono varie entre 0 e 100 usando as teclas ‘w’/‘W’ • Esta textura sofra uma rotação de frame para frame simulando água DI-UM Computação Gráfica 07/08

More Related