mgattass algoritmo de rastreamento de raios. mgattass registros da camera obscura (latim) 1.mo-ti (v...

75
MGattass Algoritmo de Rastreamento de Raios

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Algoritmo de Rastreamento de Raios

Page 2: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Registros da “camera obscura (latim)”

1. Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno orifício2. Aristótes (384-322 AC) – eclipse do sol3. Alhazen de Basra (X DC)4. Leonardo da Vince (XVI DC) ...

Page 3: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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

Pintores

Ponto de fuga

Page 4: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Evolução da Camera obscura para as Câmaras fotográficas

Luis-Jacques-Mandé Daguerre (1839)Câmara escura - Leonardo da Vinci -1545

Page 5: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

A Câmra Pinhole

Page 6: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Princípios da câmera Pin-Hole

caixa

filme

objetopinhole

raios de luz

imagem

Câmera

plano de projeção

centro de projeção

Projeção cônica

Page 7: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Síntese de imagens

xo

zo

Objetos

Pixel(RGB)

Luz

Iluminação

yo

Câmara

xe

ye

ze eye

Page 8: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Algoritmo básico

Para cada pixel da telaLance 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 9: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Definição de uma câmera

w pixels largura b

h pi

xels

a

ltur

a a

janela

ocentro de projeção janela

eixoóptico

centro óptico

oeye

ah

wb

plano de projeção

centro de projeção

Projeção cônica

Page 10: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Abertura de uma câmera

f1f2

fov1

fov2a

2tan

2

fov

f

a

2tan2

fovfa

Page 11: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Eixos de uma câmera

eixo óptico

v

u

eye

xe

ye

ze

eixo horizontal

eixo vertical

Page 12: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Parâmetros de funções do OpenGL

Void glPerspective(GLdouble fovy,GLdouble aspect,GLdouble near_,GLdouble far_);

aspect = w/h

xe

ye

ze

near

far

w

h

ye

ze

fovy

void glViewport(GLint x0, GLint y0, GLsizei width, GLsizei height );

u

v

width

heig

hto1 x0

y0

Page 13: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 14: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Parâmetros internos ou intrínsecos

near = plano próximo(distância focal)

fovy= campo de visão

w h pixels

far = plano distante

nearf

2tan2

fovfa

ah

wb

Primários: Derivados:

Page 15: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 16: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 17: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 18: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Um modelo de câmera

zo

xoeyeo

eyepd xy

yo

xe

ye

ze

u

v

o1

eyep

xy

dop ttraio )(:

d

Page 19: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Lançamento de Raios

vuop ˆ)(ˆ)(1 yvxuxy

bw

xxu )(

ah

yyv )(

o1

pxy

10 2 x3

h-1

uw-1

v

1

2

y

w pixels em b

h pi

xels

em

a

eexy h

ya

w

xb yxop ˆˆ1

Page 20: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Canto inferior esquerdo da janela no plano near (ou far)

nearf

ef z

)2

tan(2fovy

fa

e

ay

2

ah

wb

e

bx

2

eye

z0

y0

x0

zexe

ye

plano near

canto inferior esquerdo

1o

eee

baf xyzeyeo ˆ

2ˆ1

eeeeexy h

ya

w

xbbaf yxxyzeyep ˆˆˆ

eee w

xb

h

yaf xyzd ˆ

2

2

Page 21: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Resultando

zo

xo

eyeo yo

xe

ye

ze

u

v

o1

eyep

xy

dop ttraio )(:

d

eee w

xb

h

yaf xyzd ˆ

2

2

Page 22: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Tipo Abstrato de Dados: Camera em C

struct _Camera { /* Definição da câmera */ Vector eye, center, up; float fovy; float nearp,farp; int w,h;

/* Parametros derivados */ float f; float a,b; Vector xe,ye,ze;};

typedef struct _Camera * Camera;

Camera* camCreate( Vector eye, Vector at, Vector up, double fovy, double nearp, double farp, int w, int h );

Ray camGetRay( Camera camera, double x, double y );

Page 23: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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

nearf

2tan2

fovfa a

h

wb

Dados: fov, w, h, near, far, eye, center, up

eee w

xb

h

yaf xyzd ˆ

2

2

Page 24: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Modelagem dos Objetos

Implícita: Por fronteira:

r cp

p

dados:

centro c raio r

p1

p2p3

Page 25: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 26: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Objeto esfera: métodos

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 27: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Interseção com o plano do triângulo

o

d

01 npondit p1

n

nd

nop

1it

0)(: 1 npp itPlano

dop ttRaio )(:

01 npdo it

dopp iii tt )(

p2

p3

)( itp

2312

2312ˆpppp

ppppn

Page 28: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Ponto interno a triângulo

p1

0)( 112 ppvn int

i

p2

p3

2312 vvn

v31

v12

v23 0)( 112 pppn exti

extip

int

ip

Page 29: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 30: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 31: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 32: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 33: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 34: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

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

Page 35: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Área aparente

energialuminosa

energialuminosa

A

cos' A

A

I (lumens)

I (lumens)

2/ mlumensA

Ii

2/cos' mlumensA

Ii

Page 36: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 37: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 38: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 39: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 40: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 41: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 42: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Reflexão especular

n

L

r v

ip

luzrefletida

Page 43: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 44: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Distribuição da luz direta sobre um ponto

nsluzdifluzamb kCkCCC vrLn ˆˆˆˆ

nL

rv

ip

Ambient Diffuse Specular

Page 45: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 46: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Sombra

A luz não chega a superfíce

ip

sr

si ttsombradeRaio rpp ˆ)(:

Page 47: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 48: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Fontes de luz especiais: Onidirecional

Fonte: Mauricio Hofmam

Page 49: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Fontes de luz especiais: Direcional

Fonte: Mauricio Hofmam

Page 50: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Fontes de luz especiais: Farolete

Fonte: Mauricio Hofmam

Page 51: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Uma revisão

Page 52: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Reflexão de outros objetos

Superfície especular

n

v

iprr

ri ttrefletidoRaio rpp ˆ)(:

Page 53: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Transparência

Objeto transparente

nv

ip

tr

ti ttrefratadoRaio rpp ˆ)(:

1

2

2

1

sin

sin

lei de Snell

Page 54: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

n

t

tt

vv

t1ˆ

Cálculo do Raio Refratado

i

n vnnvv ˆˆ)ˆˆ( t

v

ip

tr

nvtv

ti vsin

it

it

sinsin

tt 2sin1cos

)ˆ(cosˆsin ntr ttt

ti ttrefratadoRaio rpp ˆ)(:

t

Page 55: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

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

Page 56: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 57: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Natureza recursiva do algoritmo de Rastreamento de Raios

R1

T1

R2

T2

R3

L1

L3

L2

R1

R2

L1

L3L2

T1

T2R3

Page 58: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Resultado de curso

Alunos de CGI98

Page 59: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 60: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 61: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 62: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 63: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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

x

Page 64: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 65: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 66: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Textura

Page 67: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 68: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 69: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

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 70: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Anti-alias

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

pixel pixel pixel

Page 71: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Refinamento Progresivo

subdivisão finalsegunda subdivisão

primeira subdivisãoamostragem inicial

pixels sendo visitados pixels já visitados

Page 72: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno
Page 73: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno
Page 74: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno
Page 75: MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno

MGattass

Radiosidade e Ray Tracing

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

global illuminationstandard raytracing