An Improved Illumination Model for Shaded Display Turner Whitted António Oliveira Paula Rego Iluminação e FotoRealismo Estrutura da Apresentação Introdução Modelo de Iluminação Modelos Convencionais Modelo Melhorado – – – – – – 2 Reflexão Especular Transmissão Refractiva Índices de Refracção Geração de Árvores de Raios Cálculo de Visibilidade Ray Tracing Recursivo Resultados Conclusões Introdução O cálculo eficiente (e correcto) da iluminação de uma cena é um problema fundamental da computação gráfica Um modelo de iluminação determina a luz que chega ao observador a partir de um ponto visível numa superfície O shading é o processo de realizar cálculos de iluminação e determinar a cor dos pixeis a partir desses cálculos – Os cálculos de shading podem ser efectuados a escalas diferentes: – – 3 O modelo de Shading determina quando é aplicado o modelo de Iluminação e que argumentos recebe – microscópica local global Modelo de Iluminação A luz recebida é função de: – – – 4 direcção e intensidade da fonte de luz posição do observador orientação e propriedades da superfície Modelo de Iluminação As interacções luz - superfície são de natureza microscópica Contudo, os modelos são normalmente bastante limitados: – 5 consideram apenas a interacção fonte de luz e orientação da superfície, ignorando o ambiente que a rodeia Os algoritmos de determinação de superfícies visíveis tradicionais não fornecem os dados globais necessários Modelos Convencionais Reflexão Difusa Os difusores ideais comportam-se de acordo com a Lei de Lambert (do coseno) – – a luz reflectida, por uma pequena superfície é determinada pelo co-seno do ângulo entre a normal à superfície e a direcção da luz As superfícies reflectem luz com igual intensidade em todas as direcções surgem igualmente brilhantes a partir de todos os pontos de vista I = Ip*kd* (N.L) = Ip*kd*cos 6 Modelos Convencionais Reflexão Especular – Modelo de Phong fontes de luz a distância infinita não considera a luz reflectida por outros objectos os objectos não funcionam como fontes de luz não afecta o realismo da reflexão difusa fontes luz fontes luz I = Ia + kd (N . Lj) + ks (R . V)n j=1 7 j=1 I = intensidade reflectida Ia = reflexão devida à luz ambiente kd = coeficiente reflexão difusa N = normal à superfície (unitária) Lj = vector na direcção da fonte de luz i ks = coeficiente reflexão especular n = expoente de reflexão especular do material Modelos Convencionais O Modelo de Phong afecta significativamente a qualidade das reflexões especulares – Não é incluída a luz reflectida por outros objectos Formulação Alternativa (Blinn e Newell, 1976) – – esfera de raio infinito fontes de luz e observador a distância infinita j=ls j=ls I’ = Ia + kd (N . Lj) + ks (N . Hj ’)n j=1 j=1 H = (L+V)/2 normal na direcção a metade da distância entre L e V 8 Modelos Convencionais Sombras – – Transparência – – 9 É um dos aspectos mais importantes no modelo de iluminação Um ponto numa superfície está em sombra se for visível ao observador, mas não à fonte de luz A transmissão da luz através de objectos transparentes tem sido simulada em algoritmos que desenham as superfícies segundo a ordem inversa de profundidade (Algoritmo Depth-Sort – Newell et al., 1972) Produção de imagens interessantes, mas não simula a refracção Modelo Melhorado Introduzido por Turner Whitted (1980) nº luzes I I a kd ( N L ) k S k T j s t j 1 onde: – – – – 10 S = intensidade da luz incidente a partir de R (raio reflectido) ks = coeficiente de reflexão especular do material ks = coeficiente de transmissão T = intensidade da luz na direcção P (raio refractado) Reflexão Especular N + V’ R N Intensidade da Luz V Perfeitamente lisa Superfície reflectora kf 1 (k n2 V ' 2 2 V ' N ) P k f (N + V’) Refracção -N V’ = V / |V*N| R = V’ + 2N P = kf (N + V’) - N onde kf = função do índice de refracção kn Reflexão Especular A reflexão especular de uma superfície rugosa – – Simulando esta reflexão (baseado no trabalho de J.F. Blinn) – – – Produzida por faces microscópicas Intensidade proporcional à distribuição das normais da superfície Variações aleatórias na normal da superfície Simular faces microscópicas orientadas aleatoriamente Impraticável em termos computacionais Escolher a adição do termo de Phong nº luzes I Ia [k (N L ) k (N.H ) ] k S k T d j 1 12 j s n s t Transmissão Refractiva Dados os índices de refracção dos 2 lados de uma superfície, pode-se calcular o ângulo para V e P usando a Lei de Snell sin 1 n2 sin 2 n1 13 Índices de Refracção Razão entre a velocidade da luz no vácuo e a velocidade da luz numa substância cvácuo kn cmat . 14 Substância Índice Vácuo 1,0 Ar 1,00029 Água Vidro Diamante 1,33 1,52 2,417 Safira Sal 1,77 1,54 Geração de Árvores de Raios 15 A luz é reflectida a partir de várias superfícies O comportamento dos raios de luz podem ser modelados através de uma árvore O shader percorre a árvore, aplicando a equação em cada nodo para calcular a intensidade (esta é atenuada por uma função linear da distância entre os pontos de intersecção) Cálculo da Visibilidade Um algoritmo de Ray Tracing constitui uma boa aproximação: – – O cálculo não termina com o primeiro objecto intersectado pelo raio – – 16 Abordagem inicial: traçar raios de luz desde as fontes de luz até ao observador – forward Ray Tracing Whitted desenvolve um modelo aproximado considerando os raios de luz que chegam ao observador no sentido inverso – backward Ray Tracing Considera também os raios reflectidos e refractados Objectos são visíveis através de reflexões em outros objectos Cálculo da Visibilidade Simplificações: – – – 17 Considerar um volume envolvente para cada objecto na cena Se não for intersectado, o objecto pode ser eliminado Por questões de simplicidade de representação e facilidade de cálculo de intersecção, são usadas esferas Cálculo da Visibilidade O algoritmo faz anti-aliasing Aliasing é mais aparente em 3 casos: – – – 18 Mudanças bruscas de intensidade Objectos pequenos localizados entre os pontos de amostragem Textura mapeada a uma superfície O Anti-aliasing é aplicado apenas nas regiões afectadas pelos 3 casos Ray Tracing Recursivo Para cada pixel da imagem – – Calcular raio que passa pelo pixel e observador Determinar objecto intersectado pelo raio – – Calcular contribuição da iluminação ambiente Para cada fonte de luz determinar visibilidade (raios sombra) – Se fonte visível, adicionar contribuição reflexão difusa Se não foi atingido limite de recursividade 19 Ponto de intersecção Normal Propriedade do material Propriedade de textura Adicionar contribuição da reflexão especular Adicionar contribuição da refracção Ray Tracing Recursivo seleccionar o centro de projecção e a janela no plano de visualização; for(cada scan line na imagem) { for (cada pixel na scan line) { determinar raio a partir do centro de projecção através do pixel; pixel=RT_trace(raio,1); } } 21 Ray Tracing Recursivo RT_cor RT_trace(RT_ray raio, int depth) { determinar a intersecção mais proxima do raio com um objecto; if (objecto foi intersectado) { calcular normal na intersecção; return RT_shade(objecto de intersecção mais próxima, intersecção, normal, depth); } else return BACKGROUND_VALUE; } 22 Ray Tracing Recursivo – Iluminação Directa Cor = termo ambiente; for (cada luz) { SRaio = raio para a luz a partir do ponto; If (produto escalar da normal e direcção para a luz é positivo) { Calcular quanta luz é bloqueada por superfícies opacas e transparentes, e usar termos difusos e especulares para escalar antes de os adicionar à cor; } } 23 Ray Tracing Recursivo – Iluminação indirecta if (depth<maxDepth) { If (objecto é reflectivo) { RRaio=raio na direcção de reflexão a partir do ponto; rCor=RT_trace(rRaio, depth +1); escalar rCor pelo coeficiente especular e adicionar a cor; } if (objecto é transparente) { tRaio = raio na direcção de refracção a partir do ponto; if (reflexão interna total não ocorre) { tCor=RT_trace(tRaio, depth+1); escalar tCor pelo coeficiente de transmissão e adicionar a cor; } } } return cor; 24 Ray Tracing Recursivo Condições de terminação: – – 25 Se os raios reflectidos ou refractados não intersectam qualquer objecto Se a profundidade máxima definida foi atingida Resultados 26 Algoritmo programado em C S.O. UNIX PDP-11/45 e VAX-11/780 Resolução da imagem 480x640 pixeis 9 bits por pixel Fig.1 Fig.2 Fig.3 Fig.4 Resultados Imagens: – – – – Distribuição do tempo de processamento: – – – 28 Fig.1: 3 objectos polidos com sombras e reflexões objectoobjecto (44 min.) Fig.2: refracção através de um objecto transparente (74 min.) Fig. 3: sem descrição (122 min.) Fig. 4: não referida Inicialização: 13% Cálculo de intersecções: 75% Shading: 12% Resumo 29 Produz efeitos realísticos nas imagens Não considera reflexões difusas a partir de fontes de luz distribuídas Não trata de forma correcta a reflexão especular a partir de superfícies menos polidas Há ainda muito espaço para melhoria