Download - Algoritmo de Rastreamento de Raios
MGattass
Algoritmo de Rastreamento de Raios
MGattass
Perspectiva e tamanhos relativos
MGattass
Perspectiva e tamanhos relativos
MGattass
Iluminação e posição
O que está na frente?A que distância do apoio?
MGattass
Sombra
MGattass
Oclusão
MGattass
Gradiente de textura
Proposto no século XX!
MGattass
Efeitos Passivos
– Inerentes a aparência do mundo externo– Independem dos nossos olhos– Fotografias parecem 3D
MGattass
Camera obscura
Camera Obscura - San FranciscoThe Camera Obscura at the Cliff House is one of several remaining camera obscuras in the world. The device is an ancient precursor to modern photography, and well worth a visit, especially if you haven't previously visited a camera obscura.
Plymouth, UK
Canaletto (Giovanni Antonio Canal) (1697-1768).
Pintores
Ponto de fuga
xe
ye
ze
xo
yo
zo
Dois enfoques: Raios
Para cada pixel da telaDefina um raio
Para cada objeto da cenaCalcule o objeto visível
Para cada luz da cenaLance um raioPara cada objeto da cena
Teste se o objeto faz sombraCalcule sua iluminação
Complexidade maior que O(num. de pixels num. de objetos2)
Traçado de Raios
Dois enfoques: ZBuffer
Calcule a cor de cada vertice Projete cada triângulo
Projete os vértices no plano de projeçãoRasterize o triângulo gerandoo os fragmentos que vão para cada pixelAqueles fragmentos que estiverem a frente dos framentos já depositadosrecebem nova cor e a profundidade do pixel é atualizada.
ze
xe
ye
MGattass
A Câmara “Pinhole” e seu modelo
centro deprojeção
raios
plano deprojeçãoplano deprojeção
eixoóptico
eixos doplano deprojeção
MGattass
Traçado de Raios
xo
zo
Objetos
Pixel(RGB)
Luz
Iluminação
yo
Câmara
xe
ye
ze eye
MGattass
Algoritmo básico
Para cada pixel da tela;Lance uma raio;Para cada objeto da cena
Calcule a interseção do raio com este o objeto;Armazene a interseção mais próxima;
Se o raio interceptou algum objeto Calcule a contribuição das luzes neste ponto;Pinte o pixel com esta cor;
Objetos
Luz
IluminaçãoCâmara
xe
ye
ze
MGattass
Definição de uma câmera
wp (pixels) w (metros* )
h p (pi
xels
) h
(met
ros)
janela
ocentro de projeção janela
eixoóptico
centro óptico
oeye
hh
ww
p
p
plano de projeção
centro de projeção
Projeção cônica
(*) metros ou outra unidade de comprimento
MGattass
Abertura de uma câmera
df1df2
fovy1
fovy2h
2tan
2y
f
fov
d
h
2tan2 y
f
fovdh
MGattass
Eixos de uma câmera
eixo óptico
v
u
eyexe
ye
ze
eixo horizontal
eixo vertical
wp (pixels) w
h p (pi
xels
) h
janela
o xe
ye
t (top)
b (bottom) l (
left
)
r (r
ight
)
MGattass
Parâmetros de funções do OpenGL
void glPerspective(GLdouble fovy,GLdouble aspect,GLdouble near_,GLdouble far_);
aspect = w/h
xe
ye
ze
n(near)
f(far)
w
h
ye
ze
fovy
void glViewport(GLint x0, GLint y0, GLsizei width, GLsizei height );
u
v
width
heig
hto1 x0
y0
MGattass
Parâmetros intrínsecos (do OpenGL)parte 2 – Câmera mais geral
void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_, GLdouble far_ );
ye
ze
v
near uxe
xe
ze
near
left right
far
MGattass
Parâmetros internos ou intrínsecos
n = plano próximo
fovy = campo de visão
wp hp pixels
f = plano distante
nd f
2tan2 y
f
fovdh
hh
ww
p
p
Primários: Derivados:
MGattass
Posicionamento da câmera(parâmetros externos ou extrínsecos)
eye = centro ópticocenter = ponto de visada, up = direção para cima
Coordenadas dosObjetos
eyecenter
fovy
vista lateral
upeye
center
up
x0
z0
y0
near
far
MGattass
Calculo do sistema do olho - xe ye ze
center
zeeye
up
z0
y0
x0
view
up
center
eye
z0
y0
x0
dados:eye, center, up
dados:eye, center, up
view = center - eye centereye
centereyez
1e
MGattass
Calculo do sistema do olho - xe ye ze
center
eye
vup
z0
y0
x0
view
zexe
center
eye
up
z0
y0
x0
view
zexe
ye
ee
e zupzup
x
1
eee xzy eye
up ze
xeye
center
MGattass
Um modelo de câmera
zo
xoeyeo
eyepd xy
yo
xe
ye
ze
u
v
o1
eyep
xy
dop ttraio )(:
d
MGattass
Lançamento de Raios
vuop ˆ)(ˆ)(1 yvxuxy
ww
xxu
p
)(
hh
yyv
p
)(
o1
pxy
10 2 x3
h-1
uw-1
v
1
2
y
w pixels na base
h pi
xels
na
altu
ra
ep
ep
xy h
yh
w
xw yxop ˆˆ1
MGattass
Canto inferior esquerdo da janela no plano near (ou far)
e
ay
2
eye
z0
y0
x0
zexe
ye
plano near
canto inferior esquerdo
1o
eeef
whd xyzeyeo ˆ
2ˆ
2ˆ1
ep
ep
xy h
yh
w
xw yxop ˆˆ1
ep
ep
ef w
xw
h
yhd xyzd ˆ
2
1ˆ
2
1ˆ
MGattass
Resultando
zo
xo
eyeo yo
xe
ye
ze
u
v
o1
eyep
xy
dop ttraio )(:
d
ep
ep
ef w
xw
h
yhd xyzd ˆ
2
1ˆ
2
1ˆ
MGattass
Tipo Abstrato de Dados: Camera em C
struct _Camera { /* Definição da câmera */ Vector eye, center, up; float fovy; float n,f; int wp,hp;
/* Parametros derivados */ float df; float w,h; Vector xe,ye,ze;};
typedef struct _Camera Camera;
Camera* camCreate( Vector eye, Vector at, Vector up, double fovy, double _near, double _far, int wp, int
hp );Ray camGetRay( Camera camera, double x, double y );
MGattass
Objeto câmera
centereyecentereye
z
1
e ee
e zupzup
x
1 eee xzy
Inicialização (pré-processamento):
Lançamento de raios: o + td
eyeo
nd f
Dados: fovy, wp, hp, n, f, eye, center, up
ep
ep
ef w
xw
h
yhd xyzd ˆ
2
1ˆ
2
1ˆ
Dados: x, y
2tan2 y
f
fovdh h
h
ww
p
p
MGattass
Modelagem dos Objetos
Implícita: Por fronteira:
r cp
p
dados:
centro c raio r
p1
p2p3
• Seja f(x,y,z), uma função amostrada em R3
Objetivo: – Visualizar uma isosuperfície S definida por
f(x,y,z) = a.
Superfícies implícitas em grades Cartesianas
z
x
yRf(x,y,z)
a
Classificação do Voxel
Voxel
valorcor
ar
Gordura
Músculo
Osso
0 1.0
Branco(1,1,1)
Vermelho (1,0,0)
Amarelo(1,1,0)
1.0
opacidade
MGattass
Interseção de um raio com uma esfera
02 ctbta ii
o d
ti
dop ttRaio )(:
22)(: rtEsfera i cp
22rti cdo
2rtt ii dcodco
0)(2 22 rtt ii cococoddd
a
acbbt
2
42
MGattass
Objeto esfera: métodos (dados o, d, c, r )
Interseção:
2rc coco
dda
)(2 cod b
042 acbse
a
bt
a
bt
2
2
2
1
),min( 21 ttti
se ti > 0 :
dopp iii tt )(
cpcp
n
ii
i
1ˆ
c
piin
Normal:
MGattass
Interseção com o plano do triângulo
o
d
01 nponditp1
n
nd
nop
1it
0)(: 1 npp itPlano
dop ttRaio )(:
01 npdo it
dopp iii tt )(
p2
p3
)( itp
2312
2312ˆpppp
ppppn
MGattass
Ponto interno a triângulo
p1
0)( 112 ppvn int
i
p2
p3
2312 vvn
v31
v12
v23 0)( 112 ppvn exti
extip
int
ip
MGattass
Coordenadas baricêntricas
p1
v12
v23
v31
2/)(ˆ
2/)(ˆ
2/)(ˆ
1123
3312
2231
ppvn
ppvn
ppvn
i
i
i
A
A
A
pi é interior se L1, L2 e L3 [0..1]
A3
A1A2
321 AAAAT
T
T
T
AAL
AAL
AAL
/
/
/
33
22
11
n
p2
p3
extip
intip
3112ˆ vvn unit
MGattass
Coordenadas baricêntricas como funções interpolantes
p1
pi
A3
A1A2
1
1
1
L1
L2
L3
1321 LLL
3
3
3
3
2
2
2
2
1
1
1
1
z
y
x
L
z
y
x
L
z
y
x
L
z
y
x
i
i
ip3
p2
MGattass
Interpolação de cor e coordenada de textura através das coordenadas baricêntricas
3
3
3
3
2
2
2
2
1
1
1
1
b
g
r
L
b
g
r
L
b
g
r
L
b
g
r
i
i
i
ou:
3
33
2
22
1
11 v
uL
v
uL
v
uL
v
u
i
i
p1
pi
A3
A1A2
p3
p2c1 u1
c2 u2
c3 u3
MGattass
Forma otimizada de calculo
od
p1
n
p2
p3
)( itp
dop ii t
332211 pppp LLLi
33221132 )1( pppdop LLLLtii
Tomas Möller, Ben TrumboreFast, Minimum Storage Ray/Triangle Intersection
MGattass
Forma otimizada de cálculo od
p1
n
p2
p3
)( itp
33221132 )1( pppdo LLLLti
1133122 )()( poppppd LLti
1
3
21312 )()( poppppd
L
L
ti
bAx
MGattass
Caixa alinhada com os eixos
x
y
z
(xmin, ymin, zmin)(xmax, ymax, zmax)
o d=(dx, dy, dz)
ti
max
max
min
0
0
0
zzd
yyd
xxd
z
y
x
MGattass
Motivação: Uma cena simples
Camera:eye = (100,40,40), center = (0,0,0), up=(0,1,0), fov=90º, near = 30, far=230,
w=230, h=230.Esfera:
c = (0,20,0), r = 25, cor azul = (0,0,1)
Caixas alinhadas com os eixos:p0 = (-80,-50,-50), p1 = (50,-45,50) e cor amarela = (0.7,0.7,0)
p0 = (-80,-50,-60), p1 = (50,50,-50) e cor amarela = (0.7,0.7,0)
Luz Pontual:Posição=(60,120,40) e intensidade RGB l=(0.8,0.8,0.8)
MGattass
O que conseguiriamos se simplesmente atribuissemos aos pixels a cor dos objetos?
MGattass
Área aparente
energialuminosa
energialuminosa
A
cos' A
A
I (lumens)
I (lumens)
2/ mlumensA
Ii
2/cos' mlumensA
Ii
MGattass
Modelo de reflexão de superfíces Lambertianas
luz incidente luz
incidente
luz incidente
1. Reflete igualmente em todas as direções2. A intensidade é proporcional ao co-seno
MGattass
Componente de reflexão difusa
cos
cos
cos
dbb
dgg
drr
b
g
r
kl
kl
kl
I
I
I
- /2 0 /2
cos
1
n
L
ip
MGattass
Outras maneiras de se escrever:
I, l, k [0 ,1 ]
Eq. 1
LnLn
Ln
Ln
Lnˆˆˆˆ
ˆˆ
ˆˆ
ˆˆ
db
dg
dr
b
g
r
dbb
dgg
drr
dbb
dgg
drr
b
g
r
k
k
k
l
l
l
kl
kl
kl
kl
kl
kl
I
I
I
cos
cos
cos
dbb
dgg
drr
b
g
r
kl
kl
kl
I
I
I
MGattass
Luz difusa mais ambiente:
Ln ˆˆ
db
dg
dr
b
g
r
b
g
r
k
k
k
l
l
l
I
I
I
Ln ˆˆ
db
dg
dr
b
g
r
db
dg
dr
ab
ag
ar
b
g
r
k
k
k
l
l
l
k
k
k
I
I
I
I
I
I
MGattass
Componente de reflexão especular
I, l, k [0 ,1 ]
Eq.2
n
L
r
v Brilho
-1 -0,5 0 0,5 1
n=4n=1
n=8
nvr ˆˆ
nsbb
nsgg
nsrr
especularb
g
r
kl
kl
kl
I
I
I
cos
cos
cos
MGattass
Reflexão especular
n
sb
sg
sr
b
g
r
db
dg
dr
b
g
r
db
dg
dr
ab
ag
ar
b
g
r
k
k
k
l
l
l
k
k
k
l
l
l
k
k
k
I
I
I
I
I
I
vrLn ˆˆˆˆ
MGattass
Reflexão especular
n
L
r v
ip
luzrefletida
MGattass
Cálculo da reflexão de um vetor sobre outros
LnnLr ˆˆˆˆ2ˆ
LLh n
h h
Ln
nnLL ˆ)ˆˆ( n
hLr nˆ
n
L r
MGattass
Distribuição da luz direta sobre um ponto
nsluzdifluzamb kCkCCC vrLn ˆˆˆˆ
nL
rv
ip
Ambient Diffuse Specular
MGattass
Modelo de várias luzes
luzes
n
sb
sg
sr
b
g
r
db
dg
dr
b
g
r
db
dg
dr
ab
ag
ar
b
g
r
k
k
k
l
l
l
k
k
k
l
l
l
k
k
k
I
I
I
I
I
I
vrLn ˆˆˆˆ
vnnvr ˆˆ)ˆˆ(2ˆ r
luzes
n
r
sb
sg
sr
b
g
r
db
dg
dr
b
g
r
db
dg
dr
ab
ag
ar
b
g
r
k
k
k
l
l
l
k
k
k
l
l
l
k
k
k
I
I
I
I
I
I
LrLn ˆˆˆˆ
uma reflexão apenas
LnnLr ˆˆ)ˆˆ(2ˆ para cada fonte de luz
MGattass
Sombra
A luz não chega a superfíce
ip
sr
si ttsombradeRaio rpp ˆ)(:
MGattass
Modelo de várias luzes e sombra
contráriocaso
sombrasef s 1
0
luzes
n
r
sb
sg
sr
b
g
r
db
dg
dr
b
g
r
s
db
dg
dr
ab
ag
ar
b
g
r
k
k
k
l
l
l
k
k
k
l
l
l
f
k
k
k
I
I
I
I
I
I
LrLn ˆˆˆˆ
MGattass
Fontes de luz especiais: Onidirecional
Fonte: Mauricio Hofmam
MGattass
Fontes de luz especiais: Direcional
Fonte: Mauricio Hofmam
MGattass
Fontes de luz especiais: Farolete
Fonte: Mauricio Hofmam
MGattass
Uma revisão
MGattass
Reflexão de outros objetos
Superfície especular
n
vqq
iprr
ri ttrefletidoRaio rpp ˆ)(:
MGattass
Transparência
Objeto transparenteq1
q2
h1
h2
nv
ip
tr
ti ttrefratadoRaio rpp ˆ)(:
1
2
2
1
sin
sin
lei de Snell
MGattass
n
t
tt
vv
t1ˆ
Cálculo do Raio Refratado
qi
n vnnvv ˆˆ)ˆˆ( t
v
ip
tr
nvtv
ti vsin
it
it
sinsin
tt 2sin1cos
)ˆ(cosˆsin ntr ttt
ti ttrefratadoRaio rpp ˆ)(:
qt
MGattass
Advertência: Refração não é simples!
MGattass
Iluminação considerando superfícies refletoras e objetos transparentes
redução datransparência
redução da reflexão
)(
)(
)(
)1(
)(
)(
)(ˆˆˆˆ
tb
tg
tr
rb
rg
rr
luzes
n
r
sb
sg
sr
b
g
r
db
dg
dr
b
g
r
s
db
dg
dr
ab
ag
ar
b
g
r
I
I
I
o
I
I
I
k
k
k
k
l
l
l
k
k
k
l
l
l
f
k
k
k
I
I
I
I
I
I
r
r
r
r
r
r
LrLn
MGattass
Natureza recursiva do algoritmo de Rastreamento de Raios
R1
T1
R2
T2
R3
L1
L3
L2
R1
R2
L1
L3L2
T1
T2R3
MGattass
Resultado de curso
Alunos de CGI98
MGattass
Algoritmo de traçado de raios
Color trace (Scene scene, Vector3d eye, Vector3d ray, int depth){ determine a interseção mais próxima com um objeto if (intercepta objeto) { calcule a normal no ponto de interseção return ( shade ( scene, object, ray, point, normal, depth)); } return BACKGROUND;}
Color trace (Scene scene, Vector3d eye, Vector3d ray, int depth){ determine a interseção mais próxima com um objeto if (intercepta objeto) { calcule a normal no ponto de interseção return ( shade ( scene, object, ray, point, normal, depth)); } return BACKGROUND;}
selecione o centro de projeção(eye) e uma janela no plano de projeçãofor (cada pixel da tela) { determine o raio ray que vai do centro de projeção ao pixel; pixel = trace ( ray, 1); }}
selecione o centro de projeção(eye) e uma janela no plano de projeçãofor (cada pixel da tela) { determine o raio ray que vai do centro de projeção ao pixel; pixel = trace ( ray, 1); }}
Color shade (Scene scene, Object object, Vector3D ray, Vector3D point, Vector3D normal, int depth){ color = termo ambiente do material do objeto ;
for (cada luz) { L = vetor unitário na direção de point para a posição da luz; if (L • normal>0) { if (a luz não for bloqueada no ponto) { color += componente difusa (Eq.1) + componente especular (Eq.2) } }
if (depth >= maxDepth) return color;
if (objeto é refletor) { rRay = raio na direção de reflexão; rColor = trace(scene, point, rRay, depth+1); reduza rColor pelo coeficente de reflexão especular e some a color; }
return color;}
Color shade (Scene scene, Object object, Vector3D ray, Vector3D point, Vector3D normal, int depth){ color = termo ambiente do material do objeto ;
for (cada luz) { L = vetor unitário na direção de point para a posição da luz; if (L • normal>0) { if (a luz não for bloqueada no ponto) { color += componente difusa (Eq.1) + componente especular (Eq.2) } }
if (depth >= maxDepth) return color;
if (objeto é refletor) { rRay = raio na direção de reflexão; rColor = trace(scene, point, rRay, depth+1); reduza rColor pelo coeficente de reflexão especular e some a color; }
return color;}
MGattass
Texturas
u
v
1.0
1.0
0 u1.0
1.0
0
v
u1.0
1.0
0
v
Texturas 2D = Imagens onde o domínio é u, v [0,1]×[0,1] R2
MGattass
Sistemas de coordenada de textura na caixa
u
v
u
v
x
y
z
uv
(1,1)(0,0)
(0,0)
(0,0)face x=xmax
minmax
min
yy
yyu
minmax
min
zz
zzv
MGattass
Sistema de coordenada de textura na esfera
x
y
z
sinsin
cossin
cos
y
x
z
z
yx
xy
22
tan
/tan
1
1
v
u
)1(
)1(
wuj
hvi
i
j
MGattass
Sistema de coordenada de textura no triângulo
u
v
(u1,v1)
(u2,v2)
(u3,v3)
u1= u3 u2
v1= v2
v3
1
2
3
MGattass
Textura no triângulo e coordenadas baricêntricas
p1
v12
v23
v31
2/)(ˆ
2/)(ˆ
2/)(ˆ
1123
3312
2231
ppvn
ppvn
ppvn
i
i
i
A
A
A
A3
A1A2
321 AAAAT
T
T
T
AAL
AAL
AAL
/
/
/
33
22
11
n
p2
p3
intip
3
33
2
22
1
11 v
uL
v
uL
v
uL
v
u
i
i
)(1 213 LLL
MGattass
Textura
MGattass
Texturas de rugosidade (bump textures) eTexturas de deslocamentos (displacement mapping)
Pertubar aleatóriamenteas normais dos objetos
n
),(ˆ'ˆ nn
Pertubar aleatóriamenteas posições dos pontos
MGattass
Textura ambiente (environment maps)
x y
z
u
v
(0,0)
(1,1)face dos raios x>y e x>z
x
xyu
2
x
xzv
2
y=-x
y=x
z=-x
z=x
MGattass
Tratamento anti-alias
• Lance um raio para cada sub-pixel• Faça uma média dos valores obtidos
dx, dy = variáveis randômicas
dxdya sub-pixels
pixel
MGattass
Anti-alias
(a) original (b) uniforme (c) “jittered”
pixel pixel pixel
MGattass
Refinamento Progresivo
subdivisão finalsegunda subdivisão
primeira subdivisãoamostragem inicial
pixels sendo visitados pixels já visitados
MGattass
Radiosidade e Ray Tracing
Klaus Mueller, Stony Brook University, Computer Science (CSE 564)
global illuminationstandard raytracing
Feb 3rd, 2003 Afrigraph 2003
Todays State of the Art- Some Snapshots
MGattass
Aceleracao do RT
• Cálculos mais eficientes• Uso de uma Kd Tree
Classificação do Voxel
Voxel
valorcor
ar
Gordura
Músculo
Osso
0 1.0
Branco(1,1,1)
Vermelho (1,0,0)
Amarelo(1,1,0)
1.0
opacidade
Lançamento dos Raios
volume dosraios
volume dosslices
plano devisualização
raio
x
y
z
Partição dos Raios
x
y
z ta
tb
t=min(x,y,z) amostra
voxel
Iluminação de um voxel
)(XVN N L
Gel A
Gel B
Ln ˆˆ difluzamb kCCC
1a ordem
Estimativa do vetor normal
,2/,,,,
,2/,,,,
,2/,,,,
,,
11
11
11
zzyxfzyxf
yzyxfzyxf
xzyxfzyxf
zyxf
kjikji
kjikji
kjikji
kji
zyxf
zyxfN
,,
,,
2a ordem
Influência de um Voxel
r = 0g = 0b = 0 = 0a
r0
g0
b0
a0
r = a0 r0
g = a0 g0 b = a0 b0 = a a0
r1
g1
b1
a1
r = a0 r0+(1-a0 ) a1 r1 g = a0 g0+(1-a0 ) a1 g1 b = a0 b0+(1-a0 ) a1 b1 = a a0 +(1-a0 ) a1
Composição no raio
)1( ininout
CininCoutC )1(
outoutCC
Cin
Cout
ray
Interpolação
x,i
y,j
z,k
(xa, ya, za)
Dzzk
Dyyj
Dxxi
a
a
a
Dz
Dzzz
Dy
Dyyy
Dx
Dxxx
a
a
a
%
%
%
Interpolação no voxel
1,1,1
1,1,
1,,1
1,,
,1,1
,1,
,,1
,,
1
1
11
1
11
11
111),,(
kji
kji
kji
kji
kji
kji
kji
kji
vzyx
vzyx
vzyx
vzyx
vzyx
vzyx
vzyx
vzyxzyxv
vi+1,j+1,k+1
vi,j,k
vi+1,j,k
vi,j+1,k
vi,j,k +1
vi +1,j,k +1
vi,j +1,k +1
vi+1,j+1,k
xy
zv
Etapa de Composição
• Para cada raio:gera amostras de cor C l (pi) e opacidades a(pi)
• reamostragem dos dados dos voxels, em k amostras igualmente espaçadas
• Processo de acumulaçãoI= t Ib +(1-t)I0
I0 = cor do objeto
Ib = cor do fundo
I = cor resultante
t = coeficiente de transparência
Tripod
(x0,y0,z0)
y
x
z
(x0+ x,y0 + y,z0 + z)
exy= ( y)x + (- x)y +cxy
e zy=
(D
y)z
+(-
Dz)
y +c yz
exz= ( z)x + (- x)z +cxz
exy exz ezy
+
-
+
-
+
-
Valor inicial e incremento
exy= ( y)x + (- x)y +cxy
ezy= ( y)z +(- z)y +cyz
exz= ( z)x + (- x)z +cxz
(1/2,1/2,1/2)
( y- x)/2
( z- x)/2
( y- z)/2
x++
y
z
y++
- x
- z
z++
- x
y
Caminhamento discreto
Bresenham
Cohen
Efeito da amostragem
Bresenham Tripod
Partição celular
Plan
o da
imag
em
Volumede dados
Partição
Voxel uma amostra no meio da partição
marcador da partição
Partição na grade
tzi= ta
tyf=tb y
z
tyi
tzf
(ia ,ja ,0)
(ib ,Ny ,kb)
1)(
1)(
1)(
abz
aby
abx
kkn
jjn
iin
zzizfz
yyiyfy
xxixfx
nttt
nttt
nttt
)(
)(
)(
Partição celular: algoritmo
Dados: txi,tyi,tzi, txf,tyf,tzf, nx,ny,nzdtx = txf/nx; dty = tyf/ny; dtz = tzf/nz; tx=txi; ty=tyi; tz=tzi; t1 = min(tx,ty,tz) e w é o eixo do mínimon=nx+ny+nz; while ( n > 0 )
tw += dtw; n--;t2 = min(tx,ty,tz) e w é o eixo do mínimoSample ((t1+t2)/2);t1=t2;
Otimizações
• Velocidade– Refinamento progressivo– Terminação adaptativa do raio– Estruturas Hieráquicas
• Qualidade da imagem– aumento do número de amostra no raio– lançamento de mais raios– melhora esquema de interpolação
Refinamento Progresivo
subdivisão finalsegunda subdivisão
primeira subdivisãoamostragem inicial
pixels sendo visitados pixels já visitados
Refinamento Progressivo: Exemplo
256x256128x12864x6432x32
16x168x84x42x2