etereaetereaaboutnewsworkstrainingsuccesseterealinksmoreetereashop
Home > Training > Simulación Iluminación HDRI
Etérea Workshops Banner

Iluminación en 3D basada en imágenes. Simulación de la iluminación HDRI.
Por favor: no hagas un copiar-pegar de este material en tu página, weblog o foro sin mi permiso. En su lugar puedes incluir un link a esta página.
ÍNDICE

01. INTRODUCCIÓN. ¿Pero qué es realmente el HDRI?
  Un inciso: por qué 16,7 millones de colores “no son tantos” colores…

02. Aplicaciones del HDRI. Iluminación 3D basada en imágnes.
  Descripción abreviada del proceso.

03. LightRig: una alternativa digna y rápida a la iluminación HDRI.
  Optimizando la nube de luces: menos es más.
  Convertimos nuestros puntos lumínicos clave en luces.


BIBLIOGRAFÍA E INFORMACIÓN COMPLEMENTARIA.
 

En la última parte de este artículo se describe un conjunto de técnicas empleadas con la aplicación ElectricImage y el plugin LightRig, pero estoy convencido de que muchos de los principios que se desarrollan también se pueden trasladar a otros programas (por ejemplo: usando geles de iluminación y trabajándolos como aquí se describe, en lugar de aplicarlos tal cual).

En cualquier caso espero que disfrutéis leyendo este pequeño artículo/tutorial tanto como yo he disfrutado creándolo.

Cristóbal Vila, septiembre 2006


01. INTRODUCCIÓN. ¿Pero qué es realmente el HDRI?

HDRI
son las siglas de High Dynamic Range Imaging: “imágenes que poseen un rango dinámico de exposición mucho mayor que las de tipo normal”. Creo que todo se puede entender mucho mejor si nos ayudamos de unos ejemplos ;-)

Casi seguro que alguna vez nos hemos visto en la necesidad de disparar una fotografía en el interior de una estancia de tal modo que también se viera el exterior. Generalmente nos encontramos con uno de los dos siguientes problemas:
Exterior sobre-expuesto. Interior correcto   Exterior sobre-expuesto
Interior correcto


Si ajustamos la cámara para que el interior se vea con la suficiente iluminación, seguramente nos encontraremos con que el exterior se verá excesivamente iluminado (sobre-expuesto): casi blanco y sin detalles.
  Exterior correcto. Interior sub-expuesto   Exterior correcto
Interior sub-expuesto

Si disparamos de manera que el exterior se visualice correctamente lo que nos ocurrirá, en cambio, es que el interior pasará a verse muy oscuro o casi completamente negro (sub-expuesto), de modo que habremos perdido los detalles.
Lo que nos está pasando es que en un sólo disparo no podemos recoger un rango tonal lo suficientemente amplio: si conseguimos que las áreas más luminosas se vean bien, la zona en penumbra se nos va a negro; y si las partes en penumbra funcionan, entonces las zonas más iluminadas se “queman”.

Algo parecido sucede con nuestros propios ojos: si estamos al aire libre en un día muy soleado y entramos en un recinto cerrado, nuestras pupilas deberán dilatarse para dejar pasar mayor cantidad de luz y poder captar los detalles; de no ser así lo veríamos todo negro. Y de hecho muchas veces nos ocurre que, cuando la diferencia de intensidad es muy grande, nos quedamos “a ciegas” unos instantes, hasta que nuestros ojos se adaptan a la penumbra. Y viceversa: cuando salimos a la calle nuestras pupilas deben cerrarse, porque si no lo hicieran entraría demasiada luz en nuestros ojos, lo veríamos todo blanco, y hasta se nos podría llegar a dañar la visión.

Para un fotógrafo profesional la solución a este problema se podría abordar usando diferentes métodos: podríamos, por ejemplo, disparar dos fotos como las de arriba y luego, “manualmente” —con la ayuda de Photoshop— seleccionar lo mejor de cada imagen, creando las máscaras necesarias… También podría ajustarse la cámara para captar correctamente el exterior y usar una luz de flash que iluminase el interior (aunque de esta modo estaríamos falseando la verdadera iluminación natural, al introducir una luz artificial extra)…

Pero existen soluciones mucho más “sofisticadas” técnicamente hablando, como por ejemplo la generación de una imagen de alto rango dinámico (HDRI) obtenida a partir de varias imágenes de menor rango. Veamos el proceso sin profundizar demasiado:
Disparamos con múltiples exposiciones   Disparamos con múltiples exposiciones

Es importante que no movamos la cámara entre disparo y disparo. Vamos variando la apertura del diafragma (de modo similar a como haríamos con nuestras pupilas) y obtenemos diferentes imágenes.

Lo mínimo exigido serían 3 exposiciones, aunque se recomienda disparar 5 o más.
Combinamos

Existen diferentes programas que pueden combinar varias imágenes con rangos limitados para convertirlas en una única imagen de alto rango dinámico. Aquí tenemos el cuadro de diálogo de Photoshop CS2.
  Combinar a HDR
RESULTADO: Exterior correcto / Interior correcto   RESULTADO: Exterior correcto / Interior correcto

A partir de las 4 fotos capturadas con nuestra cámara hemos obtenido esta imagen, donde apreciamos que tanto el exterior como el interior se visualizan correctamente: distinguimos los detalles de toda la escena.

Pero cuidado: la fotografía de la izquierda no es una auténtica imagen de alto rango dinámico. De hecho no podemos ver una imagen de alto rango dinámico en nuestros monitores de modo que percibamos efectivamente todo su rango (hay muy pocos dispositivos que sean capaces de ello: BrightSide Tecnologies, HDR DisplaySystems…)

Lo que vemos a la izquierda es una imagen estándar obtenida a partir de un archivo HDRI mediante un proceso que se denomina “tonal mapping”, que convierte la imagen de alto rango dinámico en otra imagen de bajo rango dinámico con 8 bits por canal, para que la podamos seguir manipulando en nuestro software de edición favorito y ver en los dispositivos de visualización habituales (monitores, proyectores, impresoras…)
Así pues, la tecnología HDRI nos permite procesar y obtener unas imágenes en principio imposibles de capturar con una cámara fotográfica normal; pero para poder visualizarlas en nuestros dispositivos corrientes (monitores CRT y LCD, sistemas standard de proyección, impresos…) debemos convertirlas en imágenes de 24 bits —8 bits por canal— de bajo rango dinámico, de modo que no perdamos parte de las ventajas que nos había aportado el HDRI.


Un inciso: por qué 16,7 millones de colores “no son tantos” colores…

Cuando hace unos años leí por primera vez que las imágenes RGB de 24 bits nos ofrecían un abanico de 16,7 millones de colores, recuerdo que me quedé impresionado: ¿para qué tantos colores, si el ojo humano no puede distinguirlos? —pensé entonces—. Pero una vez que comprendes lo que significan realmente esos famosos “24 bits” y cómo se utilizan, la verdad es que las cosas se ven de otra manera… Igual que antes, veámoslo con un ejemplo:
Flor amarilla original   Aquí tenemos una bonita imagen de una flor. Lo que estamos viendo es realmente una versión de “baja calidad”, pues tiene una compresión JPEG considerable para que se cargue rápido en nuestro navegador web. Pero en fin, dejando al margen esa consideración, aquí tenemos una imagen RGB de 24 bits.

O más correctamente, deberíamos decir que es una imagen de 8 bits por canal. Eso significa que tenemos 28= 256 tonos disponibles para cada uno de los canales R, G, B. Y esto explica que al multiplicar 256 x 256 x 256 obtengamos los 16,7 millones de colores (16.777.216 para ser exactos).

Pero fijaos: 16,7 millones de colores nos parecían muchos, pero cuando pensamos en 256, resulta que ya no son tantos…

Analicemos todo esto con un poco más de detalle; para empezar veamos cómo se descompone la imagen de la flor amarilla en sus 3 canales R, G y B.
Flor amarilla, canal rojo Flor amarilla, canal verde Flor amarilla, canal azul
Siempre me ha costado mucho predecir cómo se van a mezclar los colores usando la síntesis aditiva (como se conoce a la combinación de “colores-luz”, tal y como hacen nuestros monitores), a diferencia de la síntesis sustractiva a la que estamos más acostumbrados los que hemos trabajado con técnicas tradicionales de pintura (o sea: amarillo + azul nos da verde…). En definitiva: me cuesta comprender que con la mezcla de luz roja + luz verde obtengamos luz amarilla; me lo creo, por supuesto, pero me cuesta… :-/

Cada uno de estos canales de rojo, verde y azul también lo podemos representar como una escala de grises, y entonces tendríamos lo que generalmente vemos en la paleta de canales de Photoshop (a no ser que hayamos activado la visualización de canales en color):
Flor amarilla, canal rojo Flor amarilla, canal verde
Y si nos fijamos en ciertas partes, apreciaremos que (al margen de la pequeña resolución de esta imagen) hay áreas donde se hace evidente una excasa definición tonal: en las zonas más claritas del canal rojo, vemos como enseguida aparecen blancos puros, y en las áreas más oscuras del canal azul rápidamente nos vamos a negro.
Flor amarilla, canal rojo Flor amarilla, canal rojo detalle
Y es que si analizamos el gráfico superior comprenderemos por qué 256 niveles de gris no son suficientes en algunas situaciones: al observar el canal rojo de la flor, y concretamente el área encuadrada y ampliada, vemos que se compone de tonos de gris muy claritos, de modo que una buena parte se convierten en blanco.

Si ahora comparamos esa zona con el gradiente de la derecha (construido creando un degradado de blanco a negro sobre un documento de 256 píxeles de anchura) vemos que de los 256 niveles de gris, probablemente tendremos que movernos dentro del último escalón de sólo 32 niveles.

O sea, que todo el detalle tonal de esa zona —por lo que al canal del rojo se refiere— deberá solucionarse con 32 tonos —o menos—. ¡Vaya, y parecía que al principio teníamos tanto para trabajar…!
  Escala de grises
Por esta razón existen sistemas de representación gráfica que trabajan con otras profundidades de color superiores a los 8 bits lineales por canal: 8 bits logarítmicos, 10 bits, 16 bits, etc. (cuando se habla de color de 32 bits, generalmente se está haciendo referencia al color de 24 bits por canal + 8 bits extra para la transparencia —el famoso canal alfa—).

Pero en cualquier caso, la forma que tiene el HDRI de almacenar la información difiere de todos esos sistemas: en los métodos de 8, 10, 12, 16 bits la información tonal se almacena en valores absolutos —en 8 bits tendremos un tono que es 127, precedido del 126 y seguido de 128; y así desde el 0 hasta el 255, cubriendo el total de los 256 niveles de gris—. En cambio la información almacenada en el HDRI corresponde a los valores físicos de la luminancia o la radiancia que observamos en el mundo real, expresados en forma de puntos flotantes; es decir, usando cifras del tipo 0,07012 - 0,90012 - 1.256.527,07013, etc. en lugar de los 0, 1, 2, 3, 4253, 254, 255 propios de una imagen de 8 bits.
Gradientes de 8 bits y HDRI


02. Aplicaciones del HDRI. Iluminación 3D basada en imágenes.

La tecnología HDRI se puede emplear para diferentes cosas: puede ser de gran ayuda para un fotógrafo, ya que le permite generar un archivo “maestro” con un enorme rango lumínico, para posteriormente extraer diferentes versiones “acotadas” que puede seguir manipulando en Photoshop y acabar visualizándose a través de un sistema standard; pero también puede emplearse como fuente de información lumínica para iluminar una escena 3D o como entorno de reflexión muy preciso. Este es el aspecto que más nos interesa a los que trabajamos con herramientas 3D.

Fue Paul Debevec (un gran “héroe” para mi y para muchos a los que nos apasiona el 3D, debido a que simboliza la perfecta fusión entre tecnología y arte) y su equipo de la Universidad del Sur de California, el que dió a conocer al mundo las posibilidades que tenía la aplicación de la tecnología HDRI en el campo de la imágenes generadas por ordenador. Todavía recuerdo cuando vi por primera vez la impresionante animación Fiat Lux (1999) en un ArtFutura en Sevilla: me quedé impresionado por su belleza, elegancia y perfección técnica (para todo aquel que no la haya visto le recomiendo encarecidamente que lo haga). He de admitir que en un principio no entendí realmente lo que acababa de ver: pensé que el entorno de la Basílica de San Pedro era una filmación real, y sólo habían creado en 3D las grandes piezas negras del dominó gigante y las esferas cromadas… Pero no: estaba todo generado con ayuda del ordenador.

Fiat Lux supuso una auténtica revolución en el sector de las CGI, ya que implementaba todo un conjunto de tecnologías nuevas que hasta ese momento nadie había empleado con tales resultados (Campanille, también de Debevec, fue un corto dos años anterior que ya empleó alguna de esas técnicas, pero la obra con la que alcanzó el mayor refinamiento fue Fiat Lux).

Pero para poder renderizar los 4500 fotogramas de este corto se tuvieron que emplear 187 ordenadores trabajando a pleno rendimiento durante 3 días. Es decir: a un sólo ordenador de 1999 le hubieran hecho falta unos 561 días —un año y medio— de cálculo continuado. Los procesadores han mejorado mucho desde entonces, pero no creo que hoy pudiéramos renderizarlo en un par de tardes…

La utilización de las técnicas HDRI para obtener la iluminación de una escena proporcionan resultados espectaculares, pero consume mucho tiempo de cálculo. Para una imagen estática o la animación de un escenario sencillo nos lo podemos permitir, pero para una escena con millones de polígonos todavía tienen que aumentar mucho la velocidad de los procesadores para no tener que vernos obligados a usar “granjas” de render.

Desde el primer momento me interesó muchísimo el planteamiento de la iluminación de una escena a través de imágenes usando el HDRI: un sistema que permite insertar un elemento generado por ordenador dentro de una escena real haciendo que el objeto sintético aparezca iluminado por una “nube” de luces que se corresponde exactamente con el entorno real.


Descripción abreviada del proceso.

— Nos vamos a un escenario real (el interior de una iglesia o en medio de unos jardines…) con nuestra equipo fotográfico y un trípode.

— Obtenemos una imagen panorámica de todo el entorno. Esto se puede conseguir de muchas maneras: usando una esfera reflectante de gran calidad y captando la imagen del entorno tal y como se refleja en ella (para después procesar la imagen mediante software y extraer la imagen panorámica); disparando muchas imágenes en diferentes ángulos perfectamente calibrados, para después ensamblar el conjunto y obtener la panorámica; o —si tenemos suficiente dinero— haciéndonos con un equipo fotográfico especial que puede captar todo el entorno (los 360º en horizontal y 180º en vertical) de un sólo disparo.

— Si queremos conseguir un entorno HDRI es necesario, además, disparar con diferentes aperturas de diafragma cada una de las fotografías, para después combinarlas según el proceso descrito anteriormente.

— Una vez que hemos obtenido nuestro entorno panorámico HDRI, procesándolo con nuestro ordenador, lo guardamos para ser utilizado dentro de nuestro software 3D.

— Construimos un objeto/escena 3D (un nuevo altar para la iglesia o una fuente para insertar en medio del jardín…).

— Utilizamos la imagen panorámica HDRI por un lado para iluminar nuestra escena 3D, y por otro lado como entorno de reflexión para que los objetos virtuales reflejen el entorno real. Paul Debevec utilizó además las imágenes del entorno como sistema de información para generar la geometría de la propia Basílica de San Pedro, mediante un proceso conocido como modelado fotogramétrico (ImageModeler de RealViz es un software comercial con el que realizar este tipo de labores, aunque Debevec usó un software propio: Façade).

Actualmente casi todos los programas 3D comerciales han incorporado la posibilidad de utilizar entornos panorámicos HDRI como fuente para el sistema de iluminación. Los resultados suelen ser espectaculares y para una imagen estática merece totalmente la pena su utilización.

Pero, como suele ocurrir con algunas de las tecnologías a nuestro alcance en muchos programas 3D, algunas veces es preferible encontrar métodos alternativos para conseguir un resultado similar —pese a que dispongamos del camino directo “apriete-usted-este-botón”—, de manera que no tengamos que sufrir una penalización tan grande en tiempos de render (entre otras cosas, porque no todos tenemos a nuestra disposición una bonita granja de render con 100 procesadores). Es lo que en inglés se denomina “fake”.

Un ejemplo muy típico de ello es el de la refracción: un parámetro que ha estado disponible en casi todos los paquetes de software desde el primer momento, pero cuya aplicación nos ralentizaba de tal modo los cálculos que merecía la pena utilizar técnicas que imitaran ese acabado (especialmente en animaciones), simulando las distorsiones propias de la refracción mediante algún “fake” de postproducción (éste podría ser un buen material para otro tutorial…).

Incluso hasta con el archi-conocido raytracing pasa algo parecido: Pixar no ha utilizado de un modo masivo los reflejos raytracing en sus películas hasta “Cars”. En todas sus producciones anteriores restringían su uso al máximo, porque renderizando para cine —y con los millones y millones de polígonos que podemos encontrar en muchas escenas— el raytracing resultaba excesivamente lento, y eso que Pixar debe contar con más de un par de equipos para renderizar ;-) (si os apetece leer artículos sobre la tecnología empleada en las pelis de Pixar, aquí tenéis un buen link).




03. LightRig: una alternativa digna y rápida a la iluminación HDRI
.

Hace unos 3 años mi amigo David Argemí, a través de su compañía Konkeptoine, desarrolló un plugin para ElectricImage que permitía generar luces a partir de la imagen aplicada a una geometría: LightRig. Me consta que ideas parecidas han sido implementadas en algunos otros programas como Lightwave o Maya (independientemente de que esos mismos paquetes de software puedan emplear verdaderas HDRI si se precisa). La idea es sencilla pero muy potente:
— Posicionamos el modelo que queremos iluminar con un entorno real en el centro de nuestra escena.

— Lo envolvemos con una esfera a la cual aplicamos la imagen del entorno (no una imagen HDRI, sino una simple imagen de 24 bits) como una textura de tipo esférico.

— Vinculamos la esfera texturizada con nuestra imagen al plugin LightRig.

— Definimos el número de luces que queremos crear, el tipo (luz paralela, omnidireccional, spot…), la intensidad base, etc.

— Y LightRig se encarga de crear tantas luces como le hayamos pedido, distribuidas aleatoriamente por la superficie de la esfera, apuntando hacia su centro (donde está nuestro objeto) y teñidas con el color que tiene la imagen que cubre la esfera en el punto donde se genera la luz.
Cuadro diálogo LightRig
Esfera de imagen Esfera de luces
Cuando David me habló de ese plugin y todavía estaba en fase de desarrollo enseguida captó mi atención y le dediqué un tiempo a su beta-testing. Lo que salió de allí lo podéis ver en mi pequeña animación “The Virgin”: un modelo 3D (comercial) de la Virgen rodeado e iluminado por el entorno fotográfico de una iglesia.

Pero para realizar ese miniproyecto le estuve dando bastantes vueltas al concepto mismo en el que se basaba LightRig para perfeccionar su utilización y conseguir una mejor relación calidad-precisión-rendimiento. Veamos cual fue el proceso de desarrollo:
Imagen expandida Nube de puntos
Aquí tenemos una versión reducida de la imagen panorámica utilizada como base para envolver e iluminar The Virgin.

El principio de LightRig se basa en que distribuye aleatoriamente tantas luces como le indiquemos por la superficie de nuestra esfera de manera que capturen el color de la imagen en el punto donde se generan.
  En este rectángulo vemos una distribución más o menos aleatoria de 50 puntitos sobre un rectángulo de igual proporción que nuestra imagen. Al pedirle a LightRig que nos distribuya las 50 luces sobre la superficie de la esfera nos estaría ofreciendo algo parecido a lo que aquí vemos (si expandiéramos la esfera, claro). De hecho contamos con un parámetro llamado “Random Seed”, que al variarlo modifica la distribución aleatoriamente.
Si superponemos los 50 puntitos distribuidos aleatoriamente sobre la imagen de nuestro entorno comprobamos que la efectividad es muy baja: la mayor parte de las verdaderas fuentes de luz de la escena (las ventanas enmarcadas en verde) son ignoradas y sobre ellas no recae ningún punto.   Nube de puntos sobre imagen expandida   Y por otro lado,
muchos de los puntos distribuidos aleatoriamente no coinciden con zonas de luz, sino con áreas de gran penumbra, que poco contribuyen a la iluminación.

La iluminación que conseguiríamos con un sistema como este sería muy poco realista.
Una posible solución a este problema sería emplear la “fuerza bruta”: en lugar de 50, distribuimos 500 luces aleatoriamente. Y tenemos:
Nube de puntos sobre imagen expandida
Si nos fijamos con detalle en la muestra veremos que continúa habiendo zonas de origen de la luz sin ningún punto asignado. Podríamos elevar el número de luces a 1.000 o 2.000, y de ese modo seguro que tendríamos todos los puntos cubiertos. Pero no hay que olvidar que se supone que este ha de ser un método rápido para obtener un resultado que se acerque a la iluminación HDRI —aunque no pueda igualar su calidad—. Y cuando empecemos a manejar tantísimas luces, el rendimiento bajará considerablemente (pudiendo llegar incluso a resultar menos efectivo que la propia HDRI).

¿Cómo resultar mucho más efectivo usando incluso menos luces? Veamos cual fue el procedimiento. Seguramente se podría automatizar introduciendo alguna porción nueva de código dentro del mismo plugin, pero eso, lamentablemente no está a mi alcance y tuve que emplear un método menos sofisticado y más “casero” :-)




Optimizando la nube de luces: menos es más.

Mi primer paso consiste en reducir la imagen panorámica original hasta un tamaño muy pequeño, exactamente de 128 x 64 píxeles. Para esta reducción de escala empleamos una interpolación bicúbica (que es la que por defecto encontraréis en el diálogo de “Tamaño de Imagen”, en Photoshop):
Imagen original y reducción
Si nos fijamos en la imagen resultante apreciaremos que, aunque sea pequeñita, sigue conservando los detalles lumínicos más importantes de la imagen original (las ventanas, las lámparas, las zonas más iluminadas del suelo…). Si no fuera así podríamos aplicar una reducción menos drástica. El objetivo es obtener una imagen con todo lo importante de la imagen original pero con el menor número de píxeles posible (en nuestro caso, 128 x 64 = 8.192 píxeles, que ya son unos cuantos, por otro lado…)

Podríamos seguir trabajando sobre esta imagen, pero para hacer las cosas más cómodas vamos a ampliarla al 800%, 1024 x 512 píxeles, pero esta vez aplicando una interpolación por aproximación —también llamada “por vecindad”, del inglés “Nearest Neighbor”—. De este modo obtendremos una imagen grande, pero con un aspecto pixelado, porque lo que realmente ha sucedido es que los píxeles de la pequeña han sido “escalados” sin tener en cuenta a los que les rodean. Cada píxel de la imagen pequeña es ahora representado por una matriz de 8 x 8 píxeles idénticos.

(NOTA: aquí la imagen ha sido reducida al 50% —512 x 256 píxeles— para mantener los gráficos más pequeños y manejables).
Imagen reducida y ampliación
Bien, si nos fijamos en la imagen de la derecha vemos que no alcanza la resolución necesaria para verse correctamente, pero tenemos suficiente información para definir los principales puntos de luz. Y eso es lo que vamos a hacer, manualmente, usando Photoshop:
Puntos altas luces
  Empezamos por localizar los cuadritos con las luces más altas “highlights”: seleccionamos los 45 puntos más luminosos. Pensad que en cada uno de esos puntos se posicionará una luz que cogerá el color de ese cuadrito.

En ocasiones puede resultar difícil apreciar a simple vista cuáles son las zonas más luminosas, en esos casos podemos ayudarnos de la herramienta de ajuste “Niveles”. Otro buen truco consiste en convertir una copia de nuestra imagen a modo Lab y entonces quedarnos con el canal de luminancia.
Puntos medias luces
  Separadamente seleccionamos otros 44 puntos que podríamos clasificar como medias luces, luces de relleno o “fill lights”.

En nuestro ejemplo, la selección de las luces más altas era sencilla: si os fijáis cada uno de los puntitos rojos están encima de una ventana o una fuente de luz.

En esta segunda selección vamos recogiendo diferentes puntos de las zonas con iluminación media tratando de que estén más o menos homogéneamente repartidos.
Luces luces ténues
  Y finalmente elegimos unos cuantos puntos con cierta luminosidad, pero dentro de las zonas más tenues. Seleccionamos 39 cuadritos, que con los anteriores suman 128.

No tiene mucho sentido que seleccionemos las zonas de oscuridad máxima (los bancos negros o las zonas más oscuras del techo) porque no aportarían nada a nuestro sistema de iluminación.
Selección completa
  Aquí vemos los 128 cuadros seleccionados: en rojo las altas luces, en azul las medias y en verde las luces más tenues.

Para trabajar cómodamente y no destruir la imagen del fondo voy creando capas separadas donde sitúo cada una de estas selecciones.
Selección con sus colores
  Y aquí tenemos nuestro documento final con los 128 cuadritos seleccionados, con el color que les corresponde extraído de la imagen de fondo, y el resto convertido a negro.

Un detalle importante:
lo convierto a negro absoluto porque LightRig tiene una prestación que hace que cuando encuentra una zona negra no añade luces, la ignora.

Podría utilizar este archivo directamente como fuente para generar mis 128 luces, pero prefiero guardar 3 archivos de imagen diferentes para poder introducir características especiales en función de cómo quiero generar las altas luces, las medias y las tenues por separado. Por ejemplo: las luces altas quiero que me den sombras y el resto no… ;-)
Altas luces Medias luces Luces ténues


Convertimos nuestros puntos lumínicos clave en luces 3D.
Aquí vemos el conjunto de los 128 cuadritos coloreados que se distribuyen por la superficie de una esfera.

Para hacer las cosas más coherentes la esfera se compone también de 128 x 64 polígonos, de tal manera que hay un perfecto registro con los elementos de la textura, de 128 x 64 píxels.

Esta misma esfera también me sirve para colocar otra textura con el fondo en alta resolución —sin pixelar— que renderizaré como un pase independiente.
  Esfera con la nube de puntos
Y aquí tenemos como, gracias al plugin LightRig, los 128 cuadritos de colores han generado 128 luces que han cogido sus valores cromáticos y se corresponden exactamente con los puntos reales de origen de la luz.

Como ya he explicado un poco más arriba, realmente no genero las 128 luces de golpe a partir de la imagen conjunta, sino que me traigo las 3 selecciones hechas previamente para poder generar independientemente las 45 luces de gran intensidad, 44 luces de intensidad media y 39 de baja intensidad.

Esto me permite también definir cada grupo de luces de un modo diferente: las 45 altas luces son spots que proyectan sombras mapeadas que cubren justo lo que ocupa la estatua de la Virgen. De este modo obtengo un sistema de sombreado que se asemejaría a una verdadera Iluminación Global.

El resto de las luces son de tipo omnidireccional y no proyectan sombras.
  Esfera con la nube de luces
Virgen iluminación simple
Virgen iluminación especial
La estatua de la Virgen con un par de luces standard, sin aplicar nuestro array de luces.   Y aquí ya la vemos con el aspecto que toma tras ser iluminada con todo el conjunto de las 128 luces (45 de ellas arrojando sombras).
Fondo pixelado
Selección de luces en el fondo
Detrás de la Virgen vemos la imagen pixelada que habíamos generado para extraer los puntos de iluminación clave.   Y aquí tenemos una parte de esos 128 cuadritos que dan origen a nuestro sistema de iluminación.
Imagen final
Y este es el resultado final tras unir el render de la Virgen con el del fondo y procesar la imagen en Photoshop (he desenfocado el fondo y realzado el aspecto de la Virgen con una técnica muy similar a la empleada en mi trabajo “Spanish Breakfast”). Y en este link puedes ver la pequeña animación que realicé en su día girando alrededor de la estatua y mostrando una síntesis de todo el proceso (Tamaño: 11 MB · Duración: 01'20" · QuickTime).

En cuanto a los tiempos de render: el primer frame le cuesta 41 segundos y a partir de ahí renderiza a razón de 18 segundos por frame. Menciono esto porque no olvidemos que el objetivo de este tutorial es el de desarrollar una alternativa digna para la iluminación HDRI manteniendo unos tiempos de render los más bajos posible (los tiempos corresponden a un Mac G5 dual 2x2,7 GHZ con 4 GB de RAM trabajando con ElectricImage 6.5).


BIBLIOGRAFÍA E INFORMACIÓN COMPLEMENTARIA
En la Wikipedia:

— High dynamic range imaging
— High dynamic range rendering
— Digital image
— Dynamic range
— Tone mapping
— Luminance
— Radiance
— Full screen effect
— Visual system

(incluyo los links en inglés, desde ellos podéis acceder
a las versiones en español, casi siempre más reducidas)
  Otros links interesantes:

— Paul Debevec, el gran maestro
— Digital Photography Tutorials, del fotógrafo Sean McHugh
— Art of HDR, un artículo de la revista FXGuide
— HDRI a World Technology
— Greg Downing, un fotógrafo que usa HDRI
— Panoramas.dk, las mejores imágenes QTVR
— VR.MAG, buenísima revista sobre fotografía QTVR
— HDRShop, soft para procesar y manipular HDRI
— HDRI-Studio, entornos HDRI imitando iluminación de estudio
— Sachform, entornos HDRI del mundo real
— Konkeptoine, los creadores de LightRig
— ElectricImage, lo que suelo usar para mis renders
— Apple, los creadores de QTVR y otras cosillas
— CubicConverter, una magnífica utilidad para procesar QTVR
Copyright de las imágenes y de los textos: Cristóbal Vila · www.etereaestudios.com (excepto si se indica otra información diferente).
Thanks to Sean McHugh for give me the permission to use some nice images from him site “Cambridge in Colour”.

NOTA: He intentado ser lo más preciso y exacto posible, pero es probable que exista alguna incorrección en el texto. Si detectas algún error no dudes en hacermelo saber para proceder a su corrección.


Etérea Workshops Banner
Por favor: no hagas un copiar-pegar de este material en tu página, weblog o foro sin mi permiso. En su lugar puedes incluir un link a esta página.
All images copyright Cristóbal Vila

you are the visitor | eres el visitante