ine 5341

Programa

OpenGL

Trabalhos 2001

Trabalhos 2002

Links

Bibliografia

Plano de Ensino

Parte II - Computação Gráfica Avançada

Visualização Realística em 3D, z-Buffering e Raytracing

Modelando a Iluminação de um Objeto

O modelo de iluminação de Phong [PHO75] é o modelo de iluminação provavelmente mais utilizado em computação gráfica hoje em dia. No modelo de Phong, a luz em qualuqer ponto é composta por três componentes: luz difusa, luz especular e luz ambiente. Essas três componentes são aditivas e determinam o aspecto final da iluminação e da cor de um determinado ponto na cena ou da superfície de um determinado polígono plano contido nela. Abaixo vemos um bule renderizado com o raytracer POV-Ray, onde as três componentes estão presentes em diferentes graus. O aspecto realista, "convincente", da renderização do bule depende destas três componentes estarem representadas da forma adequada. Veremos adiante a forma de cálculo de cada uma destas componentes.


Figura 1: Renderização de um Bule contendo todas as três componentes do Modelo de Phong

Cada uma dessas componentes, a intensidade com que ela é refletida, depende em maior ou menor grau do ângulo de reflexão do raio de luz que incide sobre o objeto, ou seja do ângulo com que a luz inside sobre a superfície refletora e também do ângulo realizado com a superfície pelos raios refletidos para que atinjam o observador. O objetivo deste capítulo é ensiná-lo a calcular os efeitos de iluminação causados por ângulos entre a luz incidente sobre um objeto e o que você enxerga.

Isto pode ser mostrado pela figura 2:


Figura 2: Raios de luz que chegam ao observador a partir de uma fonte localizada na cena e provêm a impressão de cor, brilho e intensidade luminosa do objeto.

Para que seja possível o cálculo dos ângulos de reflexão de forma eficiente e gerar intensidades de iluminação (luz difusa) e reflexos (luz especular) realistas, é necessário que se utilize uma representação simples e compacta do ângulo de inclinação da superfície em questão.

Para isso, se calcula para cada uma das superfícies do objeto e ser renderizado, um vetor normal a esta superfície. Este vetor facilita o cálculo do reflexo, pois reduz a tarefa a calcular em tempo real os ângulos a e b, mostrados na figura 3 e a partir daí, a intensidade de luz refletida, o que é bem mais simples e rápido do que determinar a inclinação da superfície em tempo real.


Figura 3: Um vetor normal a uma superfíce.

Quando estivermos realizando exercícios de implementação com OpenGL, veremos um algoritmo simples e fácil de se implementar  para cálculo dessas normais e como inserir este valor em um sistema de renderização de superfícies com reflexos.

A seguir veremos as formas de cálculo de cada uma das componentes da "luz virtual" em Computação Gráfica.


Luz Difusa

A componente difusa do modelo de Phong representa reflecções que não são direcionais em sua natureza. Cada objeto possue características de reflectância difusa, codificadas como um coeficiente de reflectância difusa, que determinam quanta luz é refletida por sua superfície. A quantidade de luz difusa refletida é independente da direção da qual a superfície é vista, uma vez que superfícies que refletem de forma difusa refletem de forma igual em todas as direções. A intensidade da reflecção difusa varia apenas com o cosseno do ângulo entre a normal da superfície e a fonte de luz, que nos indica a quantidade de luz que incide sobre aquele ponto.


Figura 4: Objeto renderizado com apenas a reflexão difusa habilitada.


Figura 5: Forma de determinmação da reflexão difusa.

Luz Especular

A componente especular de um objeto simula reflexos extremamente direcionais, sem que a cor dos raios seja afetada pela cor da superfície, como num espelho, e nos indica o quão "brilhante" este objeto é. Ela serve para simular a aparência de objetos de superfície muito polida e que refletem a luz sem modificar a sua cor, como objetos metálicos ou objetos esmaltados.  Da mesma forma que nas reflexões difusas, toda superfície possue também um coeficiente de reflectividade especular  que determina quanta luz é refletida por este objeto. A intensidade da reflexão especular é proporcional ao cosseno do angulo entre a direção de visada e a direção de reflexão da luz. Além disso existe ainda um expoente especular, que determina o quão rápido o reflexo especular decai quando o ângulo de visada se afasta do ângulo de reflexão. Este parâmetro determina o quão locais serão os reflexos e nos permite simular com perfeição a característica dos reflexos de superfícies brilhantes de serem extremamente localizados e restritos, como mostra a figura 6 abaixo, onde vemos o bule renderizado apenas com a sua componente especular habilitada. Observe que o bule aparece como preto e o reflexo aparece na cor da fonte de luz, branco. A cor vermelha do bule não influencia a componente especular.


Figura 6: Objeto de cor vermelha renderizado com apenas a componente especular habilitada.


Figura 7: Relação entre vref e vobs.

A figura 7 acima ilustra bem a relação entre os vetores vref e vobs. O vetor de reflecção é calculado com base nas leis da ótica, obtendo-se o ângulo que faz o vetor que aponta para a fonte de luz com a normal e fazendo-se o vetor de luz refletida ter exatamente o mesmo ângulo, mas no sentido contrário. Este é de fato o caminho da reflexão, como definida pelas leis físicas. A intensidade com a qual o observador vai enxergar este reflexo depende de o quão grande é o ângulo que faz a sua direção de visão com o raio refletido. Quanto maior este ângulo, tanto menos luz refletida ele será capaz de ver.

Luz Ambiente

A componente de luz ambiente do modelo de Phong foi adicionada para levar em consideração luz gerada por interações inter-objetos. Em ambientes reais, superfícies que não são iluminadas diretamente geralmente não se encontram completamente escuras. Luz gerada pelos reflexos difusos e especulares de outras superfícies e também pela difusão da luz na atmosfera iluminam estas áreas. O efeito atmosférico é fácil de se comprovar ao se comparar a característica de negritude quase absoluta das sombras mostradas em fotos da Lua, onde não há atmosfera para difundir a luz, com fotos de um ambiente com alta taxa de humidade atmosférica, que difunde a luz, como a floresta amazônica. Calcular estas interações entre objetos e das fontes de luz e dos objetos com a atmosfera é exremamente complexo e se chama método da radiância. A não ser que estejamos desenvolvendo uma aplicação onde isto é de suma importância, podemos utilizar um enfoque simplificado para tratar este problema, considerando a quantidade de luz que queremos que este objeto receba de seu ambiente como se fosse uma luz emitida pelo próprio objeto. Para modelar isto, o modelo de Phong utiliza um termo de iluminação ambiente constante que, quando multiplicado pela coeficiente de reflectividade ambiente, nos dá a componente de luz ambiente da iluminação deste objeto. 


Figura 8: Bule renderizado apenas com a luz ambiente habilitada e o coeficiente de reflectância ambiente setado para um valor extremamente alto. Observe que o bule se comporta como um objeto emissor de luz, emitindo luz ambiente de forma igual em todas as direções.

Integrando as Componentes

O modelo de Phong completo é implementado através da soma das três componentes apresentadas acima:

Bibliografia e Leitura Adicional
O modelo de Phong está descrito em: [PHO75] - Phong, Bui-Tuong, "Illumination for Computer-Generated Pictures", Communications of the ACM, vol. 18, no. 3, pp. 311-317, 1975. 
Quem desejar se aprofundar mais pode começar pela documentação de implementação do raytracer POV-Ray, onde o modelo utilizado está bastante bem descrito.