290 likes | 395 Views
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 Reflexão Especular Transmissão Refractiva Índices de Refracção
E N D
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 • 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 • O modelo de Shading determina quando é aplicado o modelo de Iluminação e que argumentos recebe • Os cálculos de shading podem ser efectuados a escalas diferentes: • microscópica • local • global
Modelo de Iluminação • A luz recebida é função de: • 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: • 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
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 luzfontes luz I = Ia + kd (N . Lj) + ks (R . V)n j=1j=1 I = intensidade reflectida Ia = reflexão devida à luz ambientekd = coeficiente reflexão difusaN = normal à superfície (unitária) Lj = vector na direcção da fonte de luz iks = 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=lsj=ls I’ = Ia + kd (N . Lj) + ks (N . Hj ’)n j=1j=1 H = (L+V)/2 normal na direcção a metade da distância entre L e V
Modelos Convencionais • Sombras • É 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 • Transparência • 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) • onde: • 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)
Perfeitamente lisa Reflexão Especular Intensidade da Luz N + V’ N V R Superfície reflectora V’ = V / |V*N| R = V’ + 2N P = kf (N + V’) - N onde kf = função do índice de refracção kn P -N k (N + V’) f Refracção
Reflexão Especular • A reflexão especular de uma superfície rugosa • Produzida por faces microscópicas • Intensidade proporcional à distribuição das normais da superfície • Simulando esta reflexão (baseado no trabalho de J.F. Blinn) • 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
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
Índices de Refracção • Razão entre a velocidade da luz no vácuo e a velocidade da luz numa substância
Geração de Árvores de Raios • 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: • 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 • O cálculo não termina com o primeiro objecto intersectado pelo raio • 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: • 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: • 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 • Ponto de intersecção • Normal • Propriedade do material • Propriedade de textura • 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 • 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); } }
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; }
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; } }
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;
Ray Tracing Recursivo • Condições de terminação: • Se os raios reflectidos ou refractados não intersectam qualquer objecto • Se a profundidade máxima definida foi atingida
Resultados • 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.3 Fig.2 Fig.4
Resultados • Imagens: • Fig.1: 3 objectos polidos com sombras e reflexões objecto-objecto (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 • Distribuição do tempo de processamento: • Inicialização: 13% • Cálculo de intersecções: 75% • Shading: 12%
Resumo • 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