1. Simulación de Cáusticas
en POV-Ray
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
INFORMÁTICA
INGENIERO EN INFORMÁTICA
Realizado por
JUAN JOSÉ DOMÍNGUEZ DUARTE
Dirgido por
FRANCISCO VILLATORO MACHUCA
UNIVERSIDAD DE MÁLAGA
MÁLAGA, Marzo de 2005
2. Contenido
➲ I. OBJETIVO
● 1. ¿Qué es una cáustica?
● 2. Los trazadores de rayos
➲ II. ALGORITMO
● 3. Ideas claves
● 4. El Principio de Fermat
● 5. Propagación de frentes de ondas
➲ III. IMPLEMENTACIÓN
● 6. DKB-Trace y POV-Ray
● 7. El método de Newton:
● 8. “Punto medio”
● 9. Octree
● 10. Extrapolación y cache
● 11. Cache y lista enlazada
● 12. Propagación de frente de ondas
● 13. Mapeado de tonos
➲ IV. RESULTADOS
● 14. Comparación de Métodos de
Newton
● Ejemplo 1: Esfera
● 15. Iluminación indirecta
● 16. Frente de ondas
● 17. Sólo iluminación indirecta
● Ejemplo 2: Cuártica
● 18. Iluminación indirecta
● 19. Frente de ondas
● 20. Sólo iluminación indirecta
➲ V. CONCLUSIONES
● 21. Conclusiones finales
● 22. Líneas futuras de trabajo
3. ¿Qué es una cáustica? 1/22
cáustica (Del lat. caustĭcus, y este del
gr.καυστικ ς, der. de κα ειν, quemar).ό ί
1. f. Fís. Superficie tangente a los rayos
reflejados o refractados por un sistema.
Una cáustica se produce cuando un haz de
fotones se acumula en un punto. En la
imagen de la izquierda se observa una
cáustica en la parte de sombra de la copa
causada por la refracción de los fotones que
atraviesan la copa.
4. Los trazadores de rayos 2/22
➲ El trazado de rayos es un algoritmo que
genera imágenes fotorrealistas trazando rayos
desde el punto de vista elegido hacia los
objetos y fuentes luminosas que forman la
escena.
➲ No tiene en cuenta el efecto de todos los
fotones que siguen caminos indirectos
(reflejándose o refractándose en otros objetos
antes de alcanzar el punto de vista).
OBJETIVO DEL PFC
La simulación de cáusticas mediante la incorporación de la iluminación
indirecta a un trazador de rayos
5. Conceptos fundamentales 3/22
➲ Artículo de Don Mitchell y Pat Hanrahan de 1992. Illumination from Curved
Reflectors.
¿Qué necesitamos conocer de un rayo indirecto?
El camino que ha seguido
La intensidad luminosa que
viaja a través de él
Principio de Fermat
Propagación del Frente de
ondas del rayo
(Conservación de la energía)
6. El Principio de Fermat 4/22
Longitud del camino óptico con un rebote:
Que de forma general, nos lleva a plantear el
siguiente sistema de ecuaciones:
La luz viaja a lo largo de caminos ópticos de longitud óptica estacionaria, donde la
longitud del camino óptico es un máximo o un mínimo con respecto a una pequeña
variación del mismo.
7. Propagación de frente de ondas 5/22
➲ El mismo flujo de radiación lumínica atraviesa dA y dA'.
➲ Por la ley de la conservación de la energía:
➲ De donde se deduce que:
➲ O lo que es lo mismo:
La intensidad luminosa que viaja a lo largo de un rayo es proporcional a la
curvatura gausiana de su frente de ondas.
8. DKB-Trace y POV-Ray 6/22
➲ POV-Ray (Persistence of Vision Raytracer)
● Es un trazador de rayos freeware muy popular.
● La versión 1.0 se lanzó, en 1989 y la última versión oficial (3.6.1) en Agosto de 2004.
➲ DKB-Trace (David Kirk Buck Tracer)
● Es el trazador de rayos precursor de POV-Ray.
● La versión 2.12 fue la última (1989), antes de que se le cambiara el nombre.
● Características avanzadas:
● Aunque escrito en C, sigue diseño orientado a objetos.
● Contiene un parser que reconoce un lenguaje para la descripción de escenas.
● Primitivas para superficies de cuarto grado.
● Permite definir objetos CSG (Constructive Solid Geometry).
9. El método de Newton-Raphson 7/22
➲ Es el método utilizado para resolver el sistema de ecuaciones planteado por el Principio
de Fermat.
➲ OBJETIVO: Maximizar el porcentaje de caminos indirectos que realmente son
encontrados respecto de los que se quieren determinar.
➲ CÓMO:
● Utilizando diferentes implementaciones del método:
● 1ª IMPLEMENTCIÓN: libro Métodos Numéricos con Matlab.
● 2ª IMPLEMENTACIÓN: libro Numerical Recipes in C.
● 3ª IMPLEMENTACIÓN: método de convergencia global del libro Numerical
Recipes in C.
● Utilizando diferentes estrategias para la elección de la aproximación inicial a la
solución del sistema.
10. Estrategia: Punto Medio 8/22
➲ Determina el punto medio de la fuente
luminosa y el punto de la escena destino.
➲ Traza un rayo desde ese punto al centro
del objeto que genera iluminación
indirecta, para determinar el valor inicial
X.
➲ Complejidad constante.
11. Estrategia: Octree 9/22
➲ Octree: árbol que indexa 3 dimensiones,
de forma que cada nodo tiene 8 hijos o
ninguno.
➲ Cada par (fuente luminosa,objeto) tiene
asociado un octree.
➲ Se va llenando la estructura con los puntos
destino y sus correspondientes soluciones
X.
➲ Para cada punto destino, se elige la X del
punto destino más cercano de la rama
recorrida.
➲ Complejidad logarítmica.
12. Estrategia: Extrapolación 10/22
➲ Utiliza una cache para cada par
(objeto,fuente luminosa) donde
almacena los puntos destino y
soluciones X para los 3 últimos píxeles
trazados.
➲ La próxima solución, X, se extrapola
utilizando una expresión derivada del
polinomio de Lagrange de grado 2.
➲ Complejidad constante.
13. Estrategias: cache y lista enlazada 11/22
➲ Cache
● Para cada par (objeto,fuente luminosa) guarda
los últimos 4 puntos destino calculados y las
soluciones X asociadas.
● Complejidad constante.
➲ Lista enlazada de puntos del objeto
● Para cada objeto se crea una lista enlazada con
los puntos de la superficie del objeto y sus
vectores normales.
● Se elige como solución X el punto que minimice
● Complejidad lineal respecto al tamaño de la lista.
14. Implementación de frente de ondas 12/22
➲ Se ha añadido a DKB-Trace una
nueva clase Wavefront para guardar
la curvatura gaussiana del frente de
ondas asociado al rayo conforme
este interactúa con los objetos de la
escena.
➲ Se ha añadido el método Shape() a
la clase Object, que calcula la
curvatura del objeto en un punto y
dirección dados.
➲ La intensidad luminosa asociada a un
punto por donde pasa un rayo se
calcula como:
15. Mapeado de tonos 13/22
➲ La mayoría de los frentes de ondas en las escenas
son esféricos o convexos.
➲ Como consecuencia, los valores finalmente
asignados a los píxeles de la imagen son de
magnitud muy pequeña.
Solución:
➲ Escalar los valores de los píxeles al rango
adecuado [0,1].
➲ Determinar el valor clave de la escena (log-average
luminance) y mapear los valores utilizando un
operador como:
Imagen sin mapeado de tono
Imagen con mapeado de tono
y valor clave α=0,05.
16. Comparación de estrategias 14/22
Datos obtenidos para una escena con una cuártica y una fuente luminosa
cercana (tamaño 200x150 píxeles)
17. Ejemplo 1: Esfera con iluminación 15/22
indirecta
Sin iluminación indirecta Con iluminación indirecta
(opción +G del trazador activada)
18. Ejemplo 1: Esfera con propagación
16/22
de frente de ondas
Con iluminación indirecta
(opciones +G +U del trazador activada)
Sin iluminación indirecta
(opción +U del trazador activada)
19. Ejemplo 1: Esfera sólo iluminación 17/22
indirecta
Iluminación indirecta causada por una esfera vista
desde arriba (opciones +u +R +t0.04 del trazador).
Como se trata de una supeficie convexa, no
produce cáusticas.
20. Ejemplo 2: Cuártica con iluminación 18/22
indirecta
Sin iluminación indirecta Con iluminación indirecta
(opción +G activada)
21. Ejemplo 2: Cuártica con propagación 19/22
de frente de ondas
Sin iluminación indirecta
(opciones +U +T activadas)
Con iluminación indirecta
(opciones +G +U +T activadas)
22. Ejemplo 2: Cuártica sólo iluminación 20/22
indirecta
Iluminación indirecta causada por una cuártica vista desde arriba
(opciones +U+R +T0.03 del trazador).
Como se trata de una supeficie con regiones cóncavas, produce
cáusticas.
23. Conclusiones finales 21/22
➲ La técnica propuesta por Don Mitchell y Pat Hanrahan en su artículo de 1992
Illumination from Curved Reflector se puede implementar en un trazador “popular”
como es DKB-Trace.
➲ Es una técnica costosa:
● Resolver sistema de ecuaciones no lineales por cada camino indirecto.
● Evaluar el operador Shape en cada reflexión (o refracción).
➲ En su implementación, es necesario tener presente las posibles inconsistencias:
● No convergencia.
● Combinanción de propagación de frente de ondas con otros modelos de iluminación.
24. Líneas futuras de trabajo 22/22
➲ Para mejorar la eficiencia:
● Implementaciones específicas del método resultor para cada primitiva.
● Nuevas estrategias para elegir la aproximación inicial.
➲ Para mejorar la consistencia:
● Implementar métodos resultores que aseguren convergencia.
● Utilizar filtros que disimulen los efectos de la no convergencia.
➲ Para añadir funcionalidad:
● Simulación de caminos indirectos con más de un rebote.
● Objetos CSG (Constructive Solid Geometry) con iluminación indirecta.