algoritmo de rastreamento de raios

110
MGattass Algoritmo de Rastreamento de Raios

Upload: skyler

Post on 12-Jan-2016

49 views

Category:

Documents


0 download

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

Page 1: Algoritmo de Rastreamento de Raios

MGattass

Algoritmo de Rastreamento de Raios

Page 2: Algoritmo de Rastreamento de Raios

MGattass

Perspectiva e tamanhos relativos

Page 3: Algoritmo de Rastreamento de Raios

MGattass

Perspectiva e tamanhos relativos

Page 4: Algoritmo de Rastreamento de Raios

MGattass

Iluminação e posição

O que está na frente?A que distância do apoio?

Page 5: Algoritmo de Rastreamento de Raios

MGattass

Sombra

Page 6: Algoritmo de Rastreamento de Raios

MGattass

Oclusão

Page 7: Algoritmo de Rastreamento de Raios

MGattass

Gradiente de textura

Proposto no século XX!

Page 8: Algoritmo de Rastreamento de Raios

MGattass

Efeitos Passivos

– Inerentes a aparência do mundo externo– Independem dos nossos olhos– Fotografias parecem 3D

Page 9: Algoritmo de Rastreamento de Raios

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

Page 10: Algoritmo de Rastreamento de Raios

Canaletto (Giovanni Antonio Canal) (1697-1768).

Pintores

Ponto de fuga

Page 11: Algoritmo de Rastreamento de Raios

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

Page 12: Algoritmo de Rastreamento 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

Page 13: Algoritmo de Rastreamento de Raios

MGattass

A Câmara “Pinhole” e seu modelo

centro deprojeção

raios

plano deprojeçãoplano deprojeção

eixoóptico

eixos doplano deprojeção

Page 14: Algoritmo de Rastreamento de Raios

MGattass

Traçado de Raios

xo

zo

Objetos

Pixel(RGB)

Luz

Iluminação

yo

Câmara

xe

ye

ze eye

Page 15: Algoritmo de Rastreamento de Raios

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

Page 16: Algoritmo de Rastreamento de Raios

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

Page 17: Algoritmo de Rastreamento de Raios

MGattass

Abertura de uma câmera

df1df2

fovy1

fovy2h

2tan

2y

f

fov

d

h

2tan2 y

f

fovdh

Page 18: Algoritmo de Rastreamento de Raios

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

)

Page 19: Algoritmo de Rastreamento de Raios

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

Page 20: Algoritmo de Rastreamento de Raios

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

Page 21: Algoritmo de Rastreamento de Raios

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:

Page 22: Algoritmo de Rastreamento de Raios

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

Page 23: Algoritmo de Rastreamento de Raios

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

Page 24: Algoritmo de Rastreamento de Raios

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

Page 25: Algoritmo de Rastreamento de Raios

MGattass

Um modelo de câmera

zo

xoeyeo

eyepd xy

yo

xe

ye

ze

u

v

o1

eyep

xy

dop ttraio )(:

d

Page 26: Algoritmo de Rastreamento de Raios

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

Page 27: Algoritmo de Rastreamento de Raios

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

Page 28: Algoritmo de Rastreamento de Raios

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

Page 29: Algoritmo de Rastreamento de Raios

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 );

Page 30: Algoritmo de Rastreamento de Raios

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

Page 31: Algoritmo de Rastreamento de Raios

MGattass

Modelagem dos Objetos

Implícita: Por fronteira:

r cp

p

dados:

centro c raio r

p1

p2p3

Page 32: Algoritmo de Rastreamento de Raios

• 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

Page 33: Algoritmo de Rastreamento de Raios

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

Page 34: Algoritmo de Rastreamento de Raios

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

Page 35: Algoritmo de Rastreamento de Raios

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:

Page 36: Algoritmo de Rastreamento de Raios

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

Page 37: Algoritmo de Rastreamento de Raios

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

Page 38: Algoritmo de Rastreamento de Raios

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

Page 39: Algoritmo de Rastreamento de Raios

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

Page 40: Algoritmo de Rastreamento de Raios

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

Page 41: Algoritmo de Rastreamento de Raios

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

Page 42: Algoritmo de Rastreamento de Raios

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

Page 43: Algoritmo de Rastreamento de Raios

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

Page 44: Algoritmo de Rastreamento de Raios

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)

Page 45: Algoritmo de Rastreamento de Raios

MGattass

O que conseguiriamos se simplesmente atribuissemos aos pixels a cor dos objetos?

Page 46: Algoritmo de Rastreamento de Raios

MGattass

Área aparente

energialuminosa

energialuminosa

A

cos' A

A

I (lumens)

I (lumens)

2/ mlumensA

Ii

2/cos' mlumensA

Ii

Page 47: Algoritmo de Rastreamento de Raios

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

Page 48: Algoritmo de Rastreamento de Raios

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

Page 49: Algoritmo de Rastreamento de Raios

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

Page 50: Algoritmo de Rastreamento de Raios

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

Page 51: Algoritmo de Rastreamento de Raios

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

Page 52: Algoritmo de Rastreamento de Raios

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

Page 53: Algoritmo de Rastreamento de Raios

MGattass

Reflexão especular

n

L

r v

ip

luzrefletida

Page 54: Algoritmo de Rastreamento de Raios

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

Page 55: Algoritmo de Rastreamento de Raios

MGattass

Distribuição da luz direta sobre um ponto

nsluzdifluzamb kCkCCC vrLn ˆˆˆˆ

nL

rv

ip

Ambient Diffuse Specular

Page 56: Algoritmo de Rastreamento de Raios

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

Page 57: Algoritmo de Rastreamento de Raios

MGattass

Sombra

A luz não chega a superfíce

ip

sr

si ttsombradeRaio rpp ˆ)(:

Page 58: Algoritmo de Rastreamento de Raios

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

Page 59: Algoritmo de Rastreamento de Raios

MGattass

Fontes de luz especiais: Onidirecional

Fonte: Mauricio Hofmam

Page 60: Algoritmo de Rastreamento de Raios

MGattass

Fontes de luz especiais: Direcional

Fonte: Mauricio Hofmam

Page 61: Algoritmo de Rastreamento de Raios

MGattass

Fontes de luz especiais: Farolete

Fonte: Mauricio Hofmam

Page 62: Algoritmo de Rastreamento de Raios

MGattass

Uma revisão

Page 63: Algoritmo de Rastreamento de Raios

MGattass

Reflexão de outros objetos

Superfície especular

n

vqq

iprr

ri ttrefletidoRaio rpp ˆ)(:

Page 64: Algoritmo de Rastreamento de Raios

MGattass

Transparência

Objeto transparenteq1

q2

h1

h2

nv

ip

tr

ti ttrefratadoRaio rpp ˆ)(:

1

2

2

1

sin

sin

lei de Snell

Page 65: Algoritmo de Rastreamento de Raios

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

Page 66: Algoritmo de Rastreamento de Raios

MGattass

Advertência: Refração não é simples!

Page 67: Algoritmo de Rastreamento de Raios

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

Page 68: Algoritmo de Rastreamento de Raios

MGattass

Natureza recursiva do algoritmo de Rastreamento de Raios

R1

T1

R2

T2

R3

L1

L3

L2

R1

R2

L1

L3L2

T1

T2R3

Page 69: Algoritmo de Rastreamento de Raios

MGattass

Resultado de curso

Alunos de CGI98

Page 70: Algoritmo de Rastreamento de Raios

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); }}

Page 71: Algoritmo de Rastreamento de Raios

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;}

Page 72: Algoritmo de Rastreamento de Raios

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

Page 73: Algoritmo de Rastreamento de Raios

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

Page 74: Algoritmo de Rastreamento de Raios

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

Page 75: Algoritmo de Rastreamento de Raios

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

Page 76: Algoritmo de Rastreamento de Raios

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

Page 77: Algoritmo de Rastreamento de Raios

MGattass

Textura

Page 78: Algoritmo de Rastreamento de Raios

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

Page 79: Algoritmo de Rastreamento de Raios

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

Page 80: Algoritmo de Rastreamento de Raios

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

Page 81: Algoritmo de Rastreamento de Raios

MGattass

Anti-alias

(a) original (b) uniforme (c) “jittered”

pixel pixel pixel

Page 82: Algoritmo de Rastreamento de Raios

MGattass

Refinamento Progresivo

subdivisão finalsegunda subdivisão

primeira subdivisãoamostragem inicial

pixels sendo visitados pixels já visitados

Page 83: Algoritmo de Rastreamento de Raios

MGattass

Radiosidade e Ray Tracing

Klaus Mueller, Stony Brook University, Computer Science (CSE 564)

global illuminationstandard raytracing

Page 84: Algoritmo de Rastreamento de Raios

Feb 3rd, 2003 Afrigraph 2003

Todays State of the Art- Some Snapshots

Page 85: Algoritmo de Rastreamento de Raios
Page 86: Algoritmo de Rastreamento de Raios
Page 87: Algoritmo de Rastreamento de Raios
Page 88: Algoritmo de Rastreamento de Raios
Page 89: Algoritmo de Rastreamento de Raios
Page 90: Algoritmo de Rastreamento de Raios

MGattass

Aceleracao do RT

• Cálculos mais eficientes• Uso de uma Kd Tree

Page 91: Algoritmo de Rastreamento de Raios

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

Page 92: Algoritmo de Rastreamento de Raios

Lançamento dos Raios

volume dosraios

volume dosslices

plano devisualização

raio

x

y

z

Page 93: Algoritmo de Rastreamento de Raios

Partição dos Raios

x

y

z ta

tb

t=min(x,y,z) amostra

voxel

Page 94: Algoritmo de Rastreamento de Raios

Iluminação de um voxel

)(XVN N L

Gel A

Gel B

Ln ˆˆ difluzamb kCCC

Page 95: Algoritmo de Rastreamento de Raios

1a ordem

Estimativa do vetor normal

,2/,,,,

,2/,,,,

,2/,,,,

,,

11

11

11

zzyxfzyxf

yzyxfzyxf

xzyxfzyxf

zyxf

kjikji

kjikji

kjikji

kji

zyxf

zyxfN

,,

,,

2a ordem

Page 96: Algoritmo de Rastreamento de Raios

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

Page 97: Algoritmo de Rastreamento de Raios

Composição no raio

)1( ininout

CininCoutC )1(

outoutCC

Cin

Cout

ray

Page 98: Algoritmo de Rastreamento de Raios

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

%

%

%

Page 99: Algoritmo de Rastreamento de Raios

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

Page 100: Algoritmo de Rastreamento de Raios

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

Page 101: Algoritmo de Rastreamento de Raios

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

+

-

+

-

+

-

Page 102: Algoritmo de Rastreamento de Raios

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

Page 103: Algoritmo de Rastreamento de Raios

Caminhamento discreto

Bresenham

Cohen

Page 104: Algoritmo de Rastreamento de Raios

Efeito da amostragem

Bresenham Tripod

Page 105: Algoritmo de Rastreamento de Raios

Partição celular

Plan

o da

imag

em

Volumede dados

Partição

Voxel uma amostra no meio da partição

marcador da partição

Page 106: Algoritmo de Rastreamento de Raios

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

)(

)(

)(

Page 107: Algoritmo de Rastreamento de Raios

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;

Page 108: Algoritmo de Rastreamento de Raios

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

Page 109: Algoritmo de Rastreamento de Raios

Refinamento Progresivo

subdivisão finalsegunda subdivisão

primeira subdivisãoamostragem inicial

pixels sendo visitados pixels já visitados

Page 110: Algoritmo de Rastreamento de Raios

Refinamento Progressivo: Exemplo

256x256128x12864x6432x32

16x168x84x42x2