lunes, 15 de febrero de 2010

Corrección de Gamma


Sabiendo un poco del tema "Corrección de Gamma" decidí hacer algunos renders de prueba.
Una definición muy rápida de qué es la "Corrección de Gamma" puede ser la siguiente:
"Es el ajuste de medios tonos para que las imágenes generadas digitalmente logren la apariencia más cercana a la manera que el ojo percibe la realidad".
Pensemos que mayormente usamos imágenes de 8 bits por canal, en el caso de una imagen con alpha la suma de todo los canales nos daría 32 bits ya que son 8 bits para R, 8 para G, 8 para B y 8 para el canal Alpha. Teniendo así 256 colores en cada canal y por lo tanto un total de 4294967296 colores.

El calculo que se hace es el siguiente:


El 2 es por basarse en un sistema binario.

En la realidad podemos encontrar muchísimos más color o medios tonos pero no somos capaces de percibirlos linealmente ( presentados todos juntos). Con la computadora pasa lo mismo, si tenemos una imagen de 8 bits vamos a tener 256 valores de grises. La computadora puede generar más pero no los puede almacenar en un archivo de 8 bits.
Lo que nos ayuda la "Corrección de Gamma" es a definir la curva de interpolación entre los medios tonos. Esta puede ser lineal o no, es como manejar las curavas (o levels) en photoshop.
La siguiente imagen muestra la escala de grises del editor de colores del 3ds Max, en un caso usando Gamma 1.0 (por defecto) y en el segundo caso usando gamma 2.2

Se observa que la gamma 2.2 tiene más valores luminosos que la 1.0


El objetivo del post no es explicar en profundidad qué es la corrección de gamma, sino mostrar unos ejemplos y demostrar su utilidad.
Para más información sobre "Color Depth" (imágenes de 8bits, 16 bits....) y "Corrección de Gamma" recomiendo el libro "VRay. The Complete Guide" es una excelente guía sobre gráficos por computadora.


¿Entonces cómo configuramos el 3ds Max para aplicar corrección de gamma?

1_ Click en el menú "Rendering"
2_Click en "Gamma/LUT Setup"
3_ En el cuadrante "Display" activar haciendo click en el circulito gris "Gamma" y poner el valor en este caso 2.2
4_ Es muy importante activar las opciones de "Materiales and Colors" ya que sino se verán algunos colores de una manera diferente en el material editor de como se obtienen en el render.
5_ Click en Ok para finalizar

Pd: en algunas versiones de Max es necesario reiniciar el programa para que funcione la corrección de Gamma, en la versión 2010 no es necesario.

Entonces, he aquí las pruebas:

Ejemplo 1: Solamente luz directa en la escena


Gama 1.0


Gama 2.2


Ejemplo 2: Global Ilumination

Gama 1.0

Gama 2.2


Ejemplo 3: Final Gathering

Gama 1.0

Gama 2.2

Ejempo 4: Global Ilumination + Final Gather

Gama 1.0

Gama 2.2



Otros ejemplos:





Imagen 1.0 (desde render)

Intento de corrección de Gamma en PS (con una imagen de 8 bits)

Imagen 2.2 (desde render)

Conclusiones:


- La utilización de la "corrección de Gamma" es un parámetro importante a tener en cuenta a la hora de hacer renders.

Esta corrección puede ser posterior al render pero únicamente usando imágenes de 32 bits por canal (hdrs). Por ejemplo en imágenes de 8 bits la información necesaria para el tratamiento posterior no es almacenada.

- Sea posterior o anterior al render, es una herramienta que puede definir la calidad de los renders.

-Nos brinda imágenes más reales y evita los sombreados a negro, ya que por defecto en los softwares 3d el sombreado de los objetos (SHADING) suele ser negro.
Una técnica para emular este efecto es subir el ambient light, muchos juegos lo utilizan para dar el efecto de GI.

-Nos evita poner valores altos en los parámetros de las luces y los rebotes de GI.

-Este proceso se conoce en 3d como TONE MAPPING, COLOR MAPING ó EXPOSURE CONTROL, exactamente no son lo mismo pero apuntan al mismo concepto de manejo de grises y tonos.


Bueno eso fue todo y espero que haya sido útil.
Espero comentarios.
Salud Mortales!
Bondi.





5 comentarios:

WEREW0LF dijo...

Groso tutorial bondi!, no sabía que estabas redactando estas cosas. Cuando laburo, felicitaciones.

German Merlo dijo...

muy buen blog, estan muy buenas las cosas que haces en 3d. saludos

Bondi dijo...

Muchas gracias chicos! mi idea es poder aportar con lo que pueda ya que es la mejor forma de aprender y ayudar a la comunidad.
Y disfrutar de lo que hago, creo que es vital.

Salutes!

Fergu dijo...

Bueena Bondi!! esta muy bien esto!


Gracias sensei Bondi

Bondi dijo...

Gracias Fer, pronto se vendrán los tutos de render en Maya (grrr).