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.

Leer más

Houdini Ocean Toolkit para Maya

Houdini Ocean Toolkit para Maya es una implementación de Houdini Ocean Toolkit ,desarrollado por Drew Whitehouse basándose en un algoritmo descrito por Jerry Tessendorf  en unas notas para un curso de Siggraph’2004 . Leer más

Workflow para Zbrush, Maya y Finalrender

 Después de hacer varias pruebas para intentar renderizar con Finalrender para Maya unos mapas de desplazamiento/normales, he llegado a la conclusión de que el workflow que sirve para Mental Ray no es del todo bueno para usar con Finalrender. En realidad son muy similares ya que los mapas generados por Zbrush sirven tanto para un motor de render como para el otro, pero hay ciertos detalles que aparecen al volver a Maya que necesitan de ajustes diferentes. Y además los propios de cada motor.

Leer más

El juego de la vida de Conway en 3D con Maya

Originalmente creado por Cory Clarke (el script no se puede ya descargar de la web original) y modificado por Chris Csendes de la Universidad de Columbia, este script MEL te permite crear una simulación del juego de la vida de John Conway, el ejemplo más conocido de autómata celular. Exactamente es un script que usa un algoritmo muy similar al descrito por Conway pero aplicado a una matriz 3D de objetos.

Leer más

Plugin para exportar a formato Directx desde Maya

Además del plugin para Maya 6 y 6.5 (parece que todavía no lo hay para Maya 7), la página de Microsoft cuenta con un tutorial para crear un shader en Maya y exportarlo junto al modelo a formato .X

También lo hay para 3D Studio MAX y Photoshop.

Como nombrar los joints de un esqueleto (Maya) para su reconocimiento automático en Motion Builder

Para que Motion Builder reconozca automaticamente el esqueleto de un modelo exportado desde Maya a través del plugin FBX, es necesario que los joints del esqueleto respeten el nombre por defecto del esqueleto en Motion Builder. Es posible mapear manualmente el esqueleto en Motion Builder para adecuarse a cualquier otra nomenclatura pero si ésta no tiene demasiada importancia, el usar los nombres de Motion Builder ahorra este trabajo. El nombre para los joints Base (requeridos) junto con algunos opcionales es el siguiente:

El mapeado para las manos es el siguiente:

Para ver una imagen ampliada del esqueleto completo, pulsa AQUI y una del esqueleto de la mano AQUI

Tutorial de niebla volumétrica en una luz con Mental Ray

Comenzamos con una escena en la que hemos colocado unas paredes, un suelo y un techo con un shader cement del shader library de Maya. En una de las paredes hemos hecho una ventana y colocado varios barrotes. En el suelo de la escena hay una esfera con un shader blinn con un nodo marble conectado tanto al color como al bump de la misma.Toda la escena está iluminada con una sola Spot Light que de momento no crearemos y que estará situada justo en el exterior de la ventana con barrotes.Esta luz tiene activada la emisión de fotones de Mental Ray y la escena está renderizada con Global Illumination.

Para que el efecto de niebla volumétrica sea visible tenemos que crear un nuevo objeto en nuestra escena al que conectaremos un shader partivolume de Mental Ray.Creamos un cubo que englobe toda la escena, desde la cámara hasta la luz (que todavía no hemos creado).

A este nuevo cubo le asignamos un nuevo shader de tipo lambert y abrimos el attribute editor de este shader. Lo que nos importa de este shader es poder conectarle un shader parti_volume de Mental Ray para así poder ver el efecto de niebla y como contenedor de esta niebla usaremos el nuevo cubo que engloba toda la escena (o la parte de ella que queremos que sea afectada por el efecto). En primer lugar vamos a aumentar la transparencia del lambert al máximo (1) ya que no queremos que el cubo sea visible en la escena, sólo queremos que sirva de contenedor para el parti_volume. Otro motivo más trivial es que así en los viewports si no trabajamos en wireframe, el cubo no resultará molesto para la visibilidad del resto de la escena. Otra opción es activar Supress all Maya Shaders en el Shading Group del material Lambert. El caso es que usando este último método el tiempo de render aumenta aparentemente con el mismo resultado ?�?�.El valor del resto de parámetros del material no tienen importancia.
Ahora nos vamos al Shading Group del Lambert pulsando en el botón de conexiones salientes (2).

En la sección Custom Shaders del Shading Group, conectamos a Volume Shader un shader de tipo parti_volume de la sección Volumetric Materials.

En las opciones del parti_volume, colocamos en scatter el color base que queremos para nuestra niebla, extinction lo dejamos en 0.01 y en este caso ponemos el valor de Min_step_len a 0.5 y Max_Step_Len a 1. Jugando con estos parámetros podremos dar distintos aspectos a nuestra niebla, hacerla menos uniforme aumentando el valor de Nonuniform,etc…

Ahora vamos a la sección Lights del parti_volume y pulsamos el botón para hacer una conexión en lights[0].En la ventana que aparece para seleccionar un tipo de luz, elegimos Spot Light.

Colocamos la luz detras de la ventana, aumentamos el valor del Value de color a 1000,abrimos un poco el cono de la luz (67 para este ejemplo),activamos Raytraced Shadows en la sección Shadows, en Caustics an Global Illumination activamos Emit Photons y ajustamos Photon Intensity a 5000, Exponent a 1.3 y si tenemos activado Global Illumination en Render Globals de Mental Ray entonces ponemos Global Illumination Photons a 100000.En Custom Shaders conectamos a Light Shader un shader de tipo Physical_Light de Mental Ray.

Ahora sólo queda renderizar, activando Global Illumination en Render Globals y ajustando el número de fotones para Global Illumination de la Spot Light tal y como mencionamos antes.

Tutorial para controlar el foco de un Physical Lens DOF de Mental Ray mediante un distance locator

Comenzamos con una escena sencilla con tres esferas, una camara y una luz. Las tres esferas estan situadas a distintas distancias de la camara siendo la roja la mas cercana, la verde a una distancia intermedia y la azul la mas lejana.

A la hora de crear la cámara, vamos a utilizar un distance dimension para fijar el punto donde queremos que este el foco de la cámara. En primer lugar creamos una camara que se situara por defecto en las coordenadas 0,0,0. La creamos y la dejamos donde está.

Ahora creamos un distance dimension (Create -> Measure Tools -> Distance Tool) y colocamos el primer locator en las coordenadas 0,0,0 ayudandonos del Snap to Grid (tecla x) para situar el locator.El segundo locator lo situamos de la misma manera justo delante de la cámara.

Ahora nos vamos al Outliner y hacemos que locator1 y locator2 sean hijos de la cámara. Para ello arrastramos en el Outliner locator1 y locator2 sobre la cámara pulsando el botón del central del ratón. Así creamos una jerarquia en la que la cámara es el padre y los dos locators del distance dimension son sus hijos.

Colocamos la cámara de modo que sea visible la escena con las tres esferas y nos vamos al Attribute Editor de la cámara. En la sección Mental Ray del mismo nos vamos a Lens Shader

y le conectamos un Physical_lens_dof de la seccion Lenses de los shaders de Mental Ray.

El physical_lens_DOF tiene dos parámetros. Uno es Plane, el cual define la distancia al punto de foco desde la cámara. Es la distancia en el eje Z de la cámara al punto de foco y es un valor negativo, es decir, si la distancia desde la cámara al objeto en foco tiene un valor de 10, entonces el valor de Plane seráa -10. El otro parámetro Radius define a grosso modo la cantidad de desenfoque. Para esta prueba vamos a ajustar el valor de Radius a 0.9 para que el efecto sea fácilmente visible. El valor de Plane lo dejamos tal y como está ya que vamos a conectarlo al valor del distance dimension con el fin de controlar el punto de foco con un locator del distance dimension.

Si el valor de Plane fuese un valor positivo entonces no tendriamos más que conectar el atributo Distance de nuestro DistanceDimension al valor Plane del Physical Lens DOF tal y como hariamos usando el Depth of Field de Maya, ya que este si es un valor positivo. En este caso debemos invertir el valor que nos da el DistanceDimension antes de conectarlo al parámetro Plane del Physical Lens DOF. Para ello abrimos el Hypershade, nos vamos al tab Cameras y desde allí arrastramos con el boton central del ratón nuestra camara al Work Area del Hypershade (1) y pulsamos el boton Input and Output Conections (2) para que podamos ver el physical_lens_dof conectado a la cámara.

Nos vamos al Outliner sin cerrar la ventana del hypershade y en el menu Display del Outliner activamos la opcion Shapes .Ahora abrimos el distanceDimension1 en el Outliner y arrastramos el distanceDimensionShape1 con el boton central al Work Area del Hypershade.

Para conectar el valor de Distance del distancedimensionshape al Physical Lens DOF primero tenemos que invertir este valor. Para ello arrastramos desde la seccion general utilities del Hypershade un nodo Multiply Divide al work Area. Con este nodo vamos a invertir el valor distance del Distancedimensionshape. Para ello conectamos la salida del distancedimensionshape a la entrada del multiplydivide y seleccionamos "Other…" para que se abra el Conection Editor

El parámetro de la lista del distancedimension shape Distance es el que queremos conectar a una de las entradas del multiplydivide. Para ello expandimos el Input1 del multiplydivide y conectamos el Distance a Input1 X

Cerramos el Connection Editor y repetimos la operacion pero esta vez conectamos la salida del multiplydivide a la entrada del physical lens DOF abriendo igual que antes el connection editor. Esta vez conectaremos el parámetro Output X (expandiendo "Output" en el multiplydivide) al parametro Plane del physical lens DOF.

cerramos de nuevo el connection editor y ya tenemos todas las conexiones hechas, solo queda modificar algunos parámetros del multiplydivide para que invierta el valor que le da el distance del distancedimensionshapey se lo pase invertido al Plane del physical lens DOF.

Sólo nos queda ajustar que ese valor de distance está invertido usando el multiplydivide. Para ello abrimos el attribute editor del Multiplydivide donde podemos observar en el parametro Input1 la conexion que hicimos anteriormente. Ahora seleccionamos el valor Multiply del parámetro Operation (es el que viene por defecto) y en el parámetro Input2 cambiamos el valor por defecto que es 1 por -1. Con esto hacemos que la entrada Input1 se multiplique por -1 y en la salida Output1 que tenemos conectada al Physical Lens DOF tengamos el valor Input1 (Distance) * Input2 (-1) = -Input1 (-Distance).

Cerramos el attribute editor y el hypershade y ahora solo nos resta definir el punto de foco. Para ello situamos el locator2, que emparentamos anteriormente a la cámara, en ese punto.Por ejemplo, en la esfera intermedia (verde).

Como el locator1 se queda en el punto en el que esta situada la camara y situamos el locator2 en el objeto en foco, esto nos mide la distancia desde la camara al objeto en foco. Al estar esta distancia conectada al nodo multiplydivide que se encarga de invertir el valor y pasarselo al Plane del physical lens DOF.Ya tenemos un método rápido y eficaz de situar el punto de foco en un objeto usando un locator.

Este tutorial está basado en un tutorial de Andrew Camenisch escrito para el Depth of Field de Maya. En ESTE link tienes un script MEL que he hecho para crear una cámara con el Lens Shader controlado por un distance Dimension. En el Readme_Spanish.txt adjunto están las instrucciones para usarlo.

Turtle para Maya

Después de un exhaustivo beta-testing que ha durado más de un año, la gente de Illuminate Labs ha anunciado que en breve se pondrá a la venta este motor de render para Maya .Turtle es un motor de render super rápido con una excelente integración con el interface de Maya. Según Illuminate Labs, Turtle es un motor de render que lleva lo mejor de cada aspecto de un motor de render. Tiene la mejor integración con Maya, las mejores velocidades de raytracing, puede manejar escenas más grandes que otros motores y lleva incluidas las últimas tecnologias de render como Global Illumination, Final Gather y Ambient Oclusion.

[Escuchando: Giratuto – Macaco – Entre Raices Y Antenas (4:11)]