Mapeado de fotones
From Wikipedia, the free encyclopedia

El concepto de Mapeado de fotones (en inglés Photon mapping) fue introducido por Henrik Wann Jensen en junio de 1996. Él, al igual que los que se dedican a la informática gráfica, tuvo la necesidad de un algoritmo que fuera capaz de renderizar imágenes de geometría compleja con iluminación global; un algoritmo que fuera capaz de manejar cualquier tipo de geometría y de BRDF (Bidirectional reflectance distribution function).

En aquella época, estaba de moda el cálculo de radiosidad basado en elementos finitos (irradiance maps).
Los métodos de radiosidad tienen problemas con los BRDF especulares y son demasiado costosos cuando la geometría se complica demasiado.
Aparecieron alternativas a los elementos finitos en forma de técnicas multipaso, illumination maps y las técnicas de ray tracing basadas enteramente en Monte Carlo.
La mejor alternativa sin duda fue la última de ellas, pero provocaba cierto ruido en la imagen debido a la varianza de los resultados. Eliminar este ruido presenta un sobrecoste demasiado grande.
El mapeado de fotones fue desarrollado por Jensen como una alternativa a las técnicas de trazado de rayos basadas enteramente en Monte Carlo. El fin era obtener las mismas ventajas pero con un método más eficiente que no sufriera complicaciones por el ruido.
Para ello parece correcto pensar que hay que usar el mismo algoritmo basado en el trazado de rayos y además hay que procurar un algoritmo eficiente de transporte de la luz en la escena ya que tanto las luces como el observador son parte primordial de la síntesis de imágenes. También queremos utilizar técnicas de Monte Carlo vistas anteriormente pero con la certidumbre de que la componente de radiación se mantiene suave a lo largo de grandes regiones para la mayoría de los modelos. Para estas regiones parece razonable pues, almacenar y reutilizar la información extraída sobre su iluminación. Y todo ello sin dividir las superficies en trozos finitos, queremos que nuestro modelo maneje cualquier tipo de objeto.
La primera idea para solucionar el problema es pues, la de desacoplar la representación de la iluminación de la geometría. Esto nos permite tanto manejar geometría arbitraria como modelos complejos.
La segunda idea es que la iluminación en la escena puede ser almacenada como puntos en una estructura de datos global, el mapa de fotones, en inglés photon map. Muchas alternativas a los puntos fueron consideradas pero todas fallaban en una de las tres condiciones: capacidad de representar cualquier tipo de iluminación, estar desacoplado frente a la geometría y ser compacto. Por eso los puntos son la manera más flexible posible de manejar superficies de cualquier tipo de BRDF. Estos puntos además de su posición almacenarán también información sobre la dirección de incidencia de la luz y otros factores que nos facilitarán los cálculos.
El mapa de fotones puede entenderse como una caché de caminos de luces en un trazado de caminos (path tracing) direccional y podría ser utilizado ciertamente para tal método. Pero también puede usarse en un método diferente de estimación de la iluminación basada en la estimación de densidad. Esta estimación de densidad tiene la ventaja que su error es de una frecuencia mucho más baja que el que se da en los tradicionales métodos de Monte Carlo.
El método de estimación de densidad es mucho más rápido que un trazador puro basado en Monte Carlo. Sin embargo pagamos el precio de utilizar una estimación de densidad y por tanto un método que no nos dará siempre un rendimiento correcto, y que siempre dependerá de que para que converja más a la solución correcta se deberán almacenar y utilizar cuantos más fotones mejor.
Usaremos el nombre 'Mapeado de fotones' para designar el algoritmo que genera, almacena y usa la iluminación como puntos, y el 'Mapa de fotones' como la estructura usada para procesar estos puntos. Así mismo,, el 'Trazado de fotones' será la técnica usada para generar los puntos que representan la iluminación en el modelo.
El método del mapeado de fotones es un método de dos pasos donde los pasos son:
- Trazado Fotónico (Photon Tracing), construir el mapa de fotones trazando fotones desde las luces y a través de la escena.
- Radiación estimada (Radiance Estimate), estimar la radiación producida en un punto de la escena mediante estimación de densidad.
Así el mapa de fotones será construido usando 'Trazado fotónico' donde los fotones son emitidos desde las luces y almacenados al interactuar con las superficies del modelo. Una vez construido el mapa de fotones lo utilizaremos para calcular la luz radiada.
Trazado Fotónico (Photon Tracing)
El trazado fotónico es el proceso de emitir fotones desde las fuentes de luz y trazarlos a través de la escena. Esta será la técnica usada para construir el mapa fotónico. Vamos a ver cómo los fotones son generados en las fuentes de luz y cómo podemos seguir su recorrido en la escena de forma eficiente. Siendo esto la base para construir un buen mapa de fotones.
Emisión Fotónica (Photon Emission)
Las luces pueden ser de muchos tipos y en este apartado veremos como emitir fotones de forma eficiente desde cada una de ellas ya que el mapeado fotónico admite cualquier tipo de luz.
Así como pasa en la realidad, un enorme número de fotones son emitidos desde cada fuente de luz. La potencia de la luz será dividida entre todos los fotones emitidos por igual, y por eso cada fotón transportará una fracción de la potencia de la fuente de luz inicial. Es importante remarcar aquí que la potencia de los fotones será proporcional al número de fotones emitidos y no al número de fotones almacenados en el mapa de fotones.
La emisión desde una luz puntual será aleatoria en todas las direcciones esféricas alrededor del punto de luz. La emisión en una luz direccional será aleatoria en posición pero con la dirección de la luz. Y la emisión desde luces con formas, por ejemplo esféricas y planares, aleatoria sobre su superficie.
Dispersión y Reflexión de Fotones (Photon Reflection and Scattering)
Cuando un fotón colisiona con un objeto, este puede ser con las mismas probabilidades reflejado, transmitido por refracción o absorbido. Que pase una cosa u otra se decide probabilísticamente basándonos en los parámetros del material de la superficie en colisión. La técnica para decidir el tipo de interacción se conoce como ruleta rusa.
El método de la ruleta rusa es una técnica estadística que nos servirá para desestimar fotones que no sean importantes a fin de concentrarnos sólo en los que si lo sean. También se usa para asegurarse de que los fotones almacenados en el mapa fotónico tengan aproximadamente la misma potencia de luz. Esto será necesario para una buena estimación de radiación.
La idea básica de la ruleta rusa es que podemos tomar muestras aleatorias para eliminar trabajo y aun así obtener un resultado correcto. Es por ello una de las técnicas estándar Monte Carlo. Con la ruleta rusa decidiremos si un fotón en colisión es reflejado o absorbido. Dado un material con reflectividad d, y un fotón que colisiona con él con potencia sigma:
if (random()<d) reflejar el fotón con potencia sigma else el fotón es absorbido
La idea intuitiva que hay debajo de esto es que si lanzamos 1000 fotones contra una superficie con reflectividad 0.5, podemos bien reflejar los 1000 fotones con la mitad de potencia que tenían antes o reflejar solo 500 con la potencia intacta. La ruleta rusa nos seleccionará esos 500 fotones, reduciéndonos el cómputo requerido por el trazado fotónico.
Por tanto a partir de la colisión de un fotón y gracias a la probabilidad lanzaremos otros que le siguen en direcciones de reflexión, refracción o simplemente desecharemos el fotón porque es absorbido por el material. Sin embargo cada colisión de un fotón provoca que lo almacenemos en el mapa fotónico como veremos a continuación.