Visibilidade
Ray-Tracing
Instituto Superior Técnico
Apontamentos CG + Edward Angel, Sec. 7.11 e Cap.13
Instituto Superior Técnico
Computação Gráfica
Na últimas aulas
Terminado Pipeline de Visualização 3D
Sumário
Ray-Tracing
Algoritmo
Cálculo de Intersecções
Interacção da Luz com Superfícies
Interacção da Luz com Superfícies
Estratégias de Optimização
Computação Gráfica
Ray-Tracing
Ray-Tracing
Ray-Tracing
Opera ao nível da precisão da imagem
Tem em conta efeitos ópticos
Refracção Reflexão
Síntese de cenas com elevado realismo
Síntese de cenas com elevado realismo
Objectivo
Combinar num só modelo
Remoção de superfícies ocultas
Sombreamento devido a iluminação directa Sombreamento devido a iluminação global Cálculo de sombras
Centro de
Cena
Ray Tracing: Filosofia
Centro de Projecção
Janela de Visualização
Sombreamento com Ray Casting
Para(cada pixel)
Criar raio do ponto de vista Para (cada objecto na cena)
Encontrar Intersecção com o raio Manter se mais próximo
Ray-Casting
Informação para Sombreamento
Características da Superfície e da Cena
Normal à superfície Direcção da luz
Ponto de vista “viewpoint”
Propriedades do Material
Componente Difusa (matte) Componente Especular (brilho) ...
Esfera Matte
Esferas Brilhantes
Sombreamento com Ray-Tracing
Para(cada pixel)
Criar raio do ponto de vista Para (cada objecto na cena)
Encontrar Intersecção com o Raio Primário Criar Raios Secundários
Ray-Tracing
Tipos de Raios
Raios Primários
raios que unem o centro de projecção com os objectos
Raios Secundários
raios reflectidos raios refractados raios refractados
Ray-Tracing
Tipos de Raios
Raios secundários
Sombras Reflexão RefracçãoRay-Tracing
Raios Primários
Normalmente, um raio primário não intersecta qualquer objecto ...
Ray-Tracing
Raios Primários
Ray-Tracing
Raios Primários
Neste caso são criados raios secundários
Raios de Iluminação (Shadow Feelers) Raios Reflectidos
Raois Refractados
Ray-Tracing
Raios Primários
Neste caso são criados raios secundários
Raios de Iluminação (Shadow Feelers)
Raios Reflectidos
Ray-Tracing
Raios de Iluminação (shadow feelers)
Raio de iluminação une o ponto intersectado à fonte de luz ...
Ray-Tracing
Raios de Iluminação (shadow feelers)
… mas, às vezes, intersecta um objecto antes de atingir a fonte de luz ...
Ray-Tracing
Raios de Iluminação (shadow feelers)
… e o ponto de intersecção pode estar na sombra, só sendo iluminado pela luz ambiente ou na penumbra se o objecto for translúcido.
Ray-Tracing
Raios Reflectidos
Ray-Tracing
Raios Reflectidos
A cor local do ponto de intersecção do raio reflectido à adicionada à cor local do ponto original.
Ray-Tracing
Raios Reflectidos
Sem reflexão
Ray-Tracing
Raios Reflectidos
S e m r e fl e x ã o 1 n íve l d e r e fl e x ã o 1 n íve l d e r e fl e x ã o 2 n íve is d e r e fl e x ã o 3 n íve is d e r e fl e x ã oRay-Tracing
Raios Refractados
Ray-Tracing
Raios Refractados
… a cor do ponto de origem da transmissão é adicionada à cor do ponto original.
Ray Tracing
Algoritmo
Todos os cálculos processam-se no espaço-objecto
Para cada ponto (ou pixel) do plano de imagem:
traça-se um raio com origem no ponto de observação
em direcção à cena a representar
em direcção à cena a representar
Se o raio intersecta um objecto
efectuam-se cálculos locais de iluminação
para determinar o sombreamento (ou cor) desse ponto como resultado da
Ray Tracing
O Algoritmo
Se o objecto é parcialmente reflector e/ou transparente
cálculo de sombreamento no ponto inclui:
contribuições luminosas de raios reflectidos e transmitidos
O cálculo dessas contribuições implica:
traçado dos respectivos raios em sentido inverso,
traçado dos respectivos raios em sentido inverso, determinação das intersecções com a cena
eventual traçado de novos raios a partir desses pontos de intersecção
O processo termina quando:
se atinge o fundo da cena (sai da cena) ou
se atinge um número máximo de superfícies intersectadas ou a contribuição é menor que um valor arbitrado
Ray Tracing
Recursividade
Plano de Visualização 1 3 4 7 10 11 12 13 14 15Cena constituída por
1 2 4 5 6 8 9
Ray Tracing
Algoritmo Completo
Procedure TraceRay( pontoOrigem, direccao, nivel, cor){ var pontoInterseccao, direccaoReflexao;
var direccaoTransmissao, corLocal, corReflexao; var corTransmitida;
if ( nivel > nivelMaximo ) { cor = negro;
} else {
pontoInterseccao = (intersecção mais próxima de pontoOrigem); pontoInterseccao = (intersecção mais próxima de pontoOrigem); if ( !intersecção ) {
cor = corFundo; } else {
corLocal=(contribuição da iluminação directa);
(calcular direccaoReflexao);
TraceRay(pontoInterseccao, direccaoReflexao, nivel+1, corReflexao);
(calcular direccaoTransmissao);
TraceRay( pontoInterseccao, direccaoTransmissao, nivel+1, corTransmitida);
(combinar(cor, corLocal, corReflexao, pesoRefl, corTransmitida, pesoTrans));
} } }
Ray Tracing
Recursividade
Raios traçados a partir do ponto de observação A 1 Plano de Visualização 3 7 10 11 12 13 14 15 6 7 8 9 12 13 14 15 4 5 10 11 2 3 Fundo A A A B B B C C C C
Fundo Fundo Fundo
1 2 3 4 5 6 8 9
Computação Gráfica
Cálculo de Intersecções
Cálculo de Intersecções
Ray Tracing
Cálculo de intersecções
Estimativa de Whitted
90 a 95% do tempo de processamento é gasto no cálculo das
intersecções em cenas de média complexidade
Tipo de intersecção: raio (recta) com um objecto
esfera polígono
Necessita calcular normal para calcular sombreamento
Ray Tracing
Cálculo de intersecções
Sugerida utilização de “volume envolvente”
para cada objecto
Se raio não intersecta o volume envolvente
não há necessidade de efectuar cálculos de intersecção
não há necessidade de efectuar cálculos de intersecção
com os vários polígonos do objecto
Esferas são volumes envolventes mais utilizados
pelas suas características isotrópicas
pela facilidade de cálculo da intersecção com um raio
Equação Paramétrica dos Raios
t
R
R
t
R
d
r
r
r
+
=
0
)
(
t<0 – para trás do centro de projecção (não interessa!) t=0 – Centro de projecção
t=1 – Plano de projecção
Intersecção Raio-Esfera – 1
Raio
Esfera
(x0,y0,z0) (x1,y1,z1) (xc,yc,zc)(
)
(
)
(
z z)
t z z t z z t y y t y y y y t x x t x x x x d d d + = − + = + = − + = + = − + = 0 0 1 0 0 0 1 0 0 0 1 0Esfera
substituindo x, y, z do raio na equação da esfera, vem
0 2 2 − + = C t B t A
(
x − xc) (
2 + y − yc) (
2 + z − zc)
2 −r2 = 0(
)
(
)
(
)
(
) (
) (
)
2 2 0 2 0 2 0 0 0 0 2 2 2 r z z y y x x C z z z y y y x x x B z y x A c c c c d c d c d d d d − − + − + − = − + − + − = + + =Intersecção Raio-Esfera – 2
Normalizando o vector do raioPodemos simplificar resolução da equação com:
1
1
2 2 2+
+
=
⇒
=
A
z
y
x
d d dC
B
B
t
=
±
2−
B2- C Conclusão<0 O raio não intersecta a esfera =0 O raio é tangente à esfera >0 O raio intersecta a esfera
na raiz correspondente ao ponto mais próximo (mas atenção…)
C
B
B
Em princípio queremos o mais próximo (menor):
Mas...
(a) t<0, não intersecta
(b) origem dentro da esfera (C>0): há duas soluções,
Intersecção Raio-Esfera – 3
C
B
B
t
=
−
2−
(b) origem dentro da esfera (C>0): há duas soluções, queremos a maior, e não a menor!
(c) caso “normal”
Intersecção Raio-Esfera – 4
Não queremos calcular tudo antes de saber se há intersecção ou não... Solução: calcular
Se <0, não há intersecção possível
(outra forma: se e B<0, não intersecta)
OC R tdmin = D • 2
d
≥ Rd Rd 0 C 0C tdmin 0 C 0C tdmin(outra forma: se e B<0, não intersecta)
2 2
r
Intersecção Raio-Plano
Equação do plano
substituindo na equação paramétrica da recta e
resolvendo em ordem a t, vem
0
D
z
C
y
B
x
A
+
+
+
=
resolvendo em ordem a t, vem
Raio paralelo ao plano se
(
)
d d d iz
C
y
B
x
A
D
z
C
y
B
x
A
t
+
+
+
+
+
−
=
0 0 0 d iR
N
D
R
N
t
•
+
•
−
=
00
=
•
R
dN
Intersecção Raio-Polígono – 1
Soluções
simples com pouca precisão
mais complicada
Simples: o polígono
Simples: o polígono
contém o ponto de
intersecção ?
sim, se a soma dos ângulos
entre linhas traçadas dos
vértices para o ponto for
igual a 360 graus)
Intersecção Raio-Polígono – 2
Determinação geométrica
se o raio e o plano se intersectam, todas as projecções em (x,y), (x,z) e (y,z) contêm o ponto de intersecção
se uma das projecções do polígono não intersecta o raio, não há
intersecção
projecção por eliminação da coordenada de maior valor absoluto da normal ao plano
Intersecção Raio-Polígono – 3
Intersecção:
semi-recta com origem no ponto intersecta polígono um número ímpar de vezes
V*
V
válido para polígonos côncavos e auto-intersectantes U*
V*
Computação Gráfica
Interacção da Luz com Superfícies
Interacção da Luz com Superfícies
Cor de um Ponto – 1
A cor de cada ponto de uma superfície resulta de:
Cor local
devido à iluminação da superfície por luz directa e luz ambiente
Cor do raio luminoso reflectido
segundo a direcção de reflexão
Cor do raio luminoso transmitido
ponto de origem do raio
Cor de um Ponto – 2
Contribuições para a Intensidade Luminosa de um Ponto
de uma Superfície
Raio proveniente da direcção de refracção Raio proveniente da direcção de reflexão ponto da 1ª superfície
Cada vez que um raio
primário intersecta
uma superfície, há
que calcular:
N I θ θ RCálculo da Reflexão
que calcular:
um raio reflectido
um raio transmitido
Sendo I, N e R
vectores unitários :
N
cos
2
I
R
r
r
r
Θ
+
=
I (incidente) θ θ (reflectido)Um raio luminoso, ao
transitar de um meio para
outro, refracta-se ou muda
de direcção devido à
diferença de velocidade da
N I θ1 n 1Cálculo da Refracção
diferença de velocidade da
luz em cada um dos meios
(Lei de Snell)
N
I
T
sen
sen
)
cos
cos
(
1
2 1 12 12 12 1 2 2 1η
η
θ
θ
η
η
η
θ
θ
=
=
=
+
−
T θ2 n2Índice de Refracção
Meio Índice de refracção relativo ao vácuo Ar (293,15 K, 101,325 kPa) 1,00029 Água 1,33 Vidro crown 1,52 Vidro denso 1,66 Vidro cristal 2 Quartzo 1,46 Safira 1,77 Diamante 2,417 Cristais de iodo 3,34 Poliestireno 1,55 Alcool etílico 1,36
Reflexão Total
=
i t iarcsen
η
η
θ
Meios Ângulo crítico Água - Ar 48º 46’ Vidro (crown) - Ar 41º 9’ Vidro (crown) - Água 61º 3’ Diamante – Ar 24º 27’ Safira - Ar 34º 25’
Computação Gráfica
Extensão ao
Extensão ao
Modelo de Iluminação de Phong
Objectos transparentes ou translúcidos
acrescenta-se um novo termo à expressão de Phong para
calcular a luz que se vê através desses objectos
Define-se H´
Extensão ao
Modelo de Iluminação de Phong
Define-se H´
normal à micro faceta perpendicular à direcção de refracção pura
Para a direcção de visualização
(
)
n ta
transmitid
K
N
H
Extensão ao
Modelo de Iluminação de Phong
N
H’
V
L
P
Computação Gráfica
Determinação de Sombras
Determinação de Sombras
Sombras
Sombra
ocorre quando algum objecto se interpõe entre a(s) fonte(s) de
luz e o ponto
Procedimento
traçar raios de iluminação (“shadow feelers”)
traçar raios de iluminação (“shadow feelers”)
entre o ponto e cada uma das fonte de luz
raio intersecta um objecto opaco:
a correspondente fonte de luz não contribui para a iluminação do ponto
raio intersecta um objecto translúcido (penumbra):
atenuar a intensidade luminosa da fonte de luz (não se fazem cálculos de refracção)
Determinação de Sombras
fonte de luz objecto translúcido objecto opaco A B C objecto translúcidoComputação Gráfica
Estratégias de Optimização
Estratégias de Optimização
Esforço de Cálculo
Exemplo:
imagem 1024 x 1024 100 objectos⇒
⇒
⇒
⇒
calcular 104.857.600 intersecções
Solução: optimizar o cálculo através de
transformação segundo o raio volumes envolventes
hierarquização
partição do espaço
Transformação Segundo o Raio
Transforma cada raio para que coincida com a direcção
dos ZZ
Aplica a mesma transformação aos objectos
Intersecções ocorrem em x=0 e y=0
Aplica-se transformada inversa ao ponto determinado
Volumes Envolventes – 1
Cálculo da intersecção do raio com volumes
envolventes dos objectos
esfera
elipsóide
elipsóide
paralelepípedo
poliedro convexo
Volumes Envolventes – 2
Se um raio intersectar um volume envolvente
devem ser feitos cálculos finos de intersecção entre o
raio e o objecto em causa
Os cálculos a efectuar dependem do esquema de
Os cálculos a efectuar dependem do esquema de
modelação geométrica utilizado na definição do objecto
No caso mais usual utiliza-se um modelo de representação
pela fronteira (“boundary representation”) - objecto descrito por uma malha poligonal
Hierarquização
Organizar o espaço em árvore de volumes
envolventes
Um subespaço filho não pode ser
Partição do Espaço - 1
O espaço é dividido em sub espaços limitados por volumes
envolventes
Cada sub espaço contém objectos
não é necessário que um objecto esteja totalmente contido num não é necessário que um objecto esteja totalmente contido num
subespaço
Se um raio intersecta um sub espaço
e no sub espaço intersecta um objecto
processo pára, a não ser que o objecto esteja parcialmente contido no
sub espaço
Partição do Espaço - 2
Partição equitativa do
espaço
Só é necessário testar a
intersecção com os
subespaços contendo os
objectos A, B e C
Partição do Espaço - 3
Intersecção de objectos contidos em maisdo que um sub espaço
Sub espaço 2 é testado antes de 3
Encontra-se intersecção com B
Mas é necessário testar sub espaço 3 porque afinal é a intersecção com A que interessa
A B
3 2 1
Computação Gráfica
Anti-Aliasing
Anti-Aliasing
Ray-Tracing e Antialiasing - 2
Sobreamostragem simples
muitos raios por pixel (9) ⇒ carga computacional elevada há raios onde são mais necessários?
Sobreamostragem adaptativa
Sobreamostragem adaptativa
mais raios onde necessário, menos onde não
mas … grelha regular ⇒ perda de detalhe possível, ruído
Ray Tracing distribuído (estocástico)
raios aleatoriamente localizados cobrindo área uniformemente ruído aleatório é “perdoado” pela visão
Computação Gráfica
Radiosidade
Radiosidade
Motivação
Ray-Tracing permite bons resultados
Mas necessita da componente “luz ambiente” Não reproduz fielmente a realidade
Problema:
Problema:
Reproduzir uma cena
Sem recorrer a uma “falsa” luz ambiente
Solução:
Recorrer a modelos físicos
Fundamentos
Princípio da Conservação da Energia
Balanço Energético Radiativo
Distribuição de luz num ambiente depende de
Distribuição de luz num ambiente depende de
reflexões absorções transmissões
Que dependem
do comprimento de onda do tempoCaracterísticas
Radiosidade depende unicamente da geometria
Calculada no espaço objecto
Não depende do ponto de vista
uma vez calculada uma cena
não é necessário recalculá-la quando o ponto de vista muda
Emissão e reflexão difusas
Radiosidade
+
/
-
Grande consumo de memória
Cálculos complexos
Apenas pode considerar componente difusa
Apenas pode considerar componente difusa
Extensão a componente especular
necessita muita memória
Normalmente
Computação Gráfica
Fotorealismo
Fotorealismo
Fotorealismo
Exemplo
74
Christmas Baubles
Fotorealismo
Fotorealismo
Exemplo
76
Pebbles
By Jonathan Hunt 4 dias e meio a gerar
Computação Gráfica
Ray-Tracing em tempo real
Ray-Tracing em tempo real
NVIDEA Real time ray-tracing
78
4 Placas Quadro FX5800 em tandem 16 GB de memória GDDR3
Permite 30 fps Resolução HD