INF 1366 – Computação Gráfica Interativa Ray Tracing...

50
Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Ray Tracing (Traçado de Raios) Alberto B. Raposo [email protected] http://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm

Transcript of INF 1366 – Computação Gráfica Interativa Ray Tracing...

Page 1: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

INF 1366 – Computação Gráfica Interativa

Ray Tracing (Traçado de Raios)

Alberto B. [email protected]

http://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm

Page 2: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Tracing / Ray Casting• Como computar a irradiação de um raio de

luz?

Angel Figure 6.2

D. BroganUniv. of Virginia

Page 3: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Casting

•Forma mais simples de Ray Tracing

Plano de visualização

Posição do observador

Raios atravésdo plano devisualização

D. BroganUniv. of Virginia

Page 4: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Máquina de ray casting de Durer

• Albrecht Durer, Século XVI

Cluter & Durand, MIT

Page 5: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Máquina de ray casting de Durer

Cluter & Durand, MIT

Page 6: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Máquina de ray casting de Durer

Cluter & Durand, MIT

Page 7: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Casting• Para cada amostra (pixel)…

– Construa raio da posição do observador através do plano de visualização• feito no sentido contrário: do olho para fonte de luz. Assim, só

calculamos os raios que geram alguma coisa visível

– Encontre a primeira superfície que o raio intercepta– Calcule a cor baseada no modelo de iluminação (ex., Phong)

D. BroganUniv. of Virginia

Page 8: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Casting

Amostras no planode visualização

Posição do olho

Raiosatravés do

plano de visualização

D. BroganUniv. of Virginia

Page 9: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Casting• Implementação Simples:

Image RayCast(Camera camera, Scene scene, int width, int height){

Image image = new Image(width, height);for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) { Ray ray = ConstructRayThroughPixel(camera, i, j);Intersection hit = FindIntersection(ray, scene);image[i][j] = GetColor(hit);

}}return image;

}D. BroganUniv. of Virginia

Page 10: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Casting• Implementação Simples:

Image RayCast(Camera camera, Scene scene, int width, int height){

Image image = new Image(width, height);for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) { Ray ray = ConstructRayThroughPixel(camera, i, j);Intersection hit = FindIntersection(ray, scene);image[i][j] = GetColor(hit);

}}return image;

}D. BroganUniv. of Virginia

Page 11: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Construindo Raio Através de um Pixel

right

back

Up direction

P0

towards

Plano devisualização

P

V

Ray: P = P0 + tVRay: P = P0 + tV

D. BroganUniv. of Virginia

Page 12: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Construindo Raio Através de um Pixel

• Exemplo 2D

dΘ towardsP0

right

right = towards x up

Θ = meio ângulo do frustumd = distância ao plano de visualização

P1 = P0 + d*towards – d*tan(Θ)*rightP2 = P0 + d*towards + d*tan(Θ)*right

P1

P2

2*d*tan(Θ)

P

P = P1 + (i/width + 0.5) * (P2 - P1)= P1 + (i/width + 0.5) * 2*d*tan (Θ)*right

V = (P - P0) / ||P - P0 ||

V

Raio: P = P0 + tVRaio: P = P0 + tV

D. BroganUniv. of Virginia

2200 )()(),(

00 PPPP yyxxPPdistPP −+−==−

Page 13: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Casting• Implementação Simples:

Image RayCast(Camera camera, Scene scene, int width, int height){

Image image = new Image(width, height);for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) { Ray ray = ConstructRayThroughPixel(camera, i, j);Intersection hit = FindIntersection(ray, scene);image[i][j] = GetColor(hit);

}}return image;

}D. BroganUniv. of Virginia

Page 14: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção do raio com a cena

• É o que consome a maior parte do algoritmo de ray trace.

• Interseções com diferentes primitivasgeométricas– Esfera– Triângulo– Grupos de primitivas (cena)

Page 15: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-EsferaRaio: P = P0 + tVEsfera: |P - C|2 - r 2 = 0

P0

V

C

P

r

P’

D. BroganUniv. of Virginia

Page 16: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-EsferaRaio: P = P0 + tVEsfera: ||P – C||2 = r 2

Substituindo P:||P0 + tV - C||2 = r 2

P0

V

C

Pr

P’

( )( ) ( )( ) 200 rVtCPVtCP =+−⋅+−

[ ] [ ] ( ) ( )[ ] 0)(2 2000

2 =−−⋅−+−⋅+⋅ rCPCPtCPVtVV i

Page 17: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-Esfera

P0

V

C

Pr

P’[ ] [ ] ( ) ( )[ ] 0)(2 2

0002 =−−⋅−+−⋅+⋅ rCPCPtCPVtVV i

02 =++ ctbta ii

Equação do 2o grau:

Solução:

aacbbt

242 −±−

=

Onde: a = ||V||2 = 1b = 2 V • (P0 - C) c = ||P0 – C||2 - r 2

Se a direção do raioestiver normalizada!

Page 18: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-Esfera

:042 >−=∆ acbse

abt

abt

2

2

2

1

∆+−=

∆−−=

),min( 21 ttti =

se ti > 0 :

VtPtPP ii +== 0)(

P0

V

C

Pr

P’

VtPtPP jj +== 0)('

),max( 21 ttt j =

(se t1 e t2 < 0, raio não intercepta esfera)

Page 19: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-Esfera

P0

V

CP r

N = (P - C) / ||P - C||N

• Precisa do vetor normal no ponto de interseção P para cálculo da iluminação

D. BroganUniv. of Virginia

Page 20: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-Esfera

• Ray Tracing seria muito simples se mundo fosse composto apenas por esferas...

Cluter & Durand, MIT

Page 21: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-Triângulo

• Primeiro, ache a interseção do raio com o plano do triângulo

• Depois verifique se o ponto de interseção estádentro do triângulo

P

P0

V

D. BroganUniv. of Virginia

Page 22: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-PlanoRaio: P = P0 + tVPlano: (P – A) • N = 0

Substituindo P:(P0 + tV - A) • N = 0

Solução: ti = (A - P0 )• N / (V • N) N

P

P0

VP = P0 + tiV

D. BroganUniv. of Virginia

A

Ponto qualquerdo plano

Page 23: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Interseção Raio-Triângulo• Verifica se P está dentro do triângulo

parametricamente

P

P0

Computa α, β:P = α (T2-T1) + β (T3-T1)

Checa se ponto está dentro:0 ≤ α ≤ 1 e 0 ≤ β ≤ 1 eα + β ≤ 1

βT1

T2

T3

D. BroganUniv. of Virginia

Page 24: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Outras Interseções

• Cone, cilindro, elipsóide:– Similar à esfera

• Box– Procura interseção com 3 faces (planos) frontais e

retorna o mais próximo do observador• Polígono convexo

– Similar ao triângulo (verifica algebricamente se pontode interseção com plano está dentro do polígono)

• Polígono côncavo– Interseção com plano igual, mas o teste para saber se

ponto está dentro do polígono é bem mais complexot

Page 25: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Ray Casting – Iluminação Direta

• Traça raios primários a partirda câmera– Iluminação direta apenas

de luzes não-bloqueadas

∑ •+•++=L LL

nSDAAE ISRVKLNKIKII ))()(( D. Brogan

Univ. of Virginia

Page 26: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Sombras• Termo de sombra (Si) diz se fontes de luz

estão bloqueadas– Trace o raio da interseção

com o objeto até cada fonte Li

– Si = 0 se raio está bloqueado, Si = 1 caso contrário

– 0 < Si < 1 soft shadows (truque)

∑ •+•++=L LL

nSDAAE ISRVKLNKIKII ))()((

D. BroganUniv. of Virginia

Page 27: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Traçado de Raios Recursivo

R1

T1

R2

T2

R3

L1L3

L2

R1

R2

L1

L3L2

T1

T2R3

M. Gattass, PUC-Rio

Page 28: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio( ( ) ( ) )n

E A A D S L L R R T TLI I K I K N L K V R S I K I K I= + + • + • + +∑

Ray Tracing recursivo – efeitos de segunda ordem

• Traça raios secundários a partir dassuperfícies de interecção– Iluminação global

(reflexão especulare transparência)

D. BroganUniv. of Virginia

Page 29: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Reflexões Especulares

• Traça raio secundáriona direção da reflexão– Avalia radiância ao

longo do raiosecundário e a inclui no modelo de iluminação.

( ( ) ( ) )nE A A D S L L R R T TL

I I K I K N L K V R S I K I K I= + + • + • + +∑

Radiância parao raio refletido

IR

D. BroganUniv. of Virginia

Page 30: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Reflexões Especulares

Superfície especular

n̂v̂θ

θ

ipr̂

rpp ˆ)(: ttrefletidoRaio i +=

M. Gattass, PUC-Rio

Page 31: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Transparência

• Traça raio secundáriona direção da refração– Avalia radiância ao

longo do raiosecundário e a incluino modelo de iluminação

( ( ) ( ) )nE A A D S L L R R T TL

I I K I K N L K V R S I K I K I= + + • + • + +∑

Radiância do raio refratado

IT

D. BroganUniv. of Virginia

Page 32: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio( ( ) ( ) )n

E A A D S L L R R T TLI I K I K N L K V R S I K I K I= + + • + • + +∑

Transparência

• Coeficiente de transparência é a fração do raiotransmitida– KT = 1 para objeto

transparente, KT = 0 para opaco

– 0 < KT < 1 para objetosemi-transparente

Coefiente detransparência

KT

D. BroganUniv. of Virginia

Page 33: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Cálculo do raio refratado (transparência)• Para superfícies muito finas, podepse ignorar mudança de

direção do raio– Assume que luz atravessa superfície e segue em linha reta

N

LΘi

TΘr

ηr

ηi

Θi

TLT −≅

D. BroganUniv. of Virginia

Page 34: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Cálculo do raio refratado (transparência)

N

LΘi

TΘr

ηr

ηi

LNTr

iri

r

i

ηη

ηη

−Θ−Θ= )coscos(

Para objetos sólidos, aplique Lei de Snell:

iirr Θ=Θ sinsin ηη

D. BroganUniv. of Virginia

Page 35: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Exemplo de refração

• Enright, D., Marschner, S. and Fedkiw, R.

Page 36: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Resumo

• Ray casting (iluminação direta)– Geralmente usa simplificações analíticas para a

emissão das fontes de luz e para a reflectânciadas superfícies

• Ray tracing recursivo (iluminação global)– Incorpora sombras, reflexões especulares, e

refraçõesTudo isso é uma aprixmação, paratornar viável computacionalmente a geração das imagens foto-realistas

Tudo isso é uma aprixmação, paratornar viável computacionalmente a geração das imagens foto-realistas

Page 37: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Resultado de curso

Alunos de CGI98M. Gattass, PUC-Rio

Page 38: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

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 objetoif (intercepta objeto) { calcule a normal no ponto de interseçãoreturn ( 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 objetoif (intercepta objeto) { calcule a normal no ponto de interseçãoreturn ( 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);}

}

M. Gattass, PUC-Rio

Page 39: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

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.difusa) + componente especular (Eq. especular)

} }

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.difusa) + componente especular (Eq. especular)

} }

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

M. Gattass, PUC-Rio

Page 40: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Exemplos: Ray Tracing

http://www.irtc.org/

Page 41: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Exemplos: Ray Tracing

http://www.irtc.org/

Page 42: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Exemplos: Ray Tracing

http://www.povray.org/

Page 43: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Radiosidade

observador

• Escultura de J. Ferren• Painéis difusos

diagrama:

fotografia:

Cluter & Durand, MIT

Page 44: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Radiosidade vs. Ray Tracing

Escultura original de John Ferren iluminadapor trás pela luz do dia.

Imagem gerada porradiosidade.

Imagem gerada por ray tracing.Ray tracer padrão nãoconsegue simular a inter-reflexão da luz entre as superfícies difusas.

Cluter & Durand, MIT

Page 45: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Radiosidade vs. Ray Tracing• Ray tracing é algoritmo no espaço da imagem

– Se câmera se move, precisa recomeçar cálculo

• Radiosidade é computada no espaço de objeto– View-independent

(só não pode moveras fontes de luz)

– Pode pré-computariluminação complexa

Cluter & Durand, MIT

Page 46: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Radiosidade• Assume-se que superfícies são

lambertianas ideiais (difusas)– refletem luz incidente igualmente

em todas as direções• Cena é dividida em conjunto

depequenas áreas (patches). • A radiosidade, Bi, do patch i é a

taxa total de energia que sai dasuperfície. A radiosidade sobreum patch é constante.

x'

ω'

Cluter & Durand, MIT

Page 47: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Equação de RadiosidadeL(x',ω') = E(x',ω') + ∫ρx'(ω,ω')L(x,ω)G(x,x')V(x,x') dA

Bx' = Ex' + ρx' ∫ Bx G(x,x')V(x,x')

Superfícies perfeitamente difusas (não direcionais):

Cluter & Durand, MIT

Page 48: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Exemplos: Radiosidade

Lightscape http://www.lightscape.com

Page 49: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-RioProgram of Computer Graphics, Cornell University.Note a iluminação indireta do teto.

Exemplos: Radiosidade

Page 50: INF 1366 – Computação Gráfica Interativa Ray Tracing ...webserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2004/14...Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica

Alberto Raposo – PUC-Rio

Informações Adicionais

• Peter Shirley. Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002.

• Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics, Addison-Wesley, 1995.

• Rogers, D. F., Procedural Elements for Computer Graphics. McGraw-Hill, 1985

• Marcelo Gattass: notas de aula. http://www.tecgraf.puc-rio.br/~mgattass/cg.html

• Refs. online (ray tracing):– http://www.irtc.org/– http://www.acm.org/tog/resources/RTNews/html/– http://www.povray.org/– http://www.siggraph.org/education/materials/HyperGraph/raytrace/rtrace0.htm– http://www.siggraph.org/education/materials/HyperGraph/raytrace/rt_java/raytr

ace.html