Sistema de Iluminación Automático para POV-Ray, version 4c


  • Jaime Vives Piqueres: Implementacion simple inicial, creacion de escenas de prueba, demos y bases de datos espectrales, integracion y distribucion del paquete.
  • Ive : Revision de la idea incial, creacion de las macros CIE XYZ, escenas de prueba, demos y bases de datos espectrales.
  • Philippe Debar : Cesion e integracion de Skylight, pruebas del sistema.


Introducción:


Allá por el 2002, empecé a escribir un archivo de inclusión para automatizar la tarea de crear fuentes de luz en POV-Ray, específicamente el color, intensidad y decaimiento. Estaba harto de tener que encontrar cada vez, por ensayo y error, la combinación correcta de estos parámetros para cada fuente de luz.

Tenía en mente un conjunto de macros que permitieran calcular automáticamente el color, intensidad y decaimiento basándose en unas pocas reglas fijas, ya que la luz se comporta siempre igual en el mundo real. Empecé a aprender sobre la luz en internet, buscando con Google y navegando de un enlace a otro sin parar. Después de algún tiempo, varios principios básicos eran evidentes, y los tome para aplicarlos en la creación de luces en POV-Ray:

  • Decaimiento según la ley del cuadrado inverso

    Para empezar, la luz sigue la famosa ley del inverso del cuadrado de la distancia. Así, fade_power debe ser siempre 2. Fade_distance esta ajustado arbitrariamente a una distancia fija, ya que la implementación de la intensidad usa valores de lumens que ya tienen un area implícita. Sin embargo, he empleado una variable global para simular el control de exposicion, y esta afecta a los paramertros de decaimiento de la luz.

  • Intensidad de alto rango y brillo proporcional

    La intensidad de la luz debe ser muy alta, para conseguir un gran rango de niveles de iluminación en la escena (esta es también la razón para utilizar un valor muy pequeño para fade_distance). La intensidad real no es tan importante como obtener proporciones realistas entre diferentes tipos de luces.

    Así, decidí simplemente usar los valores reales de lumens de cada luz como multiplicador de la intensidad, usando además una variable global para poder incrementar o decrementar el brillo de todas las luces de la escena.

  • Color realista según el tipo de luz

    En la naturaleza, el color (de la luz) es la percepción de un espectro, y como cualquier percepción, es altamente subjetiva. Sin embargo, los científicos han desarrollado sistemas numéricos para representar el color de un espectro, siendo en modelo CIE XYZ el estándar de facto.

    Ahora, gracias a la contribución de Ive, el sistema usa un fichero de inclusión aparte para las transformación de color en el espacio XYZ. Este dota a Lightsys de un método muy exacto y proporcional para calcular el color rgb de un espectro luminoso, basado la percepción del ojo humano. Ive a realizado toda la implementación por si mismo, y yo solo he adaptado Lightsys para utilizar sus macros (Ive también me ha sido de gran ayuda para comprender todo este lío del color).

    Adicionalmente, he implementado una variable global que actúa como el típico "filtro de corrección del color". Aunque este es más un recurso fotográfico, lo he incluido por completar el paquete.


Imágenes de ejemplo:


Estas son algunas imágenes que ilustran el propósito y comportamiento del sistema, creadas a partir de las escenas de demostración incluidas.

  • Escenas de interior:

    Esta imagen corresponde a la escena demo_indoor1.pov. Todos los objetos de la escena usan materiales con pigmentos convertidos desde espectros de reflexión, y las luces utilizan colores obtenidos de espectros de emisión. Las fuentes de luz se crearon a través de las macros de Lightsys, y para esta imagen se usó el espacio de color sRGB con un punto blanco de 5000K.

    Existe otra demo de interior, demo_indoor2.pov, que ilustra la cabecera de esta página.

  • Escenas de exterior:

    Gracias a la contribución de Philippe Debar, Lightsys incluye ahora una versión de Skylight.inc, adaptado por Ive como CIE_Skylight.inc. Puede usarse con las macros CIE para iluminar escenas de exterior muy rápidamente.

    La escena demo_outdoor.pov usa también materiales con pigmentos convertidos de espectros de reflexión, y la luz utiliza la variable SunColor devuelta por CIE_Skylight.

    Esta imagen usa el espacio de color sRGB y un punto blanco de 5500K.

  • Escenas del espacio:

    Sí, incluso para escenas del espacio! Las macros y bases de datos de espectros de lineas pueden usarse para simular los colores de los elementos en un nebulosa, y la macro Blackbody resulta muy útil para recrear los colores de los distintos tipos de estrellas.

    También hay otra escena de demostración, demo_space2.pov, que usa el mismo fondo estrellado, pero reemplazando la nebulosa por un planetoide texturizado con muestras de espectros lunares, e iluminada con un espectro de sol extraterrestre.

    Esta imagen utiliza el espacio de color CIE-RGB con un punto blanco de 6500K.

Hay algunas otras escenas de demostración en el paquete, que muestran otros posibles usos de Ligthsys y las macros CIE, y también de las herramientas auxiliares y las bases de datos espectrales.

  • Escenas de pruebas:

    Aquí puedes ver algunas imágenes de las escenas de pruebas, que muestran un poco mas acerca de las interioridades del sistema.

    Espectro de emisión Espectro de reflexión Espectro de lineas Macros irradiación
    test_espd test_rspd test_lspd test_kelvin
    Philips Mastercolor 3K Pantone Orange 21 c Azufre (absorcion) Blacbody() vs. Daylight()
  • Prueba de la Caja Cornell:

    test_cornell

    Esta es la clásica escena de pruebas Cornell Box ,que usa la geometría de la escena "cornell.pov", por Kari Kivisalo (incluida con POV-Ray 3.5). He usado los espectros de la luz y materiales ofrecidos por la Universidad de Cornell, y he ajustado el sistema asumiendo una cámara sRGB con balance blanco para luz diurna, lo que produce los mejores resultados en comparación con el original.



Descarga:


El archivo zip contiene tanto Lightsys como las macros de espacios de color CIE XYZ creadas por IVE, así como las bases de datos de espectros y las escenas de pruebas y demostración:


lightsys4c.zip (392Kb)
11/08/09 : Actualizado a la version 4c (el único cambio es la eliminación de la directiva #version de todos los archivos para evitar posibles lios en POV-Ray 3.7).


Descomprimelo donde quieras y creará una carpeta "LightsysIV" con todos los ficheros y subcarpetas. Después de leer los ficheros de ayuda, copia todos los ficheros ".inc" en alguna de tus carpetas de librerías de POV-Ray, o añade "LightsysIV" como otra carpeta de librerías adicional en tu povray.ini o .povrayrc (recomendado).


Extras:


rspd_ch.zip (29Kb)
Espectros de materiales (de reflexion) muestreados por Christoph Hormann.



espd_su2pov.zip (10Kb)
Espectros de luz (de emision) recolectados por usuarios de SU2POV, una utilidad para exportar a POV-Ray desde SketchUp. Me los mandó Clipi, un usuario de SU2POV, y los he convertido al formato de spline que usa Lightsys 4. Contiene varias luces ANSI y algunas reales de MAZDA.



CIE_wide-gamut-ColSys.zip (1,5Kb)
Espacios de color de "amplia gama" (wide-gamut) adicionales, con valores tomados del sitio web de Bruce Lindbloom. Los he añadido despues de una conversación sobre el tema con Daniel Richard G., quien me puso al corriente de la existencia de estos espacios de color. El archivo ZIP contiene un archivo de inclusión con dos nuevos sistemas de espacio de color, y una escena de demostración para visualizarlos.


Los comentarios y críticas son bien recibidos, como siempre.


Referencias:


Durante mas de un año he estado "investigando" en la red, coleccionando un montón de enlaces más o menos relacionados con la luz, el color, la fotografía y otros temas. De todos ellos, he extraído solo unos pocos, a modo de introducción y como punto de partida para el curioso. En los ficheros de ayuda, e incluso dentro de los ficheros de escena, hay más enlaces a recursos concretos.