Reel 2017

ESP: Hace algún tiempo que no actualizo el portafolio, así que hice una pequeña recopilación del trabajo realizado principalmente durante el último año.

ENG: It’s been a while since I did a reel, so here’s a recap of the work I’ve been doing for the past year.


Donkey Kong (Fan art)

ENG: Here’s another project I didn’t posted on the blog, a quick fanart of Donkey Kong, aiming for a mix between the cartoony shape and realistic hair and materials.

As usual, all done in Blender, rendered in Cycles with little post in Photoshop.

ESP: Otro proyecto que nunca publiqué en el blog, un fan art de Donkey Kong, tratando de lograr una mezcla entre el diseño cartoon del personaje con materiales y pelaje realistas.

Hecho en Blender, render en Cycles con algo de post producción en Photoshop.


Alien bust

I just realized I never posted this project here. What started as another alien head speed sculpt turned into an excuse to learn Substance Painter and practice retopology. I also did a short loop to see how well it would deform, though the rig could be a LOT better, it was a fun exercise 🙂

Acabo de recordar que nunca publiqué este proyecto en mi blog. Inicialmente era otro de los ejercicios de escultura que suelo hacer para practicar, pero se convirtió en la excusa perfecta para aprender más sobre Substance Painter, y también para ir más allá de la etapa de retopo y hacer el rig más sencillo posible, los resultados automáticos del rig no son los mejores pero como ejercicio estuvo bien 🙂




Lo que empezó como una prueba de iluminación y settings de cámara terminó convirtiéndose en esta imagen. Un poco con vibra de película de terror, puede funcionar para hacer un pequeño teaser a partir de la imagen 🙂

What started as a simple test for camera en lighting setting morphed into this. I liked the horror movie vibe it has, maybe a little animated teaser can be done with this 🙂

Render en Cycles, post en Krita y Photoshop

Render final
Filmstock LUT
Captura de viewport

Santa Claus

Had an old base sculpt lying around and decided to do something with it for the holidays, so here’s a portrait of Santa, and an interview 🙂

Five Questions with Santa
By Melissa Muñoz

So Santa, tell us. Have things changed since you first started giving out gifts during Christmas?

Well of course they have, it’s been a very long time. There were not many presents at first. I think I miss Yule the most. Then I did not have to do everything in one night. It’s a logistical nightmare, you can’t even imagine. Even more so now, with so many planes flying all over the place. In yule we could relax, have some beer, and eat a feast… for days… Humanity has gotten a bit dull with their dinners, now they only leave cookies out for me, why do you think I’m getting so fat? But well, you must follow the times. I blame Victoria, with her obsession with family and propriety. That has taken out the best parts of the whole thing, at least party-wise. I did like the tree idea, though.

Why do you use chimneys?

The whole chimney thing started because I kept hoping there were still some yule fires around… with some ale, some roast… by the time I gave up the search, I was already used to using the chimney. Some don’t have them, of course, but well, I never say no to a challenge.

With the population growth, how do you get time to go through the list?

Well, things improved a lot the year the elves gave me a computer for midsummer’s eve. That’s our Christmas, as you can imagine, actual Christmas time is our busiest time so we celebrate in the South Pole in summer. Anyway, they set the whole thing up, so now I get automatic behavior analysis reports.

What do you mean by reports?

Well, for a while I was pretty addicted to gaming, from there I got into programming, and then I made the behavioral algorithm, it works well with google to follow people’s behavior online as well. It was eye opening. In any case, it cut my workload in half. Too bad it also gave me more time to spend on the internet… I cannot tell you how many times I ended up in the weird side of 4chan, and in mid-November! All of this new distractions had me using Adderall for five years in a row to manage to get the job done… I had to stop, though, when I found myself rearranging the toy making inventory for the last thousand years in alphabetical order.

Do you think it’s ok to give out coal to naughty kids now, when global warming is such a threat to our survival?

I stopped giving out coal decades ago. Besides, you misinterpret my gift of coal. Winter is cold, you know, it was supposed to be a punishment in its practicality. Like when they give you socks for Christmas… very useful, but so boring… No, now I jam their Wi-Fi. Make it super slow, it drives them crazy. Well, I’d love to chat some more, but the show is tomorrow. Do remember to not bother the elves, they hate reporters, and the internet… with all the body shaming that goes on there, they don´t feel they’d be well received… Anyway, no more interruptions, or no Wi-Fi for you this year. Bye!

Merry Christmas and a happy and successful 2018!


Reducción de ruido en Cycles (Denoiser)

Esta vez vamos a hablar de otra de las grandes y muy bienvenidas adiciones a Cycles en Blender 2.79, el Denoiser!

Denoise o Noise reduction es el proceso de reducción/eliminación de ruido, que permite lograr imágenes completamente limpias en una fracción del tiempo que toma regularmente un render en Cycles.

En términos simples, el denoiser analiza y filtra la imagen un tile a la vez, lo compara con los tiles terminados alrededor y hace un promedio de los pixeles de la zona quitando la información que se determina como ruido, tratando de mantener tanto detalle como sea posible.

Los settings por defecto funcionan bien para la mayoría de los casos, pero vamos a revisarlos uno por uno para entender mejor cómo usarlo y que valores cambiar dependiendo de la escena en particular:


Estos conceptos son sacados directamente del manual oficial

Radius: es el tamaño del área de la imagen que se usa para reducir el ruido de un pixel. Valores más altos logran una imagen más suavizada, pero puede reducir significativamente el detalle y toma más tiempo.

Strength: Es la fuerza, o la intensidad con la que se “limpia” el ruido. De manera más técnica, permite definir qué tan diferente (en términos de color) puede ser el área alrededor del pixel central de la zona que se está limpiando. Valores más bajos mantienen más detalle, pero el resultado final puede dejar algo de ruido.

Feature Strength: controla la eliminación de las partes de la imagen más ruidosas y redundantes antes de hacer el proceso de denoising. Puede ser necesario en algunos casos como motion blur o profundidad de campo (DOF) extremos, para evitar que la imagen se vea “manchada”. Puede causar que detalles pequeños en texturas o geometría sean borrados. Valores más bajos mantienen más detalle, pero el resultado final puede dejar algo de ruido.

Relative Filter: cuando se remueven características que no contienen información relevante para el denoiser, esta opción decide cuáles características se mantienen basada en la cantidad total de información visual. Puede limpiar rápidamente la imagen y evitar artefactos, pero puede causar pérdida de detalle sobre todo en los bordes de los objetos.

Passes: permite que seleccionemos cuáles passes van a ser limpiados de ruido y cuáles no. Muy útil si usamos posteriormente los render passes para componer la imagen final.
Se pueden seleccionar los passes directo e indirecto para: Diffuse, Glossy, Transmission y Subsurface Scattering.

Notas de los desarrolladores (fuente):

El denoiser cambiará en el futuro y algunas de las funciones no han sido implementadas aún. Si el proceso no producce buenos resultados, generalmente la solución está en aumentar el número de samples o usar clamping para reducir las posibilidades de pixeles muy brillantes en la imagen.

  • No se recomienda que el valor en Radius se use muy alto. Además de aumentar el tiempo de render significativamente, el resultado puede ser más suave pero no va a ser más exacto, ya que no hay información extra en la imagen. Si en un valor de 15 todavía no hay buenos resultados, probablemente sea mejor aumentar la cantidad de samples.
  • El denoiser todavía no puede ser usado para quemar texturas (Texture baking).
  • Puede ser usado para animación, sin embargo todavía es necesario usar muchos samples para tener buenos resultados. Con pocos samples es posible que se presente ruido de baja frecuencia (borroso) en la animación, incluso si no es aparente en imágenes estáticas. En un futuro, el denoiser podrá comparar entre frames, lo que facilitará el proceso para animación.
  • Si usas GPU para el render, el proceso puede consumir una gran cantidad de vRAM. Si la tarjeta de video se queda sin memoria pero funciona normal sin el denoiser, trata reduciendo el tamaño de los tiles, o hacer el render con CPU.

Antes de ver un ejemplo práctico, es necesario aclarar que el denoiser por si solo no hace milagros y, como cualquier otra herramienta de Cycles es una que debe ser usada en conjunto con las demás para mejorar los tiempos de render y lograr imágenes más limpias.

En la práctica, si una imagen necesita 2500 samples y aún tiene algo de ruido, puede limpiarse completamente con 1000 o 1500 samples usando el denoiser. No es para nada práctico tratar de hacer un render interior con 10 fuentes de luz usando sólo 100 samples + el denoiser… Ese caso puede sonar exagerado pero es un buen ejemplo, para que la eliminación de ruido funcione bien es necesario que la imagen tenga suficiente información visual, es decir, que se haya renderizado lo suficiente como para que el algoritmo pueda diferenciar entre el ruido y los detalles pequeños en las texturas o en la geometría.


Este es un ejemplo un tanto extremo, para mostrar claramente los resultados y los artefactos que pueden generarse con el denoiser. Es una escena interior, con una sola fuente de luz externa (HDRI), y muchas superficies reflectivas.

Normalmente una escena como esta debería apoyarse en el uso de luces interiores o aperturas en las paredes fuera de cámara para reducir el ruido, pero en este caso, como prueba para el denoiser usamos sólo el HDRI para la iluminación.

Descarga la escena

Render settings:


Denoising: settings por defecto, no se modificó nada.
Sampling: 900.
Clamp direct e indirect: 100, un valor muy alto pero que funciona si se usa Filmic y se quieren evitar pixeles muy brillantes en la escena.
Light Paths: Max bounces 2

Sin denoiser
Con denoiser – Radius: 8
Con denoiser – Radius: 5
Con denoiser – Radius: 10
Con denoiser – Radius: 8 – Relative filter: activado

A primera vista no parece haber mucha diferencia, así que veamos las zonas con más ruido comparadas lado a lado:

Abre la imagen en otra pestaña para ver las diferencias claramente

En esta comparación se hacen más evidentes los problemas que puede causar el uso de denoiser en situaciones complejas o con pocos samples. Muchas veces el ruido se suaviza por partes, lo que genera parches de ruido más grandes y suavizados que parecen manchas.

Para este ejemplo el mejor resultado lo da un radius de 8 y Relative filter activado, pero CUIDADO! esto no quiere decir que se deben usar estos settings como una fórmula mágica todo el tiempo. Para cada escena hay que testear las opciones hasta encontrar la mejor combinación. Además en esta prueba no hice ningún cambio a otros settings como Strenght o Feature Strenght, que también pueden afectar mucho el resultado final.

Y otra prueba debería hacerse usando los render passes en composición…

Como lo mencioné antes, generalmente la mejor opción es aumentar el número de samples; por ejemplo la imagen de abajo usa también un radius de 8 pero en vez de 900 usé 1500 samples. Repito, un render más claro en primer lugar asegura un mejor resultado del denoiser (Al menos por ahora, faltan muchas cosas por implementar).

Con denoiser – Radius: 8 – Relative filter: activado – Samples: 1500

Ahora, aquí está la misma escena pero usando algunas luces interiores; este sería un caso más realista, en el que primero trato de reducir tanto ruido como sea posible y luego, como detalle final uso el denoiser sólo para reducir un poco el tiempo de render.

Con la nueva iluminación volví a 900 samples, y sin embargo en algunas zonas aparece mucho más limpia que la versión de 1500 samples.

Luces de área internas + HDRI – Denoiser radius: 8 – Relative filter: activado – Samples: 900

Ok, espero que este nuevo artículo haya sido de ayuda y sobre todo sea claro acerca del uso del denoiser. Habría que hacer más pruebas, explorar todas las opciones detalladamente y hacer una tabla de relaciones para cada setting que existe, pero por ahora esta introducción debería ser suficiente.

Por favor, no duden en comentar y hacerme saber si cometí algún error o pasé por alto algún pedazo de información importante para este tema, con gusto lo corregiré para que no confundamos otros usuarios 🙂

Pueden descargar el archivo aquí.

Principled shader (o Disney shader) en Blender Cycles

A partir de la versión 2.79 de Blender, próxima a lanzarse, o para quienes usen los daily builds disponibles desde entre las mejoras y adiciones está el nuevo shader llamado Principled BSDF. Este nuevo shader está basado en el modelo de Disney también conocido como “PBR” shader, haciéndolo compatible con otros motores de render que usan el mismo modelo, lo que significa que traducir materiales entre un programa y otro es mucho más fácil.

Este “uber” shader, como se les llama normalmente incluye varias capas que permiten crear una amplia variedad de materiales. La base del shader es una mezcla controlable por el usuario entre diffuse, metal, subsurface scattering y transmisión. Y encima de esta, 3 capas reflectivas: specular, sheen y clearcoat.

A excepción de algunos materiales complejos como plásticos traslúcidos, piel avanzada, vidrios “rápidos” para arquitectura, entre otros, este nuevo shader permite la creación de casi cualquier material imaginable.

Ahora una explicación de sus características principales:


Los inputs subrayados en la imagen superior son los que controlan las características principales del material.

Nota: si bien sólo hay 2 inputs de imagen (o de información RGB) en este shader, es posible conectar imágenes en blanco y negro y en escala de grises en cualquiera de los inputs. Estas imágenes serán interpretadas por blender como información numérica que va de 0 a 1.
0 = Negro
1 = Blanco


Base color: Como su nombre lo indica, es el color del material. Diffuse, color y/o albedo maps van a este input.

Subsurface: Determina la si la luz pasa a través del objeto o no. (Piel, mármol, cera, etc.). El slider va de 0 a 1. Donde 0 equivale a un material difuso, mientras que 1 sería el equivalente a un material como la cera. Nota: la escala del objeto en la escena puede afectar el efecto del Subsurface scattering, es buena práctica trabajar en lo posible con medidas reales.

Metallic: Determina si el objeto es metálico. Igual que con la opción anterior, 0 equivale a difuso (o dielectrico, para ser más exactos) y 1 equivale a metálico. El shader permite que haya puntos intermedios entre 0 y 1, pero si se quiere realismo en el material, esta opción debería pensarse siempre en términos de 0 ó 1 exclusivamente (blanco o negro). Los mapas de “metalness” que se exportan desde programas como substance painter por ejemplo son siempre en blanco y negro, nunca vienen en escala de grises.

Transmission o Transparency: Determina la transparencia del material. 0 equivale a difuso, 1 equivale a transparente (o vidrio).


  1. Specular: Controla la capacidad para reflejar el ambiente que tiene el objeto. Permite hacer una interpretación “artística” de los valores IOR para el reflejo. Por ejemplo, en un material de color base negro, 10 (se pueden ingresar valores por encima de 1) equivale casi a un espejo, mientras que 0 significa que el objeto es 100% difuso.
  2. Sheen: Es un reflejo (difuso) que se genera en los bordes del objeto, muy útil para simular efectos como tela, terciopelo, o pelaje en animales.
  3. ClearCoat: Es un reflejo extra que se agrega encima del specular, común en los materiales de pintura de vehículos. Muy útil para materiales como madera pulida, mármol y cerámica. Como es una capa reflectiva adicional, tiene su propio normal input, para controlar de manera independiente.



Los demás inputs presentes en este shader son complementarios y permiten más control sobre los 7 mencionados hasta ahora:

Subsurface radius: permite controlar la cantidad de luz que pasa a través del objeto en cada canal RGB por separado; para un material como la piel por ejemplo, el efecto es más pronunciado en el canal R (rojo) que en G y B (verde y azul). Texturas y colores pueden conectarse en este input para controlar el efecto.

Subsurface color: es el color base que va a verse cuando la luz pase a través del objeto. Combinado con Subsurface radius permite controlar detalladamente el efecto de traslucidez deseado.

Specular tint: permite “manchar” el reflejo con el color del objeto en los bordes. En términos estrictos el reflejo de un material que no sea metal siempre va a ser blanco, así que este input no es físicamente correcto, sin embargo permite controlar el material desde un punto de vista más artístico.

Roughness: (Rugosidad o dureza) Controla la dureza del reflejo specular, simulando las imperfecciones microscópicas de la superficie. 0 es un reflejo perfecto, como espejo. 1 equivale a un reflejo difuso, como cartón.

Anisotropic: controla la cantidad de reflejo anisotrópico. El ejemplo más claro de este efecto es el metal cepillado. Suele usarse sólo en materiales metálicos (Metallic input=1).

Anisotropic rotation: controla la rotación del reflejo anisotrópico, va de 0 a 1.
0= 0°
1= 360°

Sheen tint: Igual que con el specular tint, este input permite que el reflejo tenga el color del objeto.

Clearcoat gloss: controla la dureza del reflejo clearcoat, y no es afectado por el input Roughness. 0 equivale a un reflejo difuso, 1 equivale a un reflejo perfecto.

IOR: Es el índice de refracción para la transmisión, es decir, tiene un efecto sobre el material sólo cuando el input transmission (transparente) está en 1. Si el IOR se deja en 1, el material será simplemente transparente, pero no habrá refracción de ningún tipo.
Para el agua el IOR es 1.33 aprox, para vidrio regular el IOR es de 1.5 aprox.
Aquí hay un recurso bastante útil para usar el índice de refracción correcto de acuerdo al material:

Normal: controla las normales del objeto.

Clearcoat Normal:  controla las normales del reflejo clearcoat. Si el input clearcoat está en 0 cualquier mapa conectado a clearcoat normal no tendrá ningún efecto sobre el material.

Tangent: controla la tangente para el reflejo anisotrópico.

Esta tabla ayuda a ejemplificar mejor lo que es posible con este nuevo shader:


Vamos a usar el modelo de Matt (Substance designer) para demostrar la forma de usar el shader, conectando todos los mapas exportados desde Substance Painter en sus respectivos inputs (color, metallic, roughness, normal), sin cambiar nada más en el shader:


Mapa de color base
Mapa metal
Mapa de rugosidad (o dureza)
Mapa normal

Comparación entre el render nativo de Substance Painter (IRay) y Blender (Cycles):


Hay diferencias obvias entre ambas imágenes, debido a varios factores como cámara, iluminación, render y efectos de post-producción; sin embargo es claro que el nuevo shader facilita muchísimo la transición de materiales (especialmente PBR) entre Blender y otros programas. No hay necesidad de usar complejos grupos de nodos y materiales personalizados ya que para la gran mayoría de materiales es posible usar sólo este shader. Cabe aclarar, como lo mencioné al principio, que habrá algunos materiales más complejos que necesiten soluciones personalizadas, ya sea para lograr efectos que no necesariamente son realistas, o para reducir tiempos de render en transparencias y/o vidrios por ejemplo.

El paso a seguir, luego de entender las características principales del Principled Shader, será la creación de diferentes tipos de materiales, pero eso será tema para otro artículo en el blog.
Por lo pronto, espero que este artículo sea lo suficientemente claro y sirva de referencia para la creación de materiales PBR simples. 🙂

Edit: olvidé compartir el archivo para quienes quieran ensayarlo directamente, aquí está el link de descarga:

Espero les sirva.


Filmic en Blender y la linearidad de la luz

Este post es una traducción directa del artículo original publicado por Mike Pan en Así que antes de empezar, muchas gracias a Mike por permitirme el uso de las imágenes y los ejemplos.

Gracias también a Troy Sobotka, el creador de filmic-blender, por tomarse el tiempo y el trabajo de explicar y aclarar el tema a través de twitter para entender mejor todo este asunto.

Desde la perspectiva de la física, la luz y el color son inseparables, no es posible tener uno sin el otro. En un pathtracer como Cycles, son básicamente la misma cosa. Así que estos términos se usarán para referirse a lo mismo de aquí en adelante.

Es un artículo bastante largo, así que tómense su tiempo para leerlo con comodidad y entender toda la teoría. Vamos a empezar con la escena clásica de Cornell Box con una fuente de luz:


Notarán que se han tomado varios puntos aleatorios en la imagen y se han incluido sus valores en RGB. Tenemos rojo, gris y blanco puro. Hasta ahora todo bien. Recuerden, esta escena está iluminada con una sola fuente de luz desde arriba. Vamos a ver qué pasa cuando doblamos la intensidad de 10 a 20.


Ok, la imagen en general es más brillante cómo es de esperarse. Pero si volvemos a revisar los puntos seleccionados vamos a ver que si bien la intensidad de la luz fue doblada, los valores en pixeles no son el doble de la imagen anterior…

Veamos las imágenes en comparación:


En esta imagen se ha agregado otra linea bajo la primera. Los valores que dicen “display” se refieren a la información que ya se presentó en las imágenes anteriores. Esos son los valores mapeados directamente desde la imagen JPEG. Los valores que dicen “scene” se refieren a la información real con la que estaba trabajando el motor de render – representan el nivel de energía o potencia de la luz en ese pixel específicamente. Como puede verse en la comparación, aunque los valores de display no se hayan doblado al aumentar la energía de la luz, los valores de scene si fueron duplicados como debería ser. (Algo muy importante para notar en el punto blanco, es que los valores no se ven reducidos a 1 en los valores de “scene”).

Entonces, si los valores de scene representan los valores reales de lo que está pasando en el mundo 3D, porqué la imagen final no nos muestra estos valores…? Y cómo es que el computador hace la transformación de valores de escena (scene) a valores de display?

Esto es lo que conocemos como Gamma. La historia y teoría de Gamma no son realmente importantes por el momento. Todo lo que deben saber es el valor mágico de 2.2. Este es el valor usado para transformar el color (o luz) de la escena en el color del display que vimos antes.

Para comprobarlo, es suficiente con aumentar cualquier valor de escena a  ½.2 y el resultado será el valor de display correspondiente.

Pero porqué es necesaria dicha transformación? Cómo se ve la escena si usamos el color “original” de la escena como lo entrega el render? Es decir, sin ninguna transformación?


No sólo es muy oscuro, es poco interesante y no se ve bien. Principalmente por el contraste tan marcado.

Este es el primer concepto que debe aprenderse y recordarse: Los valores de escena (scene-referred) y los valores de display (display-referred) son dos cosas completamente diferentes. De forma más simple, tenemos que aplicar una transformación gamma al espacio de color de la escena para conseguir una imagen que se vea bien en el espacio de color del display.

Así que ya sabemos cómo la transformación gamma es usada para convertir la información del render en una imagen que se ve bien, ahora el asunto es tratar de que se vea aún mejor. En vez de hacer una transformación gamma tradicional, usemos una tabla de consulta (look-up-table o lut) que está diseñada para darle a la imagen un look más cinemático, en este caso filmic-blender.


La diferencia entre la imagen original (izq) y la versión filmic (der) es bastante sutil. Noten que el punto más saturado (o hotspot) en la pared roja ha desaparecido, y en su lugar aparece un brillo mucho más natural. La marcada línea sobre saturada en la esfera naranja desaparece también, y el reflejo de la luz ya no se ve sobre-expuesto.

Esa es la principal ventaja de la configuración filmic-blender, es capaz de mostrar un rango dinámico mucho más amplio de la imagen, y eso permite que la imagen tenga un look mucho más refinado y natural en las zonas de alta exposición, especialmente en colores saturados.

En resumen: La configuración de Filmic (filmic-blender lut) es una poderosa herramienta que transforma los valores de escena lineales en valores de display no lineales.

Esta transformación no es nada nuevo, quienes hayan trabajado haciendo corrección de color y/o colorización para video (o fotografía) sabrán que existen en internet muchos luts disponibles que hacen transformaciones similares; son como pequeños archivos prediseñados que aplican diferentes looks, dependiendo de lo que se quiera lograr con la imagen. Filmic resulta como una gran noticia, no porque solucione un problema o sea una nueva herramienta, sino porque mejora el flujo de trabajo, y permite que durante el proceso de iluminación se tomen decisiones más acertadas. Básicamente filmic realiza una administración de color más inteligente en Blender.

En general, con los programas de 3D se convirtió en regla común el uso de colores que no sean demasiado saturados o luces que no sean demasiado fuertes para evitar problemas incorregibles en post; y efectos como bloom, glow, saturación y exposición son agregados o corregidos en post-producción. Con Filmic, parte de estas “reglas” pueden ignorarse, para trabajar de una manera más realista, es decir, más cercana a la fotografía.

Pero filmic no hace magia por sí solo. Para sacar los mejores resultados de esta configuración, la escena debe ser iluminada de manera realista desde un principio. Cycles es un motor de render pathtracer, esto significa que para que funcione de manera correcta, los valores de luz deben ser realistas. El mundo real tiene un rango dinámico bastante amplio, algo a lo que no estamos acostumbrados en el mundo de CG.

Siempre que estén iluminando en Cycles, tengan en cuenta que el nivel de energía de una lámpara como el sol se mide en Watts/m2. Todas las otras luces usan Watts (fuente). Esto significa que para un transporte de luz más correcto, una bombilla casera común debería estar en el rango de 60-80, mientras que el sol debería tener un valor de 200-800 para luz de día, dependiendo del horario, latitud, y si está nublado o no.


Sin los valores lumínicos correctos, la escena no va a verse bien, incluso usando filmic. La luz no se propagará lo suficiente, y simplemente va a verse artificial. En la imagen de arriba, el sol tiene un valor de 50, no se usa un valor más alto tal vez por miedo a “estallar” los brillos y sobre-exponer la imagen; pero cuando el sol tiene un valor más realista (500) como se ve en la derecha, la distribución de la luz es mucho más realista y la imagen es más agradable.

Trabajando con filmic, hay que perder el miedo de sobre-exponer la imagen. El mundo real difícilmente puede acomodarse en el rango dinámico de una cámara. Y filmic es especialmente útil en casos con luces muy fuertes, porque es capaz de matizar las áreas con mayor exposición resultando en una imagen mucho más natural y agradable. Comparen ahora el cuarto renderizado con y sin el lut filmic, usando en ambas versiones los valores correctos de la luz:


Pueden verse claramente los brillos molestos y los puntos sobre saturados en la imagen de la izquierda. Esos problemas no aparecen en la imagen de la derecha. Filmic permite ir más lejos en términos de iluminación sin tener que preocuparse por problemas derivados de sobre-exposición en la imagen.

Ok, hasta el momento hemos aprendido que filmic es un lut, y que transforma los valores lineales de la escena en una hermosa imagen no lineal para display. Pero eso no significa que deba usarse siempre con todas las imágenes. A veces es necesario trabajar con imágenes que también sean lineales (es decir, para post-producción y compositing).

Vamos a hablar un poco más sobre la linearidad de la luz.

La luz es aditiva. Eso significa que debería ser posible separar la contribución de cada fuente de luz y luego sumarlas entre sí, para lograr exactamente la misma imagen que se tendría si se renderizaran todas las luces juntas. La habilidad para hacer esto, y hacerlo correcto, es crucial para hacer composición y efectos visuales donde la luz y el color son generalmente ajustados de maneras bastante dramáticas.

Entonces vamos a intentarlo con la escena de la sala. Se ha hecho un render de cada luz en una capa separada y se han guardado como archivos TIFF de 32bit:


Puede verse claramente que no funcionó. La combinación de las luces genera una imagen sobre-expuesta.

Aunque se guardaron las imagenes originales en 32bits para no recortar los valores de color, el formato tiff no guardó los valores de la escena. Cuando la imagen se guardó, pasó por el proceso de transformación a valores de display, así que los valores que estamos viendo no son lineales, como en la escena, son valores de display no lineales. Esto pasa siempre, independiente de que se esté usando filmic o no.

Este es un gran problema porque cualquier manipulación que se haga en la iluminación o en los colores, se está haciendo sobre una imagen que ya convirtió todos los valores de la escena a valores de display no lineales, los cuales no deberían modificarse más, al menos no significativamente. La forma correcta de mantener la información de la escena a la hora de hacer post-producción es exportar la imagen en un formato que también opere con valores de escena lineales como EXR.

Vamos a ensayar el mismo proceso con EXRs. (Como los archivos EXR son lineales, en el ejemplo han sido convertidos con filmic para display)


Ahora todo funciona exactamente como debería! Usando la información lineal para composición y post-producción es realmente la única forma de asegurar que la escena se mantiene físicamente correcta. La transformación final de valores de escena a valores de display debería hacerse únicamente cuando vamos a exportar la versión final de la imagen o animación.

En Blender, todos los formatos de imagen respetan la configuración de administración de color que se use (sRGB o Filmic por ejm). Excepto por EXR, que siempre va a guardar la imagen con los valores que tiene la escena, no con los valores que vemos en pantalla (o de display). Es decir, este es el único formato que guarda la imagen sin aplicar ninguna transformación.

En otros programas, (y con otros motores de render) funciona básicamente igual. EXR es el formato que va a mantener la info que sale de la escena intacta, con el fin de manipular posteriormente sin perder información de color o iluminación. Similar a lo que hacen las cámaras DSLR cuando se configuran para guardar las imágenes en RAW.

Como las luces son aditivas, y se ha renderizado cada luz de la escena como un EXR independiente, es posible jugar con el color y la contribución de cada luz en post-producción, lo que permite generar imágenes y looks muy diferentes sin necesidad de volver a renderizar.


Esta es la flexibilidad de trabajar directamente con la información de la escena, y no con la información de las imágenes que ya han sido transformadas.

Finalmente hemos llegado al final de este post. Se han hecho simplificaciones (teóricas y matemáticas) para hacerlo más digerible, y hay muchos otros asuntos importantes que no se han mencionado. Desde color, no se mencionó para nada el tema de wide gamut (o gama amplia de color) y los diferentes perfiles de color. Desde el punto de vista de creación, todavía hay que hablar de aspectos como oclusión ambiental (AO), clamping, y los diferentes nodos de compositing que funcionan únicamente en imágenes que ya han sido transformadas para display. (La versión corta es: no usarlos!!).

Ojalá haya sido un proceso educativo y entretenido. Quedamos pendientes de la segunda parte. 🙂

Power Rangers – Cardiatron

This fanart/redesign was made for the tribute of the Power Rangers enemies in season 1, started by Edgar Gomez (

I spent about 15 hours total in the making, from modeling to post. Done in Blender, rendered in Cycles, post in Photoshop.