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

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

Computação Gráfica Iluminação e Texturas.

Apresentações semelhantes


Apresentação em tema: "Computação Gráfica Iluminação e Texturas."— Transcrição da apresentação:

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 glNormal3f (Nx, Ny, Nz);
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: glPopMatrix(); 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


Carregar ppt "Computação Gráfica Iluminação e Texturas."

Apresentações semelhantes


Anúncios Google