Visualização por Computador: Teoria, Prática e Aplicações Iluminação Claudio Esperança Programa de Engenharia de Sistemas e Computação COPPE / UFRJ Master of Information Management, 2008
Sumário 1 Introdução Modelos de iluminação 2 Modelo de Phong Componentes Luzes 3 Geometria Posição e vetor normal Normais
Iluminação Estudo de como a luz interage com objetos de uma cena Emissão Transmissão Absorção Refração Reflexão
Modelo físico Luz modelada como radiação eletromagnética Matematicamente espaço de distribuições tem dimensão infinita Intratável computacionalmente Solução: usar espaço de cor Estudo de interações luz/objeto Leva em conta todas as interações é intratável computacionamente Solução: reduzir o estudo a alguns fenômenos e apenas a alguns caminhos da luz
Modelo físico Luz modelada como radiação eletromagnética Matematicamente espaço de distribuições tem dimensão infinita Intratável computacionalmente Solução: usar espaço de cor Estudo de interações luz/objeto Leva em conta todas as interações é intratável computacionamente Solução: reduzir o estudo a alguns fenômenos e apenas a alguns caminhos da luz
Modelo físico Luz modelada como radiação eletromagnética Matematicamente espaço de distribuições tem dimensão infinita Intratável computacionalmente Solução: usar espaço de cor Estudo de interações luz/objeto Leva em conta todas as interações é intratável computacionamente Solução: reduzir o estudo a alguns fenômenos e apenas a alguns caminhos da luz
Modelos computacionais Luz é amostrada em um número discreto de primárias (comprimentos de onda) 3 componentes suficiente para muitas aplicações Modelos locais (primeira ordem) Apenas caminhos do tipo fonte luminosa objeto olho são tratados Fontes de luz pontuais / direcionais Usado na maior parte das APIs gráficas Permitem cálculo a taxas interativas Modelos globais Consideram vários tipos de caminho fonte objeto objeto... olho Consideram fontes de luz com área Técnicas como Ray-tracing e Radiosidade Taxas não interativas
Modelos computacionais Luz é amostrada em um número discreto de primárias (comprimentos de onda) 3 componentes suficiente para muitas aplicações Modelos locais (primeira ordem) Apenas caminhos do tipo fonte luminosa objeto olho são tratados Fontes de luz pontuais / direcionais Usado na maior parte das APIs gráficas Permitem cálculo a taxas interativas Modelos globais Consideram vários tipos de caminho fonte objeto objeto... olho Consideram fontes de luz com área Técnicas como Ray-tracing e Radiosidade Taxas não interativas
Modelos computacionais Luz é amostrada em um número discreto de primárias (comprimentos de onda) 3 componentes suficiente para muitas aplicações Modelos locais (primeira ordem) Apenas caminhos do tipo fonte luminosa objeto olho são tratados Fontes de luz pontuais / direcionais Usado na maior parte das APIs gráficas Permitem cálculo a taxas interativas Modelos globais Consideram vários tipos de caminho fonte objeto objeto... olho Consideram fontes de luz com área Técnicas como Ray-tracing e Radiosidade Taxas não interativas
Modelo de reflexão de Phong Considera o fenômeno da reflexão constituido de 3 componentes Ambiente (fração constante) Difusa (reflexão de objetos foscos) Especular (reflexão de objetos polidos)
Modelo de reflexão de Phong Considera o fenômeno da reflexão constituido de 3 componentes Ambiente (fração constante) Difusa (reflexão de objetos foscos) Especular (reflexão de objetos polidos)
Modelo de reflexão de Phong Considera o fenômeno da reflexão constituido de 3 componentes Ambiente (fração constante) Difusa (reflexão de objetos foscos) Especular (reflexão de objetos polidos)
Modelo de reflexão de Phong Considera o fenômeno da reflexão constituido de 3 componentes Ambiente (fração constante) Difusa (reflexão de objetos foscos) Especular (reflexão de objetos polidos)
Sombreamento (shading) Algoritmo usado para interpolar as cores computadas pelo modelo de iluminação em superfícies poligonais Constante (flat): modelo é computado para cada face Gouraud: modelo é computado para cada vértice e faces têm cores interpoladas linearmente a partir das dos vértices Phong: Modelo computado para cada pixel da imagem Vetores normais em pontos das faces são interpolados a partir dos vetores normais nos vértices Flat Gouraud Phong
Sombreamento (shading) Algoritmo usado para interpolar as cores computadas pelo modelo de iluminação em superfícies poligonais Constante (flat): modelo é computado para cada face Gouraud: modelo é computado para cada vértice e faces têm cores interpoladas linearmente a partir das dos vértices Phong: Modelo computado para cada pixel da imagem Vetores normais em pontos das faces são interpolados a partir dos vetores normais nos vértices Flat Gouraud Phong
Sombreamento (shading) Algoritmo usado para interpolar as cores computadas pelo modelo de iluminação em superfícies poligonais Constante (flat): modelo é computado para cada face Gouraud: modelo é computado para cada vértice e faces têm cores interpoladas linearmente a partir das dos vértices Phong: Modelo computado para cada pixel da imagem Vetores normais em pontos das faces são interpolados a partir dos vetores normais nos vértices Flat Gouraud Phong
Componente de reflexão difusa Característica de materiais foscos Energia luminosa incidente é espalhada uniformemente em todas as direções Lei de Lambert (fluxo de energia): A luminosidade aparente da superfície não depende da posição do observador, mas apenas do cosseno do ângulo entre a normal e a direção da luz
Componente de reflexão difusa (cont.) Sejam L vetor unitário que aponta para a fonte luminosa N vetor unitário normal à superfície I d coeficiente de reflexão difusa da luz K d coeficiente de reflexão difusa do material Então a cor percebida pelo observador por conta da componente difusa é D = I d K d cos θ = I d K d ( L N )
Componente de reflexão especular Simula a reflexão à maneira de um espelho (objetos altamente polidos) Depende da disposição entre observador, objeto e fonte de luz Em um espelho perfeito, a reflexão se dá em ângulos iguais Observador só enxergaria a reflexão de uma fonte pontual se estivesse na direção certa No modelo de Phong, simulam-se refletores imperfeitos assumindo que luz é refletida segundo um cone cujo eixo passa pelo observador
Componente de reflexão especular (cont.) Sejam L vetor unitário que aponta para a fonte luminosa N vetor unitário normal à superfície R vetor unitário de reflexão perfeita E vetor unitário que aponta para o observador n coeficiente de especularidade I s coeficiente de reflexão especular da luz K s coeficiente de reflexão especular do material Então a cor percebida pelo observador por conta da componente especular é S = I s K s (cos α) n = I s K s ( R E) n
Computando o vetor de reflexão Projetando L sobre N temos o vetor verde O vetor azul é dado por L menos o vetor verde O vetor vermelho tem mesma direção e módulo, mas sentido contrário ao vetor azul Logo, R = 2( N L) N L
O coeficiente de especularidade Indica o quão polida é a superfície Espelho ideal teria coeficiente de especularidade infinito Na prática, usa-se valores entre 5 e 100
O componente de reflexão ambiente A componente difusa pode ser nula se a luz estiver atrás do objeto (cos θ < 0) A componente especular normalmente só acrescenta pontos de alto brilho Na realidade, mesmo objetos de costas para a luz refletem ao menos a luz ambiente Fruto de múltiplas reflexões entre os objetos da cena Intratável computacionalmente Aproximado por um termo que só depende de características do material e da intensidade da luz: A = I a + K a
Componente de emissão Alguns objetos têm luz própria, isto é, não dependem de fontes de luz Modelo de Phong prevê um termo chamando de emissão para levar em conta este efeito E = K e Sendo um modelo de iluminação local, objetos que emitem luz não iluminam outros objetos
Fontes de luz Numa cena podem estar definidas mais de uma fonte de luz As componentes D, S e A precisam ser computadas para cada fonte de luz Coeficientes de iluminação I d, I s, I a Geometria da fonte
Fontes posicionais e direcionais Todas as fontes em modelos de iluminação local são pontuais (não têm área) Fontes posicionais são fontes situadas dentro da cena Para computar o vetor L é preciso subtrair a posição da fonte da posição do ponto que se quer iluminar Fontes direcionais são fontes infinitamente distantes numa certa direção (o sol, por exemplo) Vetor L é constante para todos os pontos da cena
Fontes omni-direcionais e spots Fontes omni-direcionais iluminam uniformemente em todas as direções Spots são fontes que iluminam preferencialmente em uma direção v dada Valores efetivos para os coeficientes I são multiplicados por um fator que depende do ponto da cena Se L é o vetor do ponto à luz, este fator é corresponde ao cosseno do ângulo entre v e L elevado a uma potência, isto é, ( v L) m Valores altos de m indicam spots mais concentrados Pode-se também especificar um ângulo de corte (cut-off) para além do qual o fator é 0
Fontes omni-direcionais e spots Fontes omni-direcionais iluminam uniformemente em todas as direções Spots são fontes que iluminam preferencialmente em uma direção v dada Valores efetivos para os coeficientes I são multiplicados por um fator que depende do ponto da cena Se L é o vetor do ponto à luz, este fator é corresponde ao cosseno do ângulo entre v e L elevado a uma potência, isto é, ( v L) m Valores altos de m indicam spots mais concentrados Pode-se também especificar um ângulo de corte (cut-off) para além do qual o fator é 0
Fontes omni-direcionais e spots Fontes omni-direcionais iluminam uniformemente em todas as direções Spots são fontes que iluminam preferencialmente em uma direção v dada Valores efetivos para os coeficientes I são multiplicados por um fator que depende do ponto da cena Se L é o vetor do ponto à luz, este fator é corresponde ao cosseno do ângulo entre v e L elevado a uma potência, isto é, ( v L) m Valores altos de m indicam spots mais concentrados Pode-se também especificar um ângulo de corte (cut-off) para além do qual o fator é 0
Fontes omni-direcionais e spots Fontes omni-direcionais iluminam uniformemente em todas as direções Spots são fontes que iluminam preferencialmente em uma direção v dada Valores efetivos para os coeficientes I são multiplicados por um fator que depende do ponto da cena Se L é o vetor do ponto à luz, este fator é corresponde ao cosseno do ângulo entre v e L elevado a uma potência, isto é, ( v L) m Valores altos de m indicam spots mais concentrados Pode-se também especificar um ângulo de corte (cut-off) para além do qual o fator é 0
Fontes omni-direcionais e spots Fontes omni-direcionais iluminam uniformemente em todas as direções Spots são fontes que iluminam preferencialmente em uma direção v dada Valores efetivos para os coeficientes I são multiplicados por um fator que depende do ponto da cena Se L é o vetor do ponto à luz, este fator é corresponde ao cosseno do ângulo entre v e L elevado a uma potência, isto é, ( v L) m Valores altos de m indicam spots mais concentrados Pode-se também especificar um ângulo de corte (cut-off) para além do qual o fator é 0
Fontes omni-direcionais e spots Fontes omni-direcionais iluminam uniformemente em todas as direções Spots são fontes que iluminam preferencialmente em uma direção v dada Valores efetivos para os coeficientes I são multiplicados por um fator que depende do ponto da cena Se L é o vetor do ponto à luz, este fator é corresponde ao cosseno do ângulo entre v e L elevado a uma potência, isto é, ( v L) m Valores altos de m indicam spots mais concentrados Pode-se também especificar um ângulo de corte (cut-off) para além do qual o fator é 0
Atenuação Pode-se especificar um fator de atenuação que diminui a luminosidade da fonte conforme sua distância ao ponto iluminado Só faz sentido para fontes pontuais Normalmente, se especifica um fator de atenuação da forma 1 c 0 + c 1 d + c 2 d 2 Onde as constantes c i são globais especificados para a cena e d é a distância entre o ponto e a fonte de luz
Geometria Geometria dos objetos influencia no cálculo do modelo de iluminação Posição de cada ponto do objeto usado para calcular Vetor L para fontes posicionais Fator de atenuação da luz para spots Atenuação global Vetor normal ao ponto é fundamental no cálculo das componentes difusa e especular APIs gráficas podem ou não estimar os vetores normais Frequentemente, vetores normais para os vértices do modelo sendo iluminado têm que ser especificados explicitamente (ex.: OpenGL)
Computando normais Triângulo: Dados 3 vértices A,B,C N = (B A) (C B) (B A) (C B) Polígono convexo plano: Pode-se usar o método do triângulo para quaisquer 3 vértices Se a fórmula do plano de suporte é conhecida: ax + by + cz + d = 0, basta normalizar o vetor [a, b, c] T
Normais de polígonos planos arbitrários Coeficientes a, b, c da equação do plano são proporcionais às áreas do polígono projetado nos planos yz, xz e xy Por exemplo: AreaXY i = 1 (yi+1 + yi)(xi xi+1) 2 c = i AreaXYi
Normais de superfícies implícitas Uma superfície implícita é dada por um conjunto de nível de um campo escalar: f (x, y, z) = c para alguma constante c A direção normal a um ponto P dessa superfície é dado por n = [ f x, f y, f ] T z
Normais de superfícies paramétricas Uma superfície paramétrica em 3D é descrita por 3 funções de dois parâmetros f (u, v) = [f x(u, v), f y(u, v), f z(u, v)] T Pode-se obter dois vetores tangentes à superfície num ponto avaliando as derivadas parciais com relação aos dois parâmetros t 1 = f u, t 2 = f v A direção normal pode ser obtida por n = t 1 t 2 = f u f v