CICE - La Escuela Profesional de Nuevas Tecnologías CICE - La Escuela Profesional de Nuevas Tecnologías
contacto Te llamamos Campus Online

Tutorial: Formatos de alto rango dinámico (High Dinamic Range, HDR) en producción

hdr-produccion

Gracias a Víctor Feliz de Motiva, os presento a continuación un tutorial sobre el uso de imágenes de alto rango dinámico (HDR, EXR) en producción con respuestas a cuestiones como: ¿a qué llamamos HDR, en qué se diferencian de las imágenes convencionales, en qué casos es recomendable utilizarlas y cuáles no?. Sin más, os dejo a continuación con él, no sin antes agradecerle su tiempo y el que comparta sus conocimientos en la materia.

tutorial-hdri-victor-feliz-dimension-2-5-portada

Antes de nada permitir que me presente, me llamo Víctor M. Feliz, y con más o menos suerte, me dedico como casi todo el mundo que visita este blog a temas relacionados con la infografía, aunque en mi caso lo haga en gran parte en tareas de desarrollo.

Cada vez veo más “posibilidades desperdiciadas”, como el software avanza brutalmente día a día y por eso a veces se pierde el interés por las cosas más básicas, cada vez es más común que la gente sólo se pregunte cómo conseguir un “look” al estilo Alex Román en dos clicks sin pararse a pensar en que con muy poquito esfuerzo, una mínima teoría y un poco de lógica podemos darle una nueva perspectiva a nuestros trabajos.

En definitiva, mi intención es aportar pequeñas pinceladas principalmente de teoría que ayuden a comprender mejor el por qué de las cosas en el mundo del CG.

Usar formatos de alto rango dinámico en producción

No voy a entrar a comentar las bondades de usar imágenes HDR para iluminar ya que de eso podéis encontrar cientos de tutoriales en cualquier lado buscando por HDR lighting o por IBL (Image Based Lighting), mi intención es explicar que son exactamente esos formatos y el por qué de su uso fuera del paso de iluminación.

¿A qué llamamos HDR?

HDR son las siglas de High Dinamic Range (alto rango dinámico) pero a menudo nos referimos con esas mismas siglas a lo que deberíamos llamar HDRI High Dinamic Range Image, es decir una imagen de alto rango dinámico. Por favor no confundir este término con el tratamiento HDR de las imágenes, ya que si bien están muy relacionados a nosotros nos interesa las características matemáticas de este tipo de archivos.

¿En que se diferencian de otro tipo de imágenes?

Los formatos de alto rango dinámico, habitualmente archivos tipo .hdr o .exr, se diferencian de los de bajo rango dinámico LDR (también llamados de rango dinámico estándar o SDR) por la cantidad de información que pueden almacenar.

Los tipos de LDR más comunes como pueden ser .jpg .png o .tga guardan la información de color en 3 bytes (y otro para el alfa en caso de existir). Por tanto podemos almacenar 2^8 valores por cada canal, es decir 256 valores de rojo, 256 valores de verde y 256 valores de azul que combinados nos dan más de 16 millones de colores.

Por otro lado, los formatos de HDR pueden llegar a almacenar 32 bits por canal es decir más de 4 millones por canal que combinados dan un espectro mucho más amplio, si bien a nosotros no nos interesa usar esos 32 bits como combinaciones “de fuerza bruta” si no usarlos de una forma más racional en formato de punto flotante (también llamado coma flotante) esta forma de almacenar los datos nos va a permitir guardar números muy grandes y muy pequeños con una amplia gama de valores intermedios.

¿Por qué usar este tipo de archivos?

Hay dos grandes ventajas una consiste en almacenar valores por encima del máximo representable y otra el tener más valores intermedios:

Cuando disponíamos de 256 valores era lógico asociar cada canal a un valor entre el 0 y el 255 de modo que el 0 fuera el mínimo representable y el 255 el mayor número representable, así obtenemos los famosos RGB = 0 0 0 Negro, RGB =127 127 127 Gris, RGB = 255 255 255 = Blanco, RGB = 255 0 0 = Rojo … etc.

Sin embargo cuando tenemos millones de valores ¿cómo tomamos el color? muy sencillo debemos acostumbrarnos a pensar en el rango [0,1] donde 0 es el mínimo y 1 el máximo representable luego RGB = 0 0 0 Negro, RGB =0.5 0.5 0.5 Gris, RGB = 1 1 1 = Blanco, RGB = 1 0 0 = Rojo …

¿Como traducir de uno a otro? Como casi todo lo que veremos en este artículo, de una forma muy simple: dividiendo. Si queremos traducir el color RGB 100 50 25 dividiríamos cada valor por 255 (su máximo) y obtendríamos RGB 0.329 0.196 0.098

¿Y donde está la ventaja?.

Valores por encima del máximo representable

Con los formatos HDR el valor 1 indica el máximo representable por la pantalla o el máximo que puede ser impreso, pero no el máximo que puedes guardar en el formato, aquí sin problemas podrías guardar un RGB 10 11 12.

¿Como se vería?. Pues al tratarse de valores por encima del máximo se vería blanco, sin más. Entonces parece estúpido intentar guardar valores que no pueden mostrarse , pero esto dará pie a muchas utilidades, entre ellas la de usarse como iluminación o recuperar datos “perdidos”.

Su uso en iluminación de escenas se debe a que como podemos almacenar valores por encima del 1.0 podremos distinguir entre fuentes de luz y materiales simplemente blancos. Por ejemplo, si tomarais el valor de un folio puesto en una zona clara y una fotografía del Sol en LDR ambos os darían un valor de RGB 255 255 255 es decir blanco y de ahí el motor de render no sabría discernir si alguno de los dos es una fuente de luz, sin embargo en HDR podríamos tener un valor de RGB 1 1 1 para el folio y RGB 100 100 100 para el Sol y por tanto entendería que eso no es un material claro sino una fuente de luz.

En cualquier caso como os comento este no es el propósito de este texto sino su uso en postproducción.

Imaginemos que este render nos ha salido completamente sobreexpuesto por una mala configuración de renderizado, por un setting de la cámara que se nos ha escapado o simplemente por que una etapa de postproducción anterior lo ha “quemado”.

tutorial-hdri-victor-feliz-dimension-2-5-a

¿Qué pasaría si estuviera en un formato LDR y tratáramos de oscurecerlo?

tutorial-hdri-victor-feliz-dimension-2-5-b

¿Lógico, no?. No hay información en la zona más expuesta y por tanto no hay modo de recuperarla.

¿Qué pasaría si estuviera en un formato HDR y tratáramos de oscurecerlo?

tutorial-hdri-victor-feliz-dimension-2-5-c

Al contar con valores por encima de ese 1.0 que señala el límite de lo representable hemos podido rescatar valores “más blancos que el blanco” y por tanto hemos reconstruido la imagen sin problemas.

Valores intermedios

Hemos visto que cualquier valor LDR tiene su conversión a HDR pero en éste último modo dispondremos de muchos más valores intermedios. Por ejemplo el mínimo que se puede guardar sin ser negro en LDR sería RGB 1 1 1 = HDR RGB (1/255) (1/255) (1/255) = 0.0039 0.0039 0.0039. Muy bien pero en HDR podríamos guardar miles de valores intermedios como RGB 0.003899 0.003899 0.003899

¿Para qué queremos tantos valores? Imaginemos el caso contrario ahora tenemos una imagen subexpuesta y queremos aclararla:

tutorial-hdri-victor-feliz-dimension-2-5-d

Si usamos LDR nos aparecerá este fenómeno llamado “banding” que se debe a que no teníamos suficientes niveles intermedios en esa zona oscura y por tanto al aclararlo hay zonas que toman el mismo valor.

tutorial-hdri-victor-feliz-dimension-2-5-e

Como podíais intuir al usar un método de HDR el disponer de tantos valores nos ha servido para que esas zonas que no se distinguían en realidad almacenaran valores de color distinto y al aclarar la imagen se han hecho visibles.

tutorial-hdri-victor-feliz-dimension-2-5-f

¿Cuándo usarlo, cuándo no?. Ventajas e inconvenientes

El usar formatos del tipo HDR tiene dos inconvenientes:

  • Espacio en disco, estos formatos ocupan sensiblemente más que los LDR, esto es algo absolutamente trivial, no importa para nada en imágenes estáticas y tampoco es algo excesivamente preocupante si renderizas animaciones en una granja local puesto que un disco duro de 2 Tb (consultado a 18/09/2011) cuesta menos de 70€ y un fotograma a 1280×720 puede andar por los 5 MbB pero puede convertirse en un problema si renderizas en remoto y necesitas recibir el resultado rápidamente.
  • Abrir este tipo de imágenes, si bien todos los que nos dedicamos a temas de infografía tenemos algún programa que permite abrir/editar estos formatos alguien que no esté ligado a este mercado puede que no sepa que le has enviado.

Los ejemplos mostrados eran algo completamente simbólico y difíciles de encontrar en la realidad salvo en el caso de algún cielo, alguna zona cercana a lámparas etc., sin embargo el uso de formatos del tipo HDR en postproducción nos permitirá aplicar continuamente filtros y técnicas a la imagen sin que esta se degrade como ocurriría con las LDR. En definitiva, mi conclusión sería usarlo como salida de render siempre (o casi) pero pasarlo a LDR antes de la entrega final.

Me despido de este primer tutorial agradeciendo a Miguel la oportunidad de poder colaborar de forma más activa en Dimensión 2.5, después de años siguiéndolo como lector. Un saludo y espero vuestros comentarios.

Nota: Disponéis de más información complementaria desde el siguiente PDF, el mismo mostrado durante la presentación de Víctor en Mundos Digitales 2011.

08/10/2011 | , , , | Artículos Animación Tutoriales Animación

Miguel Gómez

Miguel Gómez

@miguelgomezeu

vuestroscomentarios

miguel 09-10-2011

Hola Pep Si exportas en EXR o HDR en flotante, y a ser posible, en 32-bit por canal, es cuando podrás aprovechar al máximo todo lo comentado en el artículo. Por un lado dispondrás de una mayor variedad de tonalidades y siendo "flotante", permitirá exceder esos límites por encima de 1 y "recuperarlos" en operaciones posteriores.

peprgb 09-10-2011

Realmente interesante!! me surgen algunas dudas; en el primer ejemplo al guardar en HDRI tenemos valores "más blancos que el blanco" pero lo que conseguimos al final son valores grises (las nubes...etc) que entiendo estarían por debajo del 1.0...vaya lio.... En EXR recomiendas guardar en Full float, Half o integer? este último parece no tener mucho éxito hasta donde he leído y por peso/calidad me suena de usar el Half (16bit/c) Muchas gracias por tratar estos temas. Un saludo,

Escribe tu
Comentario

Si quieres personalizar tu avatar, click aquí.
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *
Recuerda que los comentarios deben ser revisados por un administrador.

Mándanos tu consulta

Puedes llamarnos al 91 401 07 02 (Centro Maldonado) o al 91 435 58 43 (Centro Povedilla).

Si lo prefieres, déjanos tus datos y nosotros te llamamos.

*Selecciona una titulación

Te llamamos sin compromiso

Puedes llamarnos al 91 401 07 02 (Centro Maldonado) o al 91 435 58 43 (Centro Povedilla).

Si lo prefieres, déjanos tus datos y nosotros te llamamos.

Tutorial: Formatos de alto rango dinámico (High Dinamic Range, HDR) en producción
Solicita información sobre
Envíanos tu opinión sobre CICE
Nosotros te asesoramos

¿No te decides?

Nosotros te ayudamos. Utiliza nuestro buscador avanzado para encontrar el curso que quieres.