Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática...

44
Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio

Transcript of Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática...

Page 1: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Traçado de Raios e

Modelos de Iluminação

por

Marcelo Gattass

Departamento de Informática

PUC-Rio

Page 2: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Pinturas: produção de imagens

Avercamp, Hendrick (1585-1634).

Page 3: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

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

Page 4: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Pin-Hole Camera

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

Page 5: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Modelo de câmera

x

y

z

Iluminação

Objetos

Câmara

Page 6: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Traçado de raios: raios e objetos implícitos

x

y

z

x = x0 + t (x1 - x0 )y = y0 + t (y1 - y0 )z = z0 + t (z1 - z0 )

(x-xc )2 + (y-yc )2 + (z-zc )2 = R2

-b ± b2 - 4ac2a

t =

Page 7: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Interseção com a esfera

0

0)(2

)(:

)(:

2

22

2

22

22

ctbta

rCOCOtCODtDD

rDtCODtCO

rCDtO

rCtPEsfera

tDOtPRaio

ii

ii

ii

i

i

OD

ti

Page 8: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

P0

P1

x = x0 + t (x1 - x0 )y = y0 + t (y1 - y0 )z = z0 + t (z1 - z0 )

z

xy

Ax + By + Cz + D = 0

0 1

3

A0

A3

A1

L0 = A0 / AT

L1 = A1 / AT

L2 = A2 / AT

Li [0 ,1 ]

P é interior se e somente se

Raios e objetos descritos pela fronteira

Page 9: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Interseção com o plano do triângulo

OD

P(ti)

0

0

0

1

1

1

NVONDt

NVDtO

NVPP

i

i

V1

N

ND

NOVti

1

DtOP i

Page 10: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Ponto no interior de um triângulo

V1

V2

V3

Pi

Pe

a12

a23

a31

)(

)(

)(

3313

2232

1121

VPat

VPat

VPat

N P é interior se t1, t2 e t3 tem o mesmo sentido,ou seja:

0

0

31

21

tt

tt 0

0

31

21

tt

ttou

Page 11: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Coordenadas baricêntricas

V1

V2

V3

Pi

Pe

a12

a23

a31

2/)(

2/)(

2/)(

3123

2312

1231

VPaA

VPaA

VPaA

NP é interior se L1, L2 e L3 [0..1]

A3

A1A2

321 AAAAT

T

T

T

AAL

AAL

AAL

/

/

/

33

22

11

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

i

Mais ainda:

Page 12: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Coordenadas baricêntricas como interpolantes

V1

V2

V3

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

i

Page 13: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Interpolação com coordenadas baricêntricas

V1

V2

V3

Pi

A3

A1A2

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:

C1

C2

C3

U1

U2

U3

3

33

2

22

1

11 v

uL

v

uL

v

uL

v

u

i

i

Page 14: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Exemplo: uma esfera e duas paredes

z

xy

#SURFACE20. 20. 100. 160. 160. 60.#LIGHT40. 120. 0. 255 255 255#SPHERE0 25.0 0.0 20.0 0.0#BOX1 -80. -50. -50. 50. -45. 50.1 -80. -50. -60. 50. 50. -50.

Page 15: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Componente de reflexão difusa

NL

N

N

L

L

LN

kl

kl

kl

LN

k

k

k

l

l

l

I

I

I

dbb

dgg

drr

db

dg

dr

b

g

r

b

g

r

I, l, k [0 ,1 ]

Page 16: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Componente de reflexão especular

NR

V

L

Brilho

n

sbb

sgg

srrn

sb

sg

sr

b

g

r

b

g

r

VR

kl

kl

kl

VR

k

k

k

l

l

l

I

I

I

-1 -0,5 0 0,5 1

n=4n=1

n=8

I, l, k [0 ,1 ]

Page 17: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Cálculo do vetor R

N

L R1

L’

L’ = L / (L*N)

H

H = N - L’

HR’

R’ = N + H

LNL

NR

)(

12

R = unitário (R’)

Page 18: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Luz direta sobre um ponto

N

R

V

nsdifluzamb VRkLNkCCC )(

Page 19: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Modelo de várias luzes

luzes

n

sb

sg

sr

b

g

r

db

dg

dr

b

g

r

ab

ag

ar

b

g

r

VR

k

k

k

l

l

l

LN

k

k

k

l

l

l

I

I

I

I

I

I

ab

ag

ar

I

I

I

Luz Ambiente

Page 20: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Sombra

A luz não chega a superfíce

Page 21: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Uma revisão

Page 22: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Reflexão de outros objetos

N V

Superfície especular

Page 23: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Transparência

NV

Superfície transparente

=sin

sin

Lei de Snell:

Page 24: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Iluminação considerando R e T

)(

)(

)(

)1(

)(

)(

)(

TI

TI

TI

o

RI

RI

RI

cVR

k

k

k

l

l

l

LN

k

k

k

l

l

l

I

I

I

I

I

I

b

g

r

b

g

r

rluzes

n

sb

sg

sr

b

g

r

db

dg

dr

b

g

r

ab

ag

ar

b

g

r

transparênciaredução da reflexão

Page 25: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Traçado de Raios Recursivo

R1

T1

R2

T2

R3

L1

L3

L2

R1

R2

L1

L3L2

T1

T2R3

Page 26: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Resultado de curso

Alunos de CGI98

Page 27: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Algoritmo de traçado de raios

rtColor trace ( rtRay 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 ( object, ray, intersection, normal, depth); } return BACKGOUND;}

rtColor trace ( rtRay 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 ( object, ray, intersection, normal, depth); } return BACKGOUND;}

selecione o centro de projeção 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 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 28: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

rtColor shade ( rtObject object, rtRay ray, int depth, rtPoint point, rtNormal normal, int depth){ rtColor color, rColor, sColor; rtRay rRay, tRay, sRay; color = termo ambiente;for (cada luz) { sRay = raio para o ponto de luz; if (sRay • normal>0) { calcule quanto de luz é bloqueada por superfícies opacas e transparentes e use para computar as componentes difusa e especular } }

if (depth >= maxDepth) return color;

if (objeto é refletor) { rRay = raio na direção de refleção; rColor = trace( rRay, depth+1); reduza rColor pelo coeficente de refleção especular e some a color; }

if (objeto é transparente) { tRay = raio na direção de refração; if (reflexão total não ocorre} { tColor = trace( tRay, depth+1); reduza tColor pelo coeficente de refração especular e some a color; } }

return color;}

rtColor shade ( rtObject object, rtRay ray, int depth, rtPoint point, rtNormal normal, int depth){ rtColor color, rColor, sColor; rtRay rRay, tRay, sRay; color = termo ambiente;for (cada luz) { sRay = raio para o ponto de luz; if (sRay • normal>0) { calcule quanto de luz é bloqueada por superfícies opacas e transparentes e use para computar as componentes difusa e especular } }

if (depth >= maxDepth) return color;

if (objeto é refletor) { rRay = raio na direção de refleção; rColor = trace( rRay, depth+1); reduza rColor pelo coeficente de refleção especular e some a color; }

if (objeto é transparente) { tRay = raio na direção de refração; if (reflexão total não ocorre} { tColor = trace( tRay, depth+1); reduza tColor pelo coeficente de refração especular e some a color; } }

return color;}

Page 29: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Tratamento anti-alias

Pixel

•Lance um raio para cada sub-pixel•Faça uma média dos valores obtidos

Sub-Pixels

...

dxdy

dx, dy = variáveis randômicas

Page 30: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Normal e cor

Pertubar aleatóriamenteas normais dos objetos

N

N’

A cor de um ponto depende de sua posição

num mapa de textura

Page 31: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

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 32: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Refinamento Progresivo

subdivisão finalsegunda subdivisão

primeira subdivisãoamostragem inicial

pixels sendo visitados pixels já visitados

Page 33: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Modelo da câmera

Dados: eye, ref, vup (definem o sistema de coordenadas do olho)abertura do campo fixa de 900

eye

ref

vup

Coordenadas dosObjetos eye

ref

45o45o

Vista de cima

Page 34: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Calcula o sistema - xe ye ze

ref

ze

eye

vup

z0

y0

x0

view

ze = – view / ||view||ze = – view / ||view||

vup

ref

eye

z0

y0

x0

view

dados:eye, ref, vupabertura da câmera

dados:eye, ref, vupabertura da câmera

view =ref-eyeview =ref-eye

Page 35: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Calcula o sistema - xe ye ze

xe = (vup x ze) / ||vup x ze||xe = (vup x ze) / ||vup x ze||

ref

eye

vup

z0

y0

x0

view

zexe

ye = ze x xeye = ze x xe

ref

eye

vup

z0

y0

x0

view

zexe

ye

eye

vup ze

xe

ye

view

Page 36: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Canto inferior da janela no plano de projeção

eye

z0

y0

x0

A

zexe

ye

B

C

Pll = eye + A + B + C

Pll = eye - ze - ye - xe

Pll

Se o ângulo de abertura for 900

, d=1 e w = h:A = - xe

B = - ye

C = - xe

Page 37: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Lançamento de Raios

Pll dx = 2 xe / w

dy = 2 ye / h

Pll dx = 2 xe / w

dy = 2 ye / h P0 P

P0 = Pu + dx/2 + dy/2;for (i=0; i<=w; i++) { P = P0 ; for (j=0; j<=h; j++) { P = P + dx; trace o raio (eye, P); } P0 = P0 + dy;}

Page 38: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Modelo de Lente e Obturador

tela (pixels) lente e obturador cena

Page 39: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Focalização

imagem lente focalização

Luz de vários objetos chegam no mesmo ponto confusão

di df

d df

Page 40: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Obtenção dos raios

plano daimagem lente plano de

focalização

P

A

Page 41: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.
Page 42: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.
Page 43: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.
Page 44: Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Radiosidade e Ray Tracing