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
Ernesto Coto - Trazado de Rayos
2
Conocimientos
Previos
•
•
•
•
•
Objetos 3D
Iluminación y Sombreado
Modelos de iluminación local
Geometría básica
Subdivisión espacial
Ernesto Coto - Trazado de Rayos
3
Introducción
Introducción
• Los métodos de sombreado de Flat,
Gouraud y Phong utilizan modelos de
iluminación local
Luz
Ojo
Superficie
Ernesto Coto - Trazado de Rayos
5
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
Luz
Ojo
Superficie
Ernesto Coto - Trazado de Rayos
6
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
7
Introducción
• El Trazado de Rayos maneja de manera
apropiada:
• Reflecciones y Refracciones
• Transparencia
• Sombras
Ernesto Coto - Trazado de Rayos
8
Introducción
• Ampliamente usado en:
• Entretenimiento (Cine, Comerciales, etc.)
• Preproducción de juegos
• Simulación
Ernesto Coto - Trazado de Rayos
9
Reflexión y Refracción
Reflexión y Refracción
• La luz incidente a una superficie en
general es parcialmente reflejada y
parcialmente transmitida como un rayo
refractado
Rayo incidente
Rayo reflejado
Superficie
Rayo refractado
Ernesto Coto - Trazado de Rayos 11
Reflexión
• De acuerdo a la “Ley de reflexión” el
ángulo del rayo de incidencia es igual al
ángulo del rayo reflejado
N
Rayo incidente
Rayo reflejado
i
= r
Superficie
Ernesto Coto - Trazado de Rayos 12
Refracción
• Refracción es el desvío del rayo de luz
cuando entra a un medio donde la
velocidad del rayo es diferente
N
Rayo incidente
i
Superficie
t
Rayo refractado
Ernesto Coto - Trazado de Rayos 13
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
N
i
t
1
sin(  i )
Medio2
sin(  t )
Medio1
2

1
2
Ley de Snell
Ernesto Coto - Trazado de Rayos 14
Reflexión y Refracción
N
Rreflex = 2N(N · Rin) - Rin
Rin
i
r
t
Rrefrac = ((N · Rin) –
1 -2(1- (N · Rin)2))N - Rin
Donde  =1 /2
Ernesto Coto - Trazado de Rayos 15
El algoritmo básico
El algoritmo básico
• Simular rayos de luz desde la fuente de
luz hacia el ojo
Plano
Imagen
Objeto
Luz
Ojo
Rayos de Luz
Ernesto Coto - Trazado de Rayos 17
Trazado
hacia adelante
• Trazar los rayos desde la luz
Luz
Plano
Imagen
Rayos de Luz
Ojo
Objeto
Ernesto Coto - Trazado de Rayos 18
Trazado
hacia atrás
• Trazar los rayos desde el ojo hasta la
escena
Luz
Plano
Imagen
Ojo
Objeto
Ernesto Coto - Trazado de Rayos 19
El algoritmo básico
• Trazar un rayo por cada píxel en el plano
imagen
calcularImagen()
{
para cada píxel i, j en la imagen
rayo.inicializar();
imagen[i][j] = trazarRayo(rayo);
}
Ernesto Coto - Trazado de Rayos 20
El algoritmo básico
• Trazar un rayo por cada píxel en el plano
imagen
Plano
Imagen
m
Ojo
n
Ernesto Coto - Trazado de Rayos 21
El algoritmo básico
• Trazar el rayo
trazarRayo(rayo)
{
golpearObjeto(rayo, triángulos, p, n);
si(objeto es luz)
retornar(color de la luz);
sino
retornar(iluminación(p, n));
}
Ernesto Coto - Trazado de Rayos 22
Iluminación
Iluminación
• Color de la superficie
iluminación(punto)
{
para cada luz
color += phong(punto)
+ c1_obj*trazarRayo(reflejado)
+ c2_obj*trazarRayo(refractado)
retornar(color);
}
Ernesto Coto - Trazado de Rayos 24
Iluminación
• Prueba de Sombra
• Trazar un rayo desde el objeto hacia la luz en busca
de objetos oclusores
Ojo
Objeto
oclusor
Ernesto Coto - Trazado de Rayos 25
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 26
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 !!!!!
Ernesto Coto - Trazado de Rayos 27
Consideraciones de
Eficiencia
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 29
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 30
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 31
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 32
Preguntas
Ernesto Coto - Trazado de Rayos 33
Iluminación
• Se utiliza el modelo de iluminación Phong
N
Luz
Ojo
R
I
V
Superficie
Para cada luz
local = IambientalKambiental +
IdifusaKdifusa(L.N)+
IespecularKespecular(R.V)n
Ernesto Coto - Trazado de Rayos 34
El algoritmo básico
• Cálculo de intersecciones
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 35
El algoritmo básico
• El rayo se expresa de forma paramétrica
<x, y, z> = <xo, yo, zo> + t * <xd, yd, zd>
<x, y, z> = ro + trd
t = 2.5
rd = <xd, yd, zd>
ro = <xo, yo, zo>
t = 2.0
t = 1.0
t = 0.0
Ernesto Coto - Trazado de Rayos 36
Intersección
( Ax + By + Cz + D = 0 )
Normal al plano
n = <A, B, C>
p
rd
ro
p = -(n. ro + D) / (n. rd )
Ernesto Coto - Trazado de Rayos 37
El algoritmo básico
• El algoritmo principal
principal()
{
triángulos = leerTriángulos();
iniciaOjo();
iniciaLuces();
imagen = calcularImagen(triángulos);
escribirImagen(imagen);
}
Ernesto Coto - Trazado de Rayos 38
Reflexión
NCosi - I
N
R
I
i
NCosi
R-I=2NCosi – 2I
R=2NCosi – I
R=2N(N·I) – I
Ernesto Coto - Trazado de Rayos 39
Refracción
•
•
•
•
•
n
Ley de Snell i sin i = t sin t
cos i n - i
Sea  =i /t = sin t / sin i
i
cos i n
Sea m = (cos i n - i) / sin i
i
m
Entonces…
t = sin t m - cos t n
t
= (sin t / sin i) (cos i n - i) - cos t n
t=?
= ( cos i - cos t )n - i i
-n
como cos t 

1  sin t  1  sin i
2
2
2

t   (n  i )  1   (1  (n  i ) ) n  ii
2
2
Ernesto Coto - Trazado de Rayos 40
Cajas Delimitadoras
Ojo
Ernesto Coto - Trazado de Rayos 41
Jerarquías
de Objetos
Raíz
Ernesto Coto - Trazado de Rayos 42
Octrees
Ernesto Coto - Trazado de Rayos 43
Descargar

Trazado de Rayos - Centro de Computación Gráfica