trazado de rayos

43
Trazado de Rayos Ernesto Coto Laboratorio de Computación Grafica Universidad Central de Venezuela

Upload: awen

Post on 05-Jan-2016

45 views

Category:

Documents


2 download

DESCRIPTION

Laboratorio de Computación Grafica Universidad Central de Venezuela. Trazado de Rayos. Ernesto Coto. Contenido. Introducción Reflexión y refracción El algoritmo básico Iluminación Consideraciones de eficiencia. Conocimientos Previos. Objetos 3D Iluminación y Sombreado - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Trazado de Rayos

Trazado de Rayos

Ernesto Coto

Laboratorio de Computación GraficaUniversidad Central de Venezuela

Page 2: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 2

Contenido

• Introducción

• Reflexión y refracción

• El algoritmo básico

• Iluminación

• Consideraciones de eficiencia

Page 3: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 3

Conocimientos Previos

• Objetos 3D

• Iluminación y Sombreado

• Modelos de iluminación local

• Geometría básica

• Subdivisión espacial

Page 4: Trazado de Rayos

Introducción

Page 5: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 5

Introducción

• Los métodos de sombreado de Flat, Gouraud y Phong utilizan modelos de iluminación local

Rayo reflejado Rayo incidente

Ojo Luz

Superficie

Page 6: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 6

Introducción

• Un modelo de iluminación global considera la luz que es reflejada desde otras superficies hacia la superficie con la que se trabaja

Rayo

reflejado

Rayo incidente

Ojo Luz

Superficie

Page 7: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 7

Introducción

• El Trazado de Rayos (Ray Tracing) es un método de despliegue de escenas que esta basado en Iluminación global

• Original de Turner Whitted (1980)

Page 8: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 8

Introducción

• El Trazado de Rayos maneja de manera apropiada:• Reflecciones y Refracciones• Transparencia• Sombras

Page 9: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 9

Introducción

• Ampliamente usado en:• Entretenimiento (Cine, Comerciales, etc.)• Preproducción de juegos• Simulación

Page 10: Trazado de Rayos

Reflexión y Refracción

Page 11: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 11

Reflexión y Refracción

• La luz incidente a una superficie en general es parcialmente reflejada y parcialmente transmitida como un rayo refractado

Rayo reflejadoRayo incidente

Superficie

Rayo refractado

Page 12: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 12

Reflexión

• De acuerdo a la “Ley de reflexión” el ángulo del rayo de incidencia es igual al ángulo del rayo reflejado

Rayo reflejadoRayo incidente

Superficie

i r

N

=

Page 13: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 13

Refracción

• Refracción es el desvío del rayo de luz cuando entra a un medio donde la velocidad del rayo es diferente

Rayo incidente

Superficie

Rayo refractado

N

t

i

Page 14: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 14

Refracción

• La cantidad de desvío depende del índice de refracción de los dos materiales y es descrita por la ley de Snell

2

1

)sin(

)sin(

t

i

N

t

iMedio1

1

Medio22 Ley de Snell

Page 15: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 15

Reflexión y Refracción

RreflexRin

i r

N

Rrefrac

t

= 2N(N · Rin) - Rin

= ((N · Rin) – 1 -2(1- (N · Rin)2))N - Rin

Donde =1 /2

Page 16: Trazado de Rayos

El algoritmo básico

Page 17: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 17

Plano Imagen

El algoritmo básico

• Simular rayos de luz desde la fuente de luz hacia el ojo

OjoLuz

Objeto

Rayos de Luz

Page 18: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 18

Trazado hacia adelante

• Trazar los rayos desde la luz

Ojo

Luz

Plano Imagen

Objeto

Rayos de Luz

Page 19: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 19

Trazado hacia atrás

• Trazar los rayos desde el ojo hasta la escena

Ojo

Luz

PlanoImagen

Objeto

Page 20: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 20

• Trazar un rayo por cada píxel en el plano imagen

El algoritmo básico

calcularImagen(){ para cada píxel i, j en la imagen

rayo.inicializar(); imagen[i][j] = trazarRayo(rayo);

}

Page 21: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 21

• Trazar un rayo por cada píxel en el plano imagen

El algoritmo básico

m

n

Ojo

PlanoImagen

Page 22: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 22

• Trazar el rayo

El algoritmo básico

trazarRayo(rayo) { golpearObjeto(rayo, triángulos, p, n); si(objeto es luz) retornar(color de la luz); sino retornar(iluminación(p, n));}

Page 23: Trazado de Rayos

Iluminación

Page 24: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 24

iluminación(punto) { para cada luz

color += phong(punto) + c1_obj*trazarRayo(reflejado) + c2_obj*trazarRayo(refractado)

retornar(color);}

Iluminación

• Color de la superficie

Page 25: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 25

Iluminación

• Prueba de Sombra• Trazar un rayo desde el objeto hacia la luz en busca

de objetos oclusores

Ojo

Objetooclusor

Page 26: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 26

Iluminación

• Color de la superficie

iluminación(punto) { para cada luz

color += phong(punto) si(golpearObjeto(rayo de sombra)) color *= atenuación color += c1_obj*trazarRayo(reflejado)

+ c2_obj*trazarRayo(refractado)

retornar(color);}

Page 27: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 27

Iluminación

• Terminación• Un rayo se termina si no hubo intersección• De lo contrario se termina solo al alcanzar la

luz, pero:

• MUY COSTOSO

• PODRIA NUNCA TERMINAR !!!!!

Page 28: Trazado de Rayos

Consideraciones de Eficiencia

Page 29: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 29

Consideraciones de Eficiencia

• Criterios posibles de terminación• La contribución del rayo reflejado y/o

refractado es muy pequeña• Se alcanza un nivel de profundidad máximo

Page 30: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 30

Consideraciones de Eficiencia

• Trazado de rayos optimizado• Reducir el número de rayos trazados• Reducir el número de cálculos de

intersecciones entre los rayos y los objetos• Cajas Delimitadoras• Jerarquías de Objetos

Page 31: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 31

Resumen

• Concepto de Modelo de Iluminación Global

• Reflexión y Refracción

• Trazado de Rayos

• Esbozo de la implementación de un Trazador de Rayos

• Consideraciones de Eficiencia en el Trazado de Rayos

Page 32: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 32

Bibliografía

• Kay, D.S. Transparency, Refraction and Ray Tracing for Computer Synthesized Images. M.S. Thesis, Program of Computer Graphics, Cornell University, Ithaca, NY. Enero, 1979.

• Levoy, M.. Efficient ray tracing of volume data. ACM Transactions on Graphics, vol. 9, num. 3, pp. 245-261. Julio,1990.

• Watt, Alan ; Watt, Mark. Advanced Animation and Rendering Techniques: Theory and Practice. ACM Press. Addison-Wesley Publishing Company. New York, 1992.

• Watt, Alan. 3D Computer Graphics. 3era edición. Addison-Wesley, 2000.

Page 33: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 33

Preguntas

Page 34: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 34

Iluminación

• Se utiliza el modelo de iluminación Phong

Para cada luz local = IambientalKambiental +

IdifusaKdifusa(L.N)+ IespecularKespecular(R.V)n

Ojo

V

RN

I

Superficie

Luz

Page 35: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 35

• Cálculo de intersecciones

El algoritmo básico

golpearObjeto() { para cada triángulo en la escena ¿el rayo interseca el triángulo? si (intersecado y más cercano) salvar la intersección si (intersecado) retornar punto de intersección y normal}

Page 36: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 36

• El rayo se expresa de forma paramétrica

El algoritmo básico

<x, y, z> = <xo, yo, zo> + t * <xd, yd, zd>

<x, y, z> = ro + trd

ro = <xo, yo, zo>

rd = <xd, yd, zd>

t = 0.0

t = 1.0

t = 2.0

t = 2.5

Page 37: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 37

Intersección

Normal al plano n = <A, B, C>Normal al plano n = <A, B, C>

p

rd

ro

p = -(n. ro + D) / (n. rd )p = -(n. ro + D) / (n. rd )

( Ax + By + Cz + D = 0 )

Page 38: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 38

• El algoritmo principal

El algoritmo básico

principal() { triángulos = leerTriángulos(); iniciaOjo(); iniciaLuces(); imagen = calcularImagen(triángulos); escribirImagen(imagen);}

Page 39: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 39

Reflexión

RI

i

N

NCosi

NCosi - I

R=2NCosi – I

R=2N(N·I) – I

R-I=2NCosi – 2I

Page 40: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 40

Refracción

i ninint ))(1(1)( 22

cos i n - i

i

n

-n

i

t t = ?

m

itt 222 sin1sin1cos

cos i n

• Ley de Snell i sin i = t sin t

• Sea =i /t = sin t / sin i

• Sea m = (cos i n - i) / sin i

• Entonces…

• t = sin t m - cos t n

= (sin t / sin i) (cos i n - i) - cos t n

= ( cos i - cos t )n - i icomo

i

Page 41: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 41

Cajas Delimitadoras

Ojo

Page 42: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 42

Jerarquías de Objetos

Raíz

Page 43: Trazado de Rayos

Ernesto Coto - Trazado de Rayos 43

Octrees