trazado de rayos
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 PresentationTRANSCRIPT
Trazado de Rayos
Ernesto Coto
Laboratorio de Computación GraficaUniversidad Central de Venezuela
Ernesto Coto - Trazado de Rayos 2
Contenido
• Introducción
• Reflexión y refracción
• El algoritmo básico
• Iluminación
• Consideraciones de eficiencia
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
Introducción
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
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
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)
Ernesto Coto - Trazado de Rayos 8
Introducción
• El Trazado de Rayos maneja de manera apropiada:• Reflecciones y Refracciones• Transparencia• Sombras
Ernesto Coto - Trazado de Rayos 9
Introducción
• Ampliamente usado en:• Entretenimiento (Cine, Comerciales, etc.)• Preproducción de juegos• Simulación
Reflexión y Refracción
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
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
=
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
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
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
El algoritmo básico
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
Ernesto Coto - Trazado de Rayos 18
Trazado hacia adelante
• Trazar los rayos desde la luz
Ojo
Luz
Plano Imagen
Objeto
Rayos de Luz
Ernesto Coto - Trazado de Rayos 19
Trazado hacia atrás
• Trazar los rayos desde el ojo hasta la escena
Ojo
Luz
PlanoImagen
Objeto
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);
}
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
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));}
Iluminación
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
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
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);}
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 !!!!!
Consideraciones de Eficiencia
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
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
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
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.
Ernesto Coto - Trazado de Rayos 33
Preguntas
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
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}
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
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 )
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);}
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
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
Ernesto Coto - Trazado de Rayos 41
Cajas Delimitadoras
Ojo
Ernesto Coto - Trazado de Rayos 42
Jerarquías de Objetos
Raíz
Ernesto Coto - Trazado de Rayos 43
Octrees