Definición.- Ambient Occlusión u oclusión ambiental conocida como AO, es un método de sombreado o shading 3D que se utiliza en gráficos por ordenador que ayuda a añadir realismo a la reflexión de los modelos teniendo en cuenta la atenuación de la luz, debido a la oclusión.
Oclusión: se puede definir a la acción y resultado de cerrar u obstruir algo.
A diferencia de los métodos tradicionales como el sombreado Phong, la oclusión ambiental es un método global, en el sentido de que la iluminación en cada punto de contacto opera en función de las demás geometrías en la escena que determina las áreas claras de las oscuras basado en la proximidad de las superficies creando en ellas zonas más oscuras o de oclusión donde la luz no llega, sin llegar a generar sombras.
Los motores ya suelen incorporarlo de base, Mental Ray lo trae como mapa Ambient/Reflective Occlusión. En Vray que es del que vamos a tratar este articulo lo trae como VrayDirt o mapa de suciedad pues este método de sombreado tiene la particularidad de poder ofrecernos dos tipos diferentes de uso, para dar realismo acentuando los detalles de nuestra escena y como mapa de suciedad.
El primero lo encontramos como oclusión de ambiente junto a los parámetros de iluminación indirecta, este afectara 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. Este como todos los parametros que añadamos a nuestro render consumira algo más de memoria pero nos dara ese toque que necesitamos.
El segundo lo podemos usar como apoyo para conseguir matizar detalles, como la propia oclusión o suciedad trasladandolo a un elemento de render que usaremos en Adobe Photoshop como una capa superpuesta.
Este lo realizaremos colocando un material VrayLightMtl que contenga un mapa Vraydirt en su slot de color con los valores adecuados al tipo de mapa que vayamos a sacar.
Este material lo trasladamos instanciado al slot de material override del rollout Global switches en la pestaña Vray de Render. Con este paso conseguimos un render de la escena con este material aplicado de manera global. Este paso no afectara a los materiales que tengamos aplicados en la escena, una vez desactivemos esta casilla la escena volvera a su estado original.
En los parametros de VrayDirt añadiremos los valores que vayamos a necesitar segun el tipo de capa.
Por ejemplo:
- Si es como apoyo de oclusión, usaremos valores suaves con más subdivisiones para acentuar el efecto.
- Si es como suciedad, usaremos menos subdivisiones creando ruido en la imagen, incluso aplicando un bitmap como mapa de suciedad en la ranura de radio para difuminar esta por el espacio de la imagen.
Una vez rendeada la oclusión como una capa aparte nos vamos a Photoshop y montamos los 2 renders usando un modo de fusión Multiplicar (por ejemplo, dependiendo del efecto que se busque)
Para la suciedad seria 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.
Baking texture
Otra metodo seria el bakeo de imagenes rendeando a textura. Este sistema se suele usar para texturar objetos independientemente del render final usando un mapeado Unwrap UVW; explicar este no es el motivo de este articulo por lo que daremos por sentado que ya se sabe usar o habria que ayudarse de algun tutorial de los muchos que hay por internet.
Sacar el bakeo es muy sencillo. Aplicamos al objeto en cuestión el shader que configuramos anteriormente como ambient occlusion. Ojo, aqui digo aplicamos al objeto, no hay que ponerlo en la ranura override como anteriormente explique, es un render normal. Y pulsamos la tecla 0 (cero). Esto nos abrira la ventana de "Render to texture". En ella configuramos los siguientes parametros.
- Output path: Directorio donde se guardaran los renders.
- Si hemos seleccionado el objeto antes de pulsar 0 ya nos saldra en la lista de objetos este.
- Activamos la casilla "Use Existing Channel". Con esto usaremos el mapeado Unwrap que hemos creado para nuestro objeto.
- Pulsamos el botón Add, añadiendo el tipo de elemento que vamos a sacar, en este caso como ya esta aplicado el material seria un elemento "DiffuseMap"
- Escribimos un nombre para la capa. Por defecto pondra DifusseMap
- Asignamos el tipo de extensión al archivo
- Escogemos el formato de salida de la imagen. (256x256, 512x512, etc)
- Y pulsamos render
Hay que tener en cuenta que cuando seleccionemos el objeto, este no esté aislado de los objetos que tenga a su alrededor para conseguir marcar las zonas de influencia de los objetos colindantes.
Render Elements
Para las versiones 1.5 en adelante Vray cuenta con un nuevo pase en elementos de render llamado
VrayExtraText, este posibilita representar toda la escena con una sola textura mapeando todos los objetos, asi que para conseguir un pase de oclusión solo tenemos que añadir al slot correspondiente un VrayDirt.
Con esto creo que esta todo, espero que os sirva de ayuda.
Enhorabuena por el blog
Me han servido de mucha ayuda estos tutoriales. El de configurar el 3ds max, me ha venido de lujo, y ahora mirare este de ambient occlusion.
Tienes pensado poner alguno mas? yo ando liado con los proxys, a la hora de poner mogollon de arboles en una escena, asi que ahi lo dejo como sugerencia ;)
un saludo