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

Preview:

DESCRIPTION

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). Canaletto (Giovanni Antonio Canal) (1697-1768). Pin-Hole Camera. Câmara escura - Leonardo da Vinci -1545 - PowerPoint PPT Presentation

Citation preview

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

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

Pin-Hole Camera

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

Modelo de câmera

x

y

z

Iluminação

Objetos

Câmara

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 =

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

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

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

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

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:

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

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

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.

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 ]

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 ]

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

Luz direta sobre um ponto

N

R

V

nsdifluzamb VRkLNkCCC )(

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

Sombra

A luz não chega a superfíce

Uma revisão

Reflexão de outros objetos

N V

Superfície especular

Transparência

NV

Superfície transparente

=sin

sin

Lei de Snell:

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

Traçado de Raios Recursivo

R1

T1

R2

T2

R3

L1

L3

L2

R1

R2

L1

L3L2

T1

T2R3

Resultado de curso

Alunos de CGI98

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

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

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

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

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

Refinamento Progresivo

subdivisão finalsegunda subdivisão

primeira subdivisãoamostragem inicial

pixels sendo visitados pixels já visitados

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

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

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

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

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

Modelo de Lente e Obturador

tela (pixels) lente e obturador cena

Focalização

imagem lente focalização

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

di df

d df

Obtenção dos raios

plano daimagem lente plano de

focalização

P

A

Radiosidade e Ray Tracing

Recommended