Iluminação e Sombreamento Leandro Tonietto Computação Gráfica Unisinos ltonietto@unisinos.br http://professor.unisinos.br/ltonietto/jed/cgr/iluminacao.pdf ago-11 Baseado no material do prof. Christian Hofsetz e de Cristiano Franco 30-Mar-11 Leandro Tonietto
Sumário Introdução Modelos de iluminação Luz ambiente Reflexão difusa Atenuação atmosférica Atenuação especular Modelo de iluminação de Phong Múltiplas fontes de Luz Modelos de sombreamento de polígonos Flat shading Interpolated shading Polygon-mesh shading Gouraud shading Phong shading Problemas com sombreamento por interpolação Iluminação em OpenGL 30-Mar-11 Leandro Tonietto 2
Introdução Idéia é determinar uma cor numa superfície, considerando suas propriedades (cor, textura, material,...) e fatores externos, como a luz que incide sobre a superfície, num determinado ponto da mesma. Shading model x ilumination model Modelo de sombreamento determina quando o modelo de iluminação é aplicado e quais argumentos ele recebe. Diversos modelos são propostos para iluminação. Veremos modelos mais simples e que resolvem o problema de forma eficiente e com menor custo computacional. 30-Mar-11 Leandro Tonietto 3
Modelos de iluminação Estes modelos determinam como a luz interfere (como é recebida) numa superfície. Isto implica em alterações na visualização do objeto, ou seja, em como ele será renderizado. Dependendo da luz que incide sobre um objeto, ele muda completamente a sua colorização. Fotografia que mostra um mesmo objeto do mundo real iluminado com duas luzes diferentes. 30-Mar-11 Leandro Tonietto 4
Luz ambiente Num modelo de iluminação ambiente, fatores externos de iluminação são ignorados; um objeto é desenhado apenas com a cor que é intrínseca a ele. Apenas a cor dele é renderizada. Imaginem retirada de [2]: cena renderizada com iluminação ambiente apenas 30-Mar-11 Leandro Tonietto 5
Luz ambiente Este é o modelo de iluminação mais simples possível: um objeto que é iluminado por si mesmo. Equação de iluminação: I = k i I é a intensidade resultante k i é a intensidade intrínseca do objeto Processo de calcular a equação de iluminação em um ponto também chama-se iluminar um objeto. 30-Mar-11 Leandro Tonietto 6
Luz ambiente Agora, ao invés de luminosidade própria, consideremos a existência de uma fonte de luz sem direção específica, resultante das reflexões entre as muitas superfícies presentes no ambiente: conhecida como luz ambiente. Equação: I = I a k a I é a intensidade resultante I a é a intensidade da luz ambiente, constante para todos os objetos da cena k a é o coeficiente de reflexão ambiente [0..1]. É o quanto da luz ambiente é refletida pelo objeto. É a propriedade do material do objeto. 30-Mar-11 Leandro Tonietto 7
Reflexão Difusa A intensidade iluminação dos objetos é dada pela intensidade da luz ambiente. Entretanto, até momento, eles ainda são iluminados de maneira uniforme ao longo de sua superfície. Ou eles são mais claros, ou são mais escuros. Considere agora uma fonte de luz pontual, cujos raios emanam uniformemente de um único ponto. O iluminação das partes do objeto varia de acordo com a distância e a direção em relação ao ponto de luz. 30-Mar-11 Leandro Tonietto 8
Reflexão Difusa Alguns materiais apresentam reflexão difusa Essas superfícies refletem a energia luminosa igualmente, sob qualquer ângulo de visão, porque elas refletem luz com igual intensidade em todas as direções. O brilho dependerá somente do ângulo formado entre a direção da fonte da luz e a normal da superfície Exemplo de reflexão difusa em [2]. 30-Mar-11 Leandro Tonietto 9
Reflexão Difusa Quantidade de luz incidente em uma área infinitesimal da é proporcional ao cosseno Θ Quantidade de área vista é inversamente proporcional ao cosseno do ângulo Quantidade de luz refletida para o observador é diretamente proporcional ao cosseno do ângulo entre a direção do observador V e N (Lei de Lambert) Θ Logo, esses dois fatores se cancelam Θ Ex: Quando o ângulo de visão cresce, o observador vê mais área, mas a quantidade de luz por área é proporcionalmente menor Θ 30-Mar-11 Leandro Tonietto 10
Reflexão Difusa Sendo assim, reflexão difusa independe da direção do observador sendo proporcional somente ao cosseno de Θ. I = I p k d cos Θ I p Intensidade da fonte de luz k d coeficiente de reflexão difusa (constante [0..1]) Considerando vetores normalizados: I = I p k d (N.L) Combinando com componente de ambiente I = I a k a + I p k d (N.L) 30-Mar-11 Leandro Tonietto 11
Reflexão Difusa 30-Mar-11 Leandro Tonietto 12
Reflexão Difusa Caso projetarmos duas superfícies paralelas de material idêntico, iluminadas a partir do observador, equação atual não distinguirá onde termina uma superfície e onde começa outra, não importando a distância. Para simular esta diferença de distância, criou-se um fator de atenuação da fonte de luz (f att ) I = I a k a + f att I p k d (N.L) 30-Mar-11 Leandro Tonietto 13
Reflexão Difusa Atenuação da fonte de luz (f att ): X A primeira equação é a uma solução mais trivial para atenuação um cálculo linear de distância. Entretanto, na prática, se a luz está mais longe há pouca variação em os objetos; se ela está mais próxima, ela pode variar mais. c 1, c 2 e c 3 são constantes definidas pelo usuário. 30-Mar-11 Leandro Tonietto 14
Reflexão Difusa Considerando as componentes de cor, a fórmula deve multiplicar cada termo pela cor do objeto, assim como é percebido pelo ambiente e pela cor da difusa. Portanto: I λ = I aλ k aλ O λ + f att I pλ k dλ O dλ (N.L) Onde: I λ é a intensidade resultante para cada canal RGB λ representa um canal por vez I aλ é a intensidade da luz ambiente para cada canal RGB I pλ é a intensidade resultante para cada canal RGB O λ é cor do objeto para cada canal RGB O dλ é cor da luz difusa para cada canal RGB 30-Mar-11 Leandro Tonietto 15
Atenuação atmosférica Simulação de atenuações atmosféricas ou condições de visibilidade do ambiente (depth cueing): fog por exemplo. Situações aonde os objetos possuem brilho diferente conforme a profundidade. Similar a idéia de atenuação da fonte luz. Idéia é modificar uma Intensidade já calculada Modificação será determinada por fatores de escala (sf e sb) que indicarão o blending da intensidade com uma cor sugerida para o efeito da atenuação Sugestão de leitura a respeito de depth cueing: http://www.gamedev.net/reference/articles/article861.asp 30-Mar-11 Leandro Tonietto 16
Atenuação atmosférica I λ = S 0 I λ + (1-S 0 )I dcλ S 0 é calculado a partir do Z do ponto I dcλ é a cor do fator de atenuação S 0 = S b + (Z 0 Z b )-(S f -S b ) (Z f Z b ) Distância da luz é constante, Ia=Ip=1.0; ka=0.1; kd=0.9; zf=1.0; zb=0.0; sf=1.0; sb=0.1; raio=0.09; z=1.0, 0.77, 0.55, 0.32, 0.09 30-Mar-11 Leandro Tonietto 17
Reflexão especular Círculos brilhantes (highlight) que aparecem em superfícies Para observar: Ilumine uma maçã vermelha com uma luz branca Aparecerá um highlight, causado pela reflexão especular Neste ponto, a maçã não parece vermelha, e sim branca, a cor da luz incidente Movimentando a cabeça nota-se que o highlight também move-se Superfícies refletem luz de forma diferente em diferentes direções Portanto, o observador recebe a cor da reflexão da luz no objeto. 30-Mar-11 Leandro Tonietto 18
Reflexão especular Phong desenvolveu em 1975, um modelo para a parcela de reflexão especular que assumia que: Máxima reflexão especular ocorre quando α é zero e cai rapidamente quando α cresce Essa mudança é representada por cos n α, onde n é o expoente de reflexão especular Valores de n variam de 1 até centenas, dependendo do material simulado 30-Mar-11 Leandro Tonietto 19
Reflexão especular Acrescentando a especular na equação (considerando-se os vetores normalizados): I λ = I aλ k aλ O λ + f att I pλ [k dλ O dλ (N.L) + k s (R.V) n ] incluindo a cor especular I λ = I aλ k aλ O λ + f att I pλ [k dλ O dλ (N.L) + k s O sλ (R.V) n ] Onde: I λ é a intensidade resultante para cada canal RGB I aλ é a intensidade da luz ambiente para cada canal RGB I pλ é a intensidade resultante para cada canal RGB O λ é cor do objeto para cada canal RGB k d é o coeficiente de contribuição da difusa k s é o coeficiente de contribuição da especular O dλ é cor da luz difusa para cada canal RGB O sλ é cor da luz para especular 30-Mar-11 Leandro Tonietto 20
Reflexão especular Efeito da especular: Ia=Ip=1.0, Ka=0.1, Kd=0.45 n=3.0, 5.0, 10.0, 27.0, 200.0 Ks=0.1, 0.25, 0.5 30-Mar-11 Leandro Tonietto 21
Reflexão especular Múltiplas fontes de luz I λ = I aλ k a O λ + Σ f att i I pλi [k d O dλ (N.L i ) + k s O sλ (R i.v)n ] 1 i m 30-Mar-11 Leandro Tonietto 22
Modelos de sombreamento Como preencher um polígono considerando aspectos de iluminação? Solução 1: uma idéia é calcular a normal em cada ponto visível da superfície e aplicar um modelo de iluminação para cada ponto (força bruta). Problema: Custo computacional é muito elevado. Solução 2: modelos de sombreamento. Executam o preenchimento do polígono de forma eficaz e eficiente. 30-Mar-11 Leandro Tonietto 23
Modelos de sombreamento Modelos estudados: Flat shading ou constant shading Interpolated shading Polygon mesh shading Gouraud Shading Phong Shading 30-Mar-11 Leandro Tonietto 24
Flat shading 30-Mar-11 Leandro Tonietto 25
Flat shading Neste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. 30-Mar-11 Leandro Tonietto 25
Flat shading Neste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. O modelo de iluminação é aplicado uma vez para cada polígono. 30-Mar-11 Leandro Tonietto 25
Flat shading Neste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. O modelo de iluminação é aplicado uma vez para cada polígono. Abordagem torna-se válida diante das seguintes condições: 30-Mar-11 Leandro Tonietto 25
Flat shading Neste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. O modelo de iluminação é aplicado uma vez para cada polígono. Abordagem torna-se válida diante das seguintes condições: Fonte de luz situa-se no infinito, então N.L é constante ao longo da face 30-Mar-11 Leandro Tonietto 25
Flat shading Neste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. O modelo de iluminação é aplicado uma vez para cada polígono. Abordagem torna-se válida diante das seguintes condições: Fonte de luz situa-se no infinito, então N.L é constante ao longo da face Observador situa-se no infinito, então N.V é constante ao longo da face 30-Mar-11 Leandro Tonietto 25
Flat shading Neste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. O modelo de iluminação é aplicado uma vez para cada polígono. Abordagem torna-se válida diante das seguintes condições: Fonte de luz situa-se no infinito, então N.L é constante ao longo da face Observador situa-se no infinito, então N.V é constante ao longo da face O polígono representa uma superfície sendo modelada e não uma aproximação para uma superfície curva 30-Mar-11 Leandro Tonietto 25
Flat shading Neste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. O modelo de iluminação é aplicado uma vez para cada polígono. Abordagem torna-se válida diante das seguintes condições: Fonte de luz situa-se no infinito, então N.L é constante ao longo da face Observador situa-se no infinito, então N.V é constante ao longo da face O polígono representa uma superfície sendo modelada e não uma aproximação para uma superfície curva Se duas primeiras condições são falsas, precisamos de algum método para determinarmos L e V, como centro do polígono ou primeiro vértice 30-Mar-11 Leandro Tonietto 25
Flat shading zneste modelo de preenchimento (ou sombreamento), a cor de todos os pontos de polígono é constante. O modelo de iluminação é aplicado uma vez para cada polígono. Abordagem torna-se válida diante das seguintes condições: Fonte de luz situa-se no infinito, então N.L é constante ao longo da face Observador situa-se no infinito, então N.V é constante ao longo da face O polígono representa uma superfície sendo modelada e não uma aproximação para uma superfície curva Se duas primeiras condições são falsas, precisamos de algum método para determinarmos L e V, como centro do polígono ou primeiro vértice 30-Mar-11 Leandro Tonietto 25
Interpolated shading Proposto por Wylie, Romney, Evans e Erdahl em 1967 Informação de sombreamento é interpolada linearmente ao longo de um triângulo a partir dos valores determinados para seus vértices Interpolação do sombreamento não é fisicamente correta 30-Mar-11 Leandro Tonietto 26
Polygon mesh shading Problemas de superficíes curvas: aparência facetada. Flat Shading e Interpolated Shading geram resultados com essas características Efeito de Mach Band Diferença da intensidade em uma aresta é acentuada se existe uma descontinuidade de uma intensidade Causado por um fenômeno ótico Métodos apresentados até aqui apresentam esse efeito Aplicam-se a cada polígono individualmente 30-Mar-11 Leandro Tonietto 27
Polygon mesh shading Polígonos sombreados individualmente em [2]. 30-Mar-11 Leandro Tonietto 28
Polygon mesh shading Existem dois modelos para malhas poligonais que aproveitam as informações fornecidas pelos polígono adjacentes para simular uma superfície suave Gouraud Shading Phong Shading 30-Mar-11 Leandro Tonietto 29
Gouraud shading Também conhecido como sombreamento por interpolação de intensidade ou sombreamento por interpolação de cor Elimina descontinuidades de intensidade Não elimina completamente mudanças de intensidade Estende conceito de sombreamento interpolado, considerando a superfície e não cada polígono individualmente 30-Mar-11 Leandro Tonietto 30
Gouraud shading Necessita da normal de cada vértice Pode-se obter esta normal fazendo a média entre as normais das superfícies às quais o vértice pertence Ver slides do Christian 30-Mar-11 Leandro Tonietto 31
Referências bibliográficas 1. Slides sobre CG dos professores: Christian Hofsetz, Cristiano Franco, Marcelo Walter e Soraia Musse. 2. FOLEY!! 3. WRIGHT Jr., Richard S; LIPCHAK, Benjamin; HAEMEL, Nicholas. OpenGL Superbible: Comprehenive Tutorial and Reference. 4 ed. Addison-Wesley, 2007. 30-Mar-11 Leandro Tonietto 32