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