domingo, enero 28, 2007

HDR en Linux (I)

Una de las cosas que me ha traído loco desde que tengo cámara digital es poder crear imágenes de alto rango dinámico o HDRI, como se conocen en sus siglas inglesas (High Dynamic Range Images).

Ya conocía desde hace bastante tiempo este tipo de imágenes, había leído un montón de cosas sobre ellas en las Cinefex, y en la cinematografía de los últimos 5 años se han venido usando con bastante frecuencia. De forma que toda película medianamente actual cuyo presupuesto de efectos especiales sea casi igual al de las facultades en pinchos de tortilla, usará imágenes HDR durante la post-producción. De hecho, seguro que habéis visto a algún tipo que lleva una extraña bola de cromo sujeta por un palo pasearse por los decorados. A esa bola se la llama lightprobe, y el tipo lo que hace es medir la intensidad de la luz y elegir el tiro de luz para luego crear las imágenes HDR.

Pero qué son las imágenes de alto rango dinámico (HDRI). El concepto es realmente simple, son únicamente imágenes tomadas de un mismo sitio con diferente exposición (sea variando el diafragma o la obturación), luego esas imágenes se unen en un único archivo que las contiene todas. Una HDRI abierta con cualquier programa y vista no es más que una fotografía que en lugar de pesar 3-4MB pesa 30. Metiéndonos en cosas más técnicas podemos decir que las imágenes HDRI por el hecho de tener todos los datos de variación de luminancia y crominancia en 1 pixel dado es capaz, con la interpretación correcta, de reproducir la luz que emite ese mismo pixel para una determinada abertura. Es decir, se produce el proceso contrario, precisamente por tener X imágenes con todos los valores de luminancia y crominancia posibles, hace posible que para una exposición dada, es decir, tomar como base una de esas imágenes, se puedan extrapolar del resto la información lumínica de la misma y convertirla en luz dentro de, por ejemplo, un paquete 3D como Maya o Softimage. Además, el hecho de que las imágenes que la componen se hayan tomado variando la exposición hace que la respuesta de la HDRI sea logarítmica y no lineal y, por lo tanto, tengamos una salida físicamente realista con una HDRI.

Por otro lado, y para entender en conjunto las HDRI, hablemos del 3D. Uno de los grandes problemas del 3D es la iluminación. Aunque es relativamente fácil emular fuentes de luz realistas en un software 3D, es realmente complicado que esas luces se comporten físicamente igual a como lo hacen en la realidad. No es complicado por dificultad operativa, es decir, sea un problema difícil de resolver, sino porque es un tremendo costo en recursos tratar de emular una luz física. Dicho de otra manera, o tienes cientos y cientos y cientos de procesadores para renderizar imágenes o mejor que busques alguna técnica alternativa. Por otro lado, a la hora de integrar imágenes sintéticas con imágenes reales se plantea el problema de que ambos ambientes cuadren lumínicamente, es decir, es evidente que no puedes poner un personaje sintético iluminado como si fuera un atardecer dentro de un plano que sea a pleno sol de mediodía. Las HDRI vienen a paliar un poco ambos problemas, aunque más el segundo que el primero.

  1. Al ser imágenes, el ordenador se evita algunos cálculos a la hora de calcular una iluminación global (los rebotes de la luz) pues no tiene que calcular cual es la intensidad de la luz desde cada punto, le viene dada por la imagen, solo tiene que calcular su resultado. El hecho de que tenga virtualmente todos los valores posibles de iluminación en una escena dada hace posible esto.
  2. En el segundo aspecto una HDRI, al ser meras imágenes tomadas de un espacio real, son capaces de reproducir casi con total exactitud las condiciones lumínicas de ese espacio. Este último es realmente el gran avance que han supuesto las HDRI. Pues son una forma fácil, rápida y sobretodo, barata de resolver este problema. Es tan sencillo como hacer una serie de fotos (al menos 5 a distinta exposición) de un decorado y luego procesarlas para tener todo el ambiente lumínico del mismo de la forma más precisa posible, antes había que hacerlo un poco a ojo y con "luces truco".

Ahora volvemos a nuestro querido supervisor de efectos visuales y su lightprobe y es que este tipo lo que hace, como dijimos es calcular el punto desde el cual se pueda obtener el mejor "tiro de luces"; una vez elegido se pondrá la lightprobe sobre un pedestal a la altura que se estime oportuna y se harán las fotos que hagan falta. No hay que decir que hay que ser extremadamente preciso, pues cualquier movimiento de la cámara durante cualquiera de las exposiciones puede hacer que salga falseada la imagen.

Por último una cosa curiosa, y es que se usan estas bolas cromadas porque abarcan un ángulo de visión realmente amplio de más de 180º, por eso se fotografían estas bolas y se desprecia la oclusión de luz que pueda aportar la cámara, que evidentemente sale en las fotos, aunque hay algunas técnicas para borrarla. Por otro lado, aunque ya lo comentaremos, la mejor forma de tener nuestra lightprobe en casa, pues son bastante caras, es hacerse con una bola relativamente grande y plateada de navidad, de las del árbol. Otra opción, aunque no es muy recomendada es usar objetivos angulares (<18mm), porque causan aberraciones en la perspectiva y efectos de barrilete, que aunque se pueden corregir, es engorroso y lento.

Algunos enlaces interesantes:

1 comentario:

tr0nio dijo...

mmmm HDR... :D...

Te quito el dead.