Trazado de Rayos

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

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 of Trazado de Rayos

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