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

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

António Ramires Fernandes + Luís Paulo Santos - Computação Gráfica 08/09 Computação Gráfica Iluminação e Texturas.

Apresentações semelhantes


Apresentação em tema: "António Ramires Fernandes + Luís Paulo Santos - Computação Gráfica 08/09 Computação Gráfica Iluminação e Texturas."— Transcrição da apresentação:

1 António Ramires Fernandes + Luís Paulo Santos - Computação Gráfica 08/09 Computação Gráfica Iluminação e Texturas

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

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

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 4

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

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 6

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 7

8 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

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 9

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 10

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 11


Carregar ppt "António Ramires Fernandes + Luís Paulo Santos - Computação Gráfica 08/09 Computação Gráfica Iluminação e Texturas."

Apresentações semelhantes


Anúncios Google