algoritmo de rastreamento de raios

Post on 12-Jan-2016

49 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Algoritmo de Rastreamento de Raios. Perspectiva e tamanhos relativos. Perspectiva e tamanhos relativos. Iluminação e posição. O que está na frente? A que distância do apoio?. Sombra. Oclusão. Proposto no século XX!. Gradiente de textura. Efeitos Passivos. - PowerPoint PPT Presentation

TRANSCRIPT

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ˆ1

ep

ep

xy h

yh

w

xw yxop ˆˆ1

ep

ep

ef w

xw

h

yhd xyzd ˆ

2

2

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

2

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

2

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

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

top related