Oitava Lista - Modelo de Iluminação


Aquecimento

  1. Inclua no Makefile os comandos necessários para gerar o executável do programa light.c.
    1. O que acontecerá se retirarmos o comando glEnable(GL_LIGHTING)?
    2. O que acontecerá se retirarmos o comando glEnable(GL_LIGHT0)?
    3. O que acontecerá se retirarmos o comando glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess)? Qual é a função do comando glMaterialfv?
    4. Qual é o modelo de tonalização utilizado? Altere o parâmetro GL_SMOOTH para GL_FLAT no comando glShadeModel e anote o que foi constatado.
    Observação: O programa spots.c demonstra o uso de comandos para especificar as fontes de luz do tipo spot.
  2. Inclua no Makefile os comandos necessários para gerar os executáveis dos programas scene.c e sccolorlight.c.
    1. Compare os dois programas quanto aos efeitos visuais obtidos.
      Dica: Observar os argumentos das variáveis light_ambient, light_diffuse e light_specular.
    2. Em relação ao modelo básico de iluminação apresentado na aula,quais argumentos são afetados pelos parâmetros GL_AMBIENT, GL_DIFFUSE e GL_SPECULAR do comando glLightfv?
    3. Qual é a função do comando glLightModelfv nos programas?
    4. Habilita a fonte de luz LIGHT1 do programa sccolorlight.c. Que tipo de fonte é a fonte LIGHT1? Varie os parámetros de definição desta fonte de luz para ver distintos efeitos visuais.
  3. Inclua no Makefile os comandos necessários para gerar o executável do programa material.c.
    1. Em relação ao modelo de iluminação básico apresentado na aula,quais argumentos são afetados pelos parâmetros GL_AMBIENT, GL_DIFFUSE e GL_SPECULAR do comando glMaterialfv?
    2. Como o parâmetro GL_EMISSION do comando glMaterialfv afeta a aparência visual de um objeto?
    3. Identifique as propriedades de material de cada esfera, ou seja os valores de ka, ks, kd, o expoente da componente especular e a "emissividade" de cada uma delas.
    4. O que significa atribuir distintos valores para as componentes dos vetores ambient, diffuse e specular?
    5. Qual é a função do comando glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view)?
    6. O programa teapots.c é um outro programa que demonstra o uso das funções do pacote Mesa/ OpenGL para definir as propriedades do material de um objeto. Identifique as propriedades de matrial para cada bule.
  4. Inclua no Makefile os comandos necessários para gerar o executável do programa lightlab.c. Este programa permite atestar diversos efeitos visuais decorrentes da interação entre as fontes de luz e os objetos. Como as cores das fontes de luz podem afetar a cor "perceptual" dos objetos?
  5. Inclua no Makefile os comandos necessários para gerar o executável do programa alpha3D.c. Este programa ilustra uma outra alternativa para "emular" efeitos de transparência, além daquela apresentada na sexta lista.
    1. Qual é o papel do comando glDepthMask?
    2. Qual é a opacidade do toro? O que acontecerá se alterarmos este valor?
    3. Qual é a opacidade do cubo? O que acontecerá se alterarmos este valor?
    Observação: O programa blender.c é um outro bom exemplo!
  6. Inclua no Makefile os comandos necessários para gerar o executável do programa shadow.c. Este programa ilustra o uso de stencil buffer para "emular" efeitos de sombra.
    1. Como foram calculados os volumes de sombra?
    2. Como o plano de stencil foi utilizado para gerar sombras adequadamente?
  7. Inclua no Makefile os comandos necessários para gerar o executável do programa reflectdino.c. Este programa ilustra o uso de stencil buffer para "emular" efeitos de reflexão. Leia atentamente os comentários do código e descreva sucintamente o procedimento de geração.
    Observação: O programa halomagic.c é um bom exemplo de efeitos combinados de sombra e reflexão.

Programação

  1. Modifique o programa movelight.c, de forma que a fonte aproxime e afaste do objeto, ao invés de rotacionar em torno dele, e que a intensidade da fonte diminua à medida que se afaste do objeto.
  2. Modifique o programa hidplanes.c da sétima lista, de forma que os planos sejam translúcidos. Os valores de opacidade são escolhidos a critério de cada um.
  3. Modifique o programa shadow.c, de forma que o observador gira 15 graus em torno da cena cada vez que se aperta a barra de espaço.
  4. Altere a cena que você gerou na terceira lista, adicionando as propriedades de material para cada objeto e supondo a taça seja transparente/translúcida. Inclua ainda efeitos de sombra e reflexão.

  5. Voltar para a lista anterior.
    Avançar para a próxima lista.