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.
|
|