Upload
internet
View
108
Download
1
Embed Size (px)
Citation preview
An Improved Illumination Model for Shaded Display
António Oliveira
Paula Rego
Iluminação e FotoRealismo
Turner Whitted
2
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
3
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
4
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
5
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
6
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
7
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 fontes luzfontes luz
I = II = Iaa + k + k
dd (N . L (N . Ljj) + k) + k
ss (R . V) (R . V)nn
j=1j=1 j=1j=1
I = intensidade reflectidaI = intensidade reflectidaIIaa = reflexão devida à luz ambiente = reflexão devida à luz ambiente
kkdd = coeficiente reflexão difusa = coeficiente reflexão difusa
N = normal à superfície (unitária) N = normal à superfície (unitária) LLjj = vector na direcção da fonte de luz i = vector na direcção da fonte de luz i
kkss = coeficiente reflexão especular = coeficiente reflexão especular
n = expoente de reflexão especular do materialn = expoente de reflexão especular do material
8
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 j=lsj=ls
I’ = II’ = Iaa + k + k
dd (N . L (N . Ljj) + k) + k
ss (N . H (N . Hj j ’)’)nn
j=1j=1 j=1j=1
H = (L+V)/2 normal na direcção a metade da distância entre L e VH = (L+V)/2 normal na direcção a metade da distância entre L e V
9
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
10
Modelo Melhorado
Introduzido por Turner Whitted (1980)
TkSkLNkII tsj
luzesn
j
da
)(
º
1
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)
Reflexão Especular Intensidade da Luz
Refracção
N + V’
VNR
-NP
(N + V’)kf
V’ = V / |V*N|R = V’ + 2NP = kf (N + V’) - Nondekf = função do índice de refracção kn
Superfície reflectora
Perfeitamente lisa
)''(
1
222 NVVk
k
n
f
12
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
TkSkHNkLNkII tsn
sj
luzesn
j
da
]).()([
º
1
13
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
1
2
2
1sin
sin
n
n
14
Índices de Refracção
Razão entre a velocidade da luz no vácuo e a velocidade da luz numa substância
Substância Índice
Vácuo 1,0
Ar 1,00029
Água 1,33
Vidro 1,52
Diamante 2,417
Safira 1,77
Sal 1,54.mat
vácuon c
ck
15
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)
16
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
17
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
18
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
19
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
21
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);
}
}
22
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;}
23
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;
}
}
24
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;
25
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
26
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
28
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%
29
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