Ambient Occlusion ó Oclusión Ambiental es el método de sombreado que se utiliza en animación 3D para crear un efecto de iluminación global. El objetivo es conseguir definir caras con luz y caras con sombras de manera muy difuminada.

Es una técnica muy útil cuando no queremos gastar demasiado tiempo calculando una buena iluminación global o incluso para "sumarle" ésta última.

Como ejemplo, en la imagen Diffuse de la derecha, podemos observar cómo los detalles "finos" del modelado se pierden entre el color y la luz mientras que en la imagen Ao + Diffuse, de más abajo, los vemos perfectamente sombreados. En definitiva, nos ofrece una mejor percepción de nuestros objetos 3d.

A diferencia de los métodos tradicionales como el sombreado Phong, la oclusión ambiental es un método "global", la iluminación en cada punto de contacto opera en función de las demás geometrías de la escena.
Se distinguen las áreas claras de las oscuras basándose en la proximidad de las superficies entre sí creando zonas más oscuras o de oclusión donde las superficies de las geometrías interactúan.

Los motores de render suelen incorporar la oclusión ambiental como opción dentro la configuración de iluminación indirecta, como mapa dentro de un material para la oclusión específica de algunos objetos dentro de la escena o de toda la escena y como último para crear un pase de render independiente para su posterior composición en cualquier programa de postproducción.

Finalizada la introducción, sabemos qué es y para qué nos sirve el Ambient Occlusion. Pasemos a ver configuraciones de las diferentes opciones dentro de Vray.

Como crear Ambient Occlusion con Vray-proceso01.jpg

Configuraciones en Vray

Como opción, dentro de la iluminación indirecta, lo encontramos dentro de la pestaña VRay - Indirect Ilumination (GI) . Éste método afectará de un modo global a toda la imagen por igual, por lo que podemos usarlo para aplicar el efecto de un modo sutil para realzar los detalles de toda nuestra escena. Éste, como todos los parámetros que añadamos a nuestro render, consumirá algo más de memoria y tiempo pero nos dará ese toque que necesitamos.
Lo más interesante de este método es la sencillez y rapidez de configuración. Lo menos interesante es no poder retocarlo una vez creado ya que se incluye en el proceso de render.

Como crear Ambient Occlusion con Vray-ao01.jpg

Como mapa dentro un material, podremos asignarlo a objetos específicos o a toda la escena, según nuestras necesidades. Para ello utilizaremos el mapa VrayDirt, del cual hablaremos más adelante, dentro del canal de Diffuse en nuestro Editor de Materiales . Al pertenecer a un solo material, será muy útil para ocluir algunos objetos de nuestro proyecto dejando fuera de la oclusión los que no necesitemos por cualquier razón. Un ejemplo claro sería la oclusión que en la imagen "AO" se realiza sobre los cristales de las ventanas. Los objetos con algún tipo de refracción (agua, cristal, etc) no "deberían" ocluirse sobre si mismos y en la imagen "AO" los encontramos ocluidos. Al gusto.

Como crear Ambient Occlusion con Vray-vraydirt.jpg

Como Pase de Render, necesitamos generar un mapa de oclusión ó suciedad, independiente a nuestro render. Tendremos que elegir entre dos alternativas. En la Primera crearemos un material nuevo VrayLightMtl y le asignaremos, en el canal de color, el mapa VrayDirt.

Como crear Ambient Occlusion con Vray-vraydirt02.jpg Como crear Ambient Occlusion con Vray-vraylightmtl.jpg

Una vez terminado de crear el material VrayLightMt con el mapa VrayDirt en su interior, tendremos que trasladarlo al slot "Override Mtl" pestaña V-Ray:: Global switches.

Como crear Ambient Occlusion con Vray-ao3.jpg

Con estos pasos conseguimos un render de la escena con el material aplicado de manera global. Esta acción no afectará a los materiales que tengamos aplicados en la escena. Una vez desactivemos esta casilla, la escena volverá a su estado original.

Como crear Ambient Occlusion con Vray-ao02.jpg

En los parametros de VrayDirt configuraremos los valores que vayamos a necesitar según el tipo de mapa deseado.

Por ejemplo:

Si es como mapa de oclusión, usaremos valores suaves con más subdivisiones para acentuar el efecto. Como en la imagen anterior.
Si es como mapa de suciedad, usaremos menos subdivisiones creando ruido en la imagen, incluso aplicaremos un Bitmap, como "máscara", en slot de radius para acentuar la “suciedad” sobre los objetos. Como en la siguiente imagen.

Como crear Ambient Occlusion con Vray-ao04.jpg

En la Segunda, utilizaremos un elemento llamado VrayExtraText. Este elemento nos da la posibilidad de poder asignarle a toda la escena un mapa. Por lo que podéis suponer, le asignaremos un mapa VrayDirt. Y voilà!. En un mismo proceso conseguiremos nuestra imagen final y el elemento VrayExtraText. Si queréis saber más sobre los elementos que se pueden elegir podéis entrar el Tutorial de Render Elements.



Una vez escogido el método de oclusión y terminado el proceso de render, nos vamos a componer la imagen final y el elemento a Photoshop. La técnica de composición es básica. Tendremos un proyecto en Photoshop compuesto por dos capas, en la inferior la imagen final y en la superior el elemento. A la capa elemento le cambiaremos el modo de fusión de normal a multiplicar. Con esto ya podemos ver el efecto de la oclusión en la imagen final. A partir de ahí es un poco ajustarlo al gusto, variar la opacidad, el contraste, los niveles, etc. Veamos ejemplo de la composición del elemento como ambient occlusion y como mapa de suciedad.

Como crear Ambient Occlusion con Vray-ao05.jpg Como crear Ambient Occlusion con Vray-ao6.jpg

VRayDirt

El mapa VRayDirt como hemos comentado anteriormente es un mapa de textura que se puede utilizar para simular una variedad de efectos, por ejemplo, la suciedad que hay alrededor de las grietas de un objeto, o para producir un pase de oclusión ambiental.

Su uso es relativamente sencillo pues para aplicarlo de una forma básica no precisa más que el ajuste de su radio de expansión.

Veamos algunas cosas más que podemos hacer con este mapa.

Occluded color: Por defecto podemos encontrar el color ocluido en negro, es el color de la suciedad que se representa que podemos cambiar a nuestro gusto.

Unoccluded color: El siguiente es el color del área no ocluida. Este efecto funciona como una máscara o imagen alpha, hay dos zonas, negra y blanca, una afecta y la otra no.

*Distribution:Este parámetro controla la difusión de la suciedad en el área ocluida. Por defecto es 1 que es el valor correcto para un degradado suave.

*Fallof: Este parámetro controla la transición entre los dos colores.

Subdivs: En esta casilla podemos ajustar la cantidad de subdivisiones con que se representara la suciedad. A mayor cantidad más suave será la difusión y más se parecerá a un mapa oclusión de ambiente. A menor cantidad más ruido tendrá la imagen y más se parecerá a un mapa de suciedad.

Bias (X,Y,Z): En este ajuste podremos forzar el desplazamiento de la suciedad por las normales del objeto.

Ignore GI: Esta casilla determina si el efecto de suciedad tendrá en cuenta el cálculo de la iluminación global (GI) o no.

Considersameobjectonly: Cuando esta casilla este marcada la suciedad solo afectará a los objetos a los que este aplicada sin incluir bordes o superficies de contacto.

Invert normal: Con esta opción invertiremos el efecto respecto a las normales.

Workwithtransparency: Esta casilla es importante el tener en cuenta. Con ella controlaremos la forma en que afecta la suciedad sobre objetos transparentes.

Un ejemplo práctico podremos encontrarlo en las ventanas de un edificio, si aplicamos un VRayDirt a una ventana, esta se manchará por completo, con esta casilla activada la suciedad solo afectará a los marcos de la ventana dejando limpios los cristales. Otro ejemplo puede ser un árbol, la oclusión afectará al tronco pero no a las hojas.

*Environmentocclusion: Cuando esta opción está activada VRay utiliza el entorno en el cálculo de la oclusión de las áreas que no están ocluidas por otros objetos.

Mode: Aquí podremos especificar el modo en que el mapa de suciedad se va a calcular.

Ambientocclusion: se calculará una oclusión ambiental normal.
Reflectionocclusion (phong, Blinn, Ward) se calculará una oclusión reflectiva.
La diferencia entre ambas es básicamente la dirección en que los rayos son trazados. Con la oclusión ambiental seleccionada los rayos son trazados en todas las direcciones de un modo uniforme, con la oclusión reflectiva el trazado dependerá de la vista y la propagación dependerá de los parámetros de Reflectionglossines y BRDF usados en el material.

Reflectionglossines: (Brillo de la reflexión) - este parámetro controla la propagación de los rayos del trazado para la oclusión de reflexión. Un valor de 1 significa que sólo se ha trazado un rayo.

Affectreflectionelements: Cuando esta casilla está marcada la reflexión ambiental solo afectará a los objetos que tengan reflexión. Esta opción es útil para crear máscaras de reflexión.

Radius, occluded color, unoccluded color, reflectionglossines: Estas casillas nos son familiares pues al igual que en los materiales del editor podremos usar mapas para controlar el grado que afecte de la suciedad.

Por ejemplo si aplicamos una máscara en la casilla occluded color la suciedad se dispersará solamente por las áreas oscuras que definan la máscara.

Exclude: Aquí podremos seleccionar los objetos que queramos excluir de la oclusión. Los objetos excluidos tomarán el color usado como no-ocluido.

ResultAffect: Aquí podremos seleccionar los objetos que afectarán al cálculo del mapa VRayDirt. Los objetos excluidos serán considerados “invisibles” para los cálculos del mapa VRayDirt.

Una vez renderizada la oclusión como una capa aparte nos vamos a Photoshop y montamos los dos render usando un modo de fusión Multiplicar en Adobe Photoshop (por ejemplo, dependiendo del efecto que se busque)

Para la suciedad sería algo de este modo.

En el siguiente caso hemos mezclado los 2 tipos de render, uno como capa de oclusión para realzar la imagen y otra como suciedad coloreando esta en Photoshop con una tonalidad marrón para conseguir el efecto mostrado.