Mental Ray Production Shaders en Maya

Production Shaders es una libreria de shaders incluidos con Mental Ray desde la versión 2.6 de dicho motor de render y por lo tanto disponibles para su uso con  Maya desde la versión 2008 del mismo.  El problema inicial de esta librería es que de serie se encuentra desactivada y no es posible usar estos shaders dentro de Maya. ¿Por qué? Simplemente porque el departamento de calidad de Autodesk no ha considerado hasta la fecha que estos shaders sean adecuados para su uso en producción, por muy paradójico que resulte en una librería llamada Production Shaders, y por lo tanto se encuentran desactivados por defecto. Esto no significa que no sean adecuados para su uso, ya que éste no presenta mayores problemas y de hecho resultan muy útiles para solventar ciertos problemas como el del caso que veremos a lo largo de este tutorial, que es el de integrar de un modo creible un objeto 3D dentro de un entorno real.

Introducción

Cuando queremos crear una escena donde usamos un fondo real  dentro del cual vamos a introducir uno o más objetos creados con Maya (u otro software de modelado), el movimiento más lógico consistirá en crear una combinación de Image Plane (o alguna técnica similar para representar el fondo fotográfico) y el shader Use Background que nos permitirá capturar las sombras de nuestro objeto 3D de modo que podamos crear esa ilusión de integración entre los dos elementos.

El problema es que la técnica anterior presenta varios problemas, algunos de ellos bastante graves, que impiden usar este método bajo ciertas condiciones bastante comunes cuando usamos Mental Ray como motor de render.Sin ir más lejos, el método con el shader Use Background no sirve cuando tenemos activado Final Gather, lo cual incluye a todos los casos en los que pretendamos usar el sistema Physical Sun/Sky de Mental Ray en Maya. Además de eso, no podremos aplicar ninguna corrección gamma a nuestro image plane simplemente porque ese nodo no permite dichos ajustes sin ayuda externa.

Afortunadamente todos los problemas anteriores se pueden solucionar de un plumazo con la ayuda de los Production Shaders de Mental Ray, además de incluir una serie de características muy útiles que dificilmente podriamos obtener usando el método tradicional con Use Background.

Los shaders ocultos

Antes de realizar ninguna operación, es imprescindible activar la libreria de Production Shaders en Maya porque, como decía, vienen desactivados de serie. Para que dichos shaders aparezcan dentro de nuestra librería si usamos una versión de Maya más o menos actual, bastará con ejecutar el siguiente comando en el Script Editor de Maya -o en la línea de comandos MEL del editor principal:

optionVar −intValue "MIP_SHD_EXPOSE" 1;

Lista de Production Shaders

Una vez ejecutado el comando anterior, bastará con reiniciar Maya para que los shaders ocultos sean visibles en nuestro sistema. Ahora podremos encontrar los nuevos nodos disponibles desde Hypershade, Node Editor o cualesquiera el sistema que solamos usar para manejar estos elementos. El prefijo que podremos usar para filtrar los shaders por nombre es “mip_“.

 Ahora que tenemos a nuestra disposición todos estos shaders que anteriormente estaban ocultos, podemos empezar a construir algo que nos sirva para recoger las sombras proyectadas por uno o varios objetos, sus reflejos o Ambient Occlusion. Y dado que estos shaders usan los nodos propios de Mental Ray para almacenar las texturas que necesitaremos, tampoco habrá problema para hacer ajustes en el gamma de nuestras imágenes.

  Ejemplo Práctico

 A modo de ejemplo vamos a crear una escena sencilla donde usaremos una fotografía como fondo e intentaremos integrar un objeto en dicha imagen. Para conseguir un efecto creíble, especialmente si nuestros objetos 3D pueden reflejar otros objetos -incluido su entorno-, necesitariamos esa imagen de fondo que representaría todo lo que ve nuestra cámara desde la posición en la que estamos trabajando y además otra imagen de toda la porción del entorno que la cámara no puede ver, es decir, el espacio situado a espaldas de la cámara, todo lo que está situado por encima de ésta, etc. Lo ideal en ese caso sería disponer de un mapa esférico en el que tengamos registrado todo el entorno de la cámara, aunque se podría suplir con un poco de previsión a la hora de tomar la fotografía que vayamos a usar como fondo y a su vez tomar otras desde esos ángulos que no son visibles desde el tiro de cámara principal. Recordemos que esas otras fotografías las vamos a usar en reflexiones, es decir, a menos que alguno de nuestros objetos sea un espejo, no es necesario que dicho entorno sea perfecto.

Un aburrido callejón.

En este ejemplo vamos a usar un par de fotografías cuyo único mérito real es el de proporcionarnos una perspectiva muy clara del entorno y suficiente espacio vacío para poder introducir nuestros objetos en 3D. El fondo que verá la cámara es el que vemos en la primera de las fotografías mientras que intentaremos simular todo lo que no ve la cámara mediante un mapa esférico de pega que he creado con Photoshop a partir de otra fotografía de un lugar diferente pero con similares características -las dos corresponden a las alegres calles de Detroit-. Eso debería bastar para engañar a casi cualquier ojo.

Lo que la cámara no ve.

Creamos el suelo virtual

Del mismo modo que hariamos con cualquier otra técnica similar, lo primero que tendremos que hacer es crear toda la geometría relevante dentro de nuestra escena a la hora de capturar sombras, reflexiones y demás. Por ejemplo, en el caso de nuestro callejón, sería necesario crear al menos un plano cuya perspectiva con respecto a la cámara de Maya sea similar a la que usó el fotógrafo en la imagen de fondo. Asimismo y si fuésemos a introducir algún objeto que simulase interactuar con las paredes y otro objeto sólido que veamos en la foto, deberíamos crear esa geometría. En este caso vamos a mantener el ejemplo lo más sencillo posible y por lo tanto nos limitaremos a crear un plano que haga las veces de suelo para nuestro entorno.

Render inicial problemático

Solo como guía crearemos un Image Plane en la cámara que vamos a usar como principal y colocaremos ahí la foto del callejón. Una vez hecho eso y con ayuda del Grid, ajustaremos la perspectiva de la cámara para que coincida con la de la fotografía. Luego creamos un plano usando esa misma perspectiva y ya tendremos el primer paso completado. Usando ese plano como referencia del suelo podemos empezar a poblar nuestra escena con los objetos que vamos a introducir en la misma, que en este caso serán un par simples esferas. Como paso adicional y necesario también crearemos un sistema de luces que nos proporcione un ángulo para las mismas que sea similar al de la imagen original. En este caso vamos a usar una simple luz direccional con  Final Gather activado que, como decía en la introducción, supondría un grave problema en caso de usar el antiguo Use Background shader. Viendo el render inicial podemos observar claramente uno de esos problemas y es que el fondo representado por el nodo Image Plane aparece con un Gamma incorrecto que bien podriamos solucionar activando la opción “Color Management” del tab “Common” en los render settings de Maya si el Image Plane nos permitiese cambiar su perfil gamma de sRBG a Linear sRGB, algo que de serie no es posible. En cualquier caso esto no tiene mayor importancia ya que ese Image Plane solo lo vamos a usar como referencia y más tarde lo desactivaremos para usar en su lugar uno de los nodo del paquete Production Shaders.

La madre del cordero

Los cuatro jinetes

 Una vez que tenemos nuestra escena más o menos creada ya podemos centrarnos en la parte verdaderamente importante de este tutorial. Para ello crearemos en Hypershade -o en Node Editor– cuatro nuevos shaders que nos van a servir para integrar nuestra escena con el fondo fotográfico.

Creamos dos texturas

Estos nodos son mip_cameramap (textura para el fondo) , mip_matteshadow (se encarga de recibir sombras, reflejos y demás) , mip_rayswitch_enviroment (combina fondo y entorno) y mip_mirrorball (textura para el entorno). En los shaders mip_cameramap y mip_mirrorball conectaremos sendas texturas que se corresponderán con la imagen para el fondo (en mip_cameramap) y el mapa esférico para el entorno que no percibe directamente la cámara (en mip_mirrorball).

mip_rayswitch_enviroment

Si le echamos un vistazo al shader mip_rayswitch_enviroment, veremos que tiene dos posibles entradas: una para “background” y otra para “Enviroment“. Por lo tanto conectaremos el shader mip_cameramap en la entrada “background” de mip_rayswitch_enviroment -recordemos que era el que contiene la textura con el fondo de nuestra composición- y a su vez conectaremos el shader mip_mirrorball en el slot “Enviroment” de mip_rayswitch_enviroment.

 Este mismo shader mip_rayswitch_enviroment lo conectaremos también a la entrada “Enviroment Shader” que encontraremos en la pestaña “Mental Ray” de la cámara con la que vamos a renderizar la escena.

 Ya como último paso solo nos quedará asignar el shader mip_matteshadow a la geometría que vamos a usar como receptora de sombras, reflexiones y demás -en este caso el plano que hace de suelo- y una vez más usaremos el shader mip_rayswitch_enviroment para conectarlo en la entrada “Background” de mip_matteshadow. Finalmente ajustaremos los parámetros de mip_matteshadow según nuestras necesidades y ya estaremos listos para lanzar un render.

Composición en Maya

 En la imagen del ejemplo he desactivado la opción de proyectar sombras y reflejos en el shader mip_matteshadow ya que resulta más que suficiente el effecto conseguido con la opción para generar Ambient Occlusion de ese mismo shader. En las dos esferas más grandes podemos ver reflejado el entorno, proporcionado por el mapa esférico que hemos creado gracias al nodo mip_mirrorball.

 Obviamente y aunque este ejemplo sirva para mostrar el funcionamiento del paquete de Production Shaders de Mental Ray en Maya, sería conveniente adaptar el sistema para componer la escena en una aplicación externa como After Effects, Fusion o Nuke. Pero a efectos de previsualización sin necesidad de salir de Maya en ningún momento, este método es perfectamente válido.

Referencias:

«How to enable MR production node in Maya 2012». [Online] :: [Accessed: 22-nov-2012].
«CGTalk – new shaders shipped with Maya/Max 2008». [Online] :: [Accessed: 22-nov-2012].
«Gamma corrected image plane (script)». [Online] :: [Accessed: 22-nov-2012].
«Zap’s mental ray tips: Production Shader Examples». [Online] :: [Accessed: 22-nov-2012].
1 comentario
  1. Juan David Reyes
    Juan David Reyes Dice:

    genial, cambio mi vida. (y). he intentado buscar cosas de estas y muy pocas la verdad. MUY BUENO ESTO. GRACIAS

    Responder

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *