Ambient Occlusion
Unas semanas atrás hicimos una pequeña introducción a los diferentes pases de render. Hoy vamos a empezar a verlos particularizados y a profundizar un poco sobre ellos. Empezamos con uno de los más conocidos.
Ambient Occlusion (AO) es un concepto ampliamente nombrado en el mundillo de las imágenes generadas por ordenador (CGI por sus siglas en inglés). La traducción literal sería “oclusión ambiental”, aunque rara vez lo he encontrado nombrado así, inclusive en medios de habla hispana. Sin embargo dicha traducción nos da una aproximación bastante acertada a la definición del mismo.
Ambient Occlusion (AO) es un concepto ampliamente nombrado en el mundillo de las imágenes generadas por ordenador (CGI por sus siglas en inglés). La traducción literal sería “oclusión ambiental”, aunque rara vez lo he encontrado nombrado así, inclusive en medios de habla hispana. Sin embargo dicha traducción nos da una aproximación bastante acertada a la definición del mismo.
Se
trata de un método usado por gran cantidad de software mediante el
cual se acentúa cierto realismo en las imágenes. Es una forma
rápida y ecónomica en cuanto a recursos, de simular una iluminación
global de nuestra escena.
Y
como la mejor forma de entenderlo es verlo, aquí un ejemplo:
Esto
que mostramos aquí es un pase de ambient occlusion de una escena
relativamente compleja. Como vemos se trata de una imagen en escala
de grises, y como vemos, es una imagen en la que se puede entender
perfectamente toda la geometría. ¿Cómo se genera dicha imagen?
Pues básicamente lo que hace el ordenador es estudiar cada uno de
los puntos de nuestra geometría y evaluar como de “escondido”
está dicho punto respecto del cielo. Desde cada uno de esos puntos
se lanzan una cantidad de rayos proporcional a una opción llamada
“samples” (no siempre presente). De cada uno de esos rayos se
evaluará si golpea con otros objetos de nuestra escena antes de
alcanzar el cielo. La cantidad de rayos que se ven interrumpidos
frente a aquellos que logran alcanzar su objetivo, mediante una
relación matemática, terminará dando un valor entre 0 y 1,
correspondiendo el 0 al color negro y el 1 al color blanco.
Para
entender como el ordenador asigna finalmente este valor a cada pixel,
hay que mencionar el modo de color HSV (Hue, Saturation, Value). A la
hora de asignar dicho modo a nuestro mapa de ambient occlusión, Hue
(matíz) y Saturation (Saturación) serán siempre 0, mientras que a
Value se le asignará el valor obtenido mediante el método descrito.
Es
importante mencionar que estos rayos no sólo tienen en cuenta los
objetos contra los que impactan, sino que también tienen en cuenta
si los materiales asignados a dichos objetos tienen transparencia. En
este sentido, si un objeto es un 50% transparente, un punto
cualquiera no estará completamente oculto respecto a dicho objeto,
estará sencillamente semioculto...como siempre, lo mejor para
entenderlo, una imagen:
Lo
que hemos hecho en esta imagen ha sido crear un plano de suelo y otro
de pared, aplicando a este último un gradiente de materiales
aumentando progresivamente la transparencia del mismo. Para entender
mejor como esta transparencia afecta a nuestro mapa de ambient
occlusion hemos ido rebajando poco a poco el valor del mismo, de
modo, que como puede observarse, la oscuridad aumenta siempre mucho
mas desde la esquina con la pared completamente opaca, hasta el
extremo contrario donde tiene un comportamiento igual a aquellos
puntos menos ocluidos del suelo.
Llegados
a este punto ya tenemos una percepción mucho más clara de qué es
un mapa de ambient occlusion, cómo se crea y como se comporta ante
la transparencia de los materiales. Perfecto, pero estamos viendo que
los mapas de AO son siempre una escala de grises, mientras que
nosotros trabajamos generalmente con imágenes a color, así que,
¿cómo lo usamos?.
Lo
más habitual es que nuestro software preferido directamente nos de
opciones para ensamblarlo todo juntito y que nosotros sólo veamos el
resultado final, sin embargo, para poder tener un control mucho más
exhaustivo sobre las imágenes que generamos, es recomendable
aprender a tratar estos mapas por separado, pudiendo controlar muy
fácilmente a posteriori la intensidad con la que aplicamos dicho
mapa, en caso de que no quedar contentos con las opciones elegidas
antes del render. Y aquí es donde entran los famosos “modos de
fusión”, presentes en prácticamente cualquier software de edición
de imágenes y sobre los que hablaremos en detalle en otra ocasión.
El
modo aceptado generalmente para la unión de nuestra imagen con un
pase de AO es el “multiplicar”. Sin embargo en mi experiencia y
según lo que andemos buscado, puede ser interesante probar otros
diferentes.
Es
importante mencionar que lo realmente correcto es multiplicar el AO
por la capa de color del diffuse, no por el diffuse completo ni por
supuesto por la combinación con mapas especulares o de transmisión.
Veamos
un ejemplo de como controlar dicho pase de AO al aplicarlo sobre
nuestra imagen:
Para
explicarlo hemos creado una pequeña escena con algunos objetos.
Hemos usados materiales simples y no hemos usado ningún punto de
luz, sólo algo de luz ambiental. En la imagen más a la izquierda
podemos observar el resultado de dicha escena. Siguiendo el esquema
anterior hemos hecho varias pruebas. Como puede observarse podemos
usar nuestro mapa de ambient occlusion para cambiar completamente la
iluminación de nuestra escena; si previamente a multiplicarlo por la
capa de color diffuse aprovechamos para aumentar o dismunuir el valor
de sus píxeles, podemos aclarar u oscurecer la imagen
respectivamente.
En
esa escena tan sencilla es obvio que comparando cualquiera de las 5
pruebas con AO frente a la primera que no lo tiene, la percepción
del espacio se hace mucho más evidente con el uso de este, dotando a
la escena de un realismo que no tenía.
Por
último os dejamos con un pequeño vídeo en el que podéis ver cómo
el mapa de AO del principio puede usarse para retocar por completo la
iluminación de esa escena.
En siguientes post seguiremos aprendiendo más acerca de otros pases de render. Stay tunned!
0 comentarios: