jueves, 19 de julio de 2018

Transfer Shader Tool

Hey ha pasado bastante tiempo desde que no publicaba ninguna tool nueva, he estado algo ocupado con el trabajo. Pero ha sido para bien, ya que he pulido varios conocimiento que tengo y me ha dado tiempo para crear tool nuevas usadas en una pequeña producción. Un problema que generalmente sucede es a la hora de querer transferir shaders de un modelo a un rig, un cache o otro modelo, obviamente de la misma topologia. Decidí crear una herramienta un tanto sencilla de usar le he usado mucho, sin embargo contiene algunos errores. Sé que aún se puede pulir bastante.
Es bastante fácil de usar y los botones están ordenados de forma consecutiva.



  • Primero debemos tener el modelo con shader final para poder pasárselo al otro modelo. Donde dice "Node Type" tendremos que poner el nombre del nodo de shader que deseamos obtener. Ejemplo: aiStandardSurface, redShiftMaterial, miaMaterialX, VRayMtl, etc. Podemos unir mas de dos tipos de shader separándolos con comas. De la siguiente manera "aiStandardSurface, redShiftMaterial", sin comillas.

  • Una vez hecho esto presionamos el botón "Get Faces", y luego "Export Shader". Esto escribirá un par de archivos (json. y ma.) en temporales.
  • Luego abriremos el otro archivo que deseamos transferir los shaders. Seleccionamos los meshes y presionamos "lambert1/Unused". Esto aplicará el lambert1 a los meshes y borrará los shader que tenga.
  • Importaremos los shader que habíamos exportado antes, presionado el botón "Import Shaders"
  • Finalmente presionamos "Assing Shader", nuestro modelo debería estar con su shader correcto. La herramienta obviara los meshes que no exista en el modelo target
Nota: Por alguna razón cuando en "Node Type" lo dejamos en "lambert", obtendrá todos los materiales por defecto de Maya (lambert ,blinn, anisotropic, phong, phongE)

DOWNLOAD

lunes, 2 de julio de 2018

Transfer Vertex Order

Hola, luego de destruir varios rigs para tratar de salvar blendshapes, descubrí lo útil que puede ser la herramienta llamada "Transfer Vertex Order" para re ordenar vértices. Investigando un poco mas a fondo, es una herramienta que la pusieron en Maya 2017, pero en la versión de este año la mejoraron bastante. Es algo difícil de usar y en ciertos casos puede causar que Maya se cierre inesperadamente.
Funciona de la siguiente manera.

  • Primero hay que verificar que ambas meshes tengan la misma cantidad de vértices y edges, ademas debemos ver que tengan exactamente la misma topologia.
  • Asegúrense de haber guardado su archivo, ya que la herramienta es un tanto inestable. 
  • Seleccionamos ambos meshes y nos vamos a modo componente


  • Ahora nos vamos al menú "Mesh"--> "Transfer Vertex Order.
  • Vamos a seleccionar 3 vértices consecutivos o que formen un triangulo dentro del source mesh, luego vamos a seleccionar otros 3 vertices del mesh target que estén en la misma posición que los vértices del source mesh.
  • Debería aparecerles el siguiente mensaje

La herramienta como dije antes es un tanto inestable, pero es bastante útil a la hora de rescatar blendshapes de la misma geometría modificada.

martes, 26 de diciembre de 2017

Stretchable Spine - Spline IK with DQ

Hola, de nuevo al blog. En esta ocasión les mostrare la manera como yo seteo la columna del un personaje. Como todos sabrán al momento de setear la columna, lo mas común en usar el es Spline IK Handle. Esta técnica es bastante buena y los animadores parecen estar acostumbrados a ella. Sin embargo cuando nosotros queremos hacer la columna estirable, tenemos que tomar dos decisiones o trabajar con la translación del joint o con las escala. He visto que generalmente se trabaja con la escala ya que el calculo es una simple división.


En tanto con la translación habría que hacer un calculo mayor y un poco mas complejo. En el caso de la escala funciona bastante bien, aunque he escuchado que algunos dicen: Los joints no se deben escalar. Creo que lo decían por esta razón.

Como veremos el corte inferior esta moviéndose hacia abajo cuando en realidad debería moverse hacia arriba. Ahora esto puede ser un tema de skinning, sin embargo en skin no tendría que tener ningún tipo de influencia por debajo del joint. Cosa que casi imposible de hacer.


Para solucionar este problema lo que deberíamos hacer es usar la escala solo como conductor de la translación, mas no en la escala del eje principal (generalmente es el X). Para poder realizar esto tendríamos que emparentar a cada joint de la cadena IK Spline otro joint .Tenemos dos opciones:

  • Usar el parent Constrain.
  • Emparentar directamente en el joint, únicamente funcionaria si emparentamos joint con joint. 
Esto solo funciona gracias a que al momento de emparentar joint con joint esto se conectan automáticamente la escala de uno con la escala inversa del otro.
Spine_3_BON.scale --> Spine_3_JNT.inverseScale

De esta forma sólo nuestros huesos únicamente se trasladan.

domingo, 5 de noviembre de 2017

Cell Shader Tool

Como todos sabrán el shader alCell no es compatible con el Arnold 5. Después de investigar un poco más del tema, encontré un forma de hacerlo de una manera sencilla. Ahora les mostrare mi nueva tool para crear el Cell Shader.


Es bastante sencillo de usar aquí les muestro un video de su modo de uso.

Cell Shader Tool - Arnold 5 - Maya from Steffano Richi on Vimeo.

Lo puedes descargar de aquí

DOWNLOAD


miércoles, 1 de noviembre de 2017

Reset SkinCluster

Hey, después de averiguar si existía alguna forma de resetear de alguna manera el skinCluster. Encontré el script de macaroniKazoo que permitía hacerlo. Sin embargo en algunas versiones de maya no funcionaba. Bueno lo edite y ahora funciona correctamente, ademas detecta automáticamente que skinCluster esta unido a la geometría.



CODE

Installation 1:
* Just drag and drop into script editor and run it.

Installation 2:
*copy the script Documents\maya\scripts.
* Run in python the next code

import resetSkinCluster as rSkin
reload(rSkin)
UPDATE: Ahora funciona para la versión 2016-2015

jueves, 12 de octubre de 2017

Emitter Rivet without Set

Hola, bueno hoy hablare de rigging. Como sabrán hay varias maneras de hacer un rivet. Para esta ocasión voy a hacerlo con un emisor de partículas (emitter).  Este método funciona bastante bien para rivet que requieran pegarse a un vértice. Sin embargo hay un problema que es mas estético que técnico. Los Set. En caso que vayamos a crear unos pocos emisores no hay problema, pero si vamos a crear más 10 o 20 vamos a tener un problema en el outliner. Entonces veremos como pasar de un outliner con set a sin sets.




Para crear un emisor, simplemente hay que seleccionar un vértice de algun poligono e ir al Menu Set de FX( en el caso de Maya 2015 es Ndynamics) y darle al botón "Emit form Object". Podemos borrar del outliner " nucleus" y "nParticle", pero no emitter1set.




Nos vamos ahora al Node Editor, allí vamos a ver sus input y outputs del emitter1Set. 


Bien ahora necesitamos ver nodos auxiliares, para esto vamos al menu show --> Show Auxiliary Nodes


Vamos a volver a mostrar los input y outputs del emitter1Set. Ahora veran que hay un nuevo nodo"groupId1"


Lo único que resta hacer es desconectar la linea azul que entre emitter1Set y groupId1. Quedando así



Ahora con toda seguridad podemos borrar el emitter1Set y nuestro rivet funcionará sin el Set.



PD: Acordarse que este tipo rivet se hace al ultimo, después del skin o predeformaciones.


sábado, 30 de septiembre de 2017

Suavizado del UV

Hola nuevamente, en estos días estuve terminando de pintar un personaje que mostré la última vez. En un primer momento todo estaba conforme, hasta que me encontré con un pequeño pero molesto problema.

El suavizado del UV. Esto por lo general es mas común que ocurra en modelos low poly, sin embargo también suele ocurrir en modelos mid poly sobretodo en las zonas donde de acumulan edge loops. Al momento de suavizarse los polígonos internamente también se suaviza el UV y esto hace que ciertas zonas se sobre pongan Esto parece ser pequeño, pero puede ocasionar varios problemas a la hora de pintar sobre el UV y mas aún si se desea extraer normals maps, displacement, vector displacement, entre otros.




Non Smooth                                         Smooth 




Posibles soluciones:


  • Mover parte del uv para que no se sobreponga.
  • Tratar de hacer el corte del UV en otra parte, tratando de que no se sobreponga.
  • Limitar cantidad de subdivisión que se va a realizar, de la siguiente manera:

Al activar la opción de smooth all que esta en el nodo de "shape". Se van a suavizar todos los bordes del uv, evitando asi que se sobrepongan unos con otros.




Luego de esto nos vamos a menu "Modify"->Convert ->Smooth Mesh Preview to Polygons y asi lo enviamos a nuestro software de pintado.



Este método parece bastante fácil, sin embargo si nosotros queremos suavizar una vez mas nuestro modelado ya sea en render o en viewport, ya no va a calzar nuestra textura ya que los bordes no van a coincidir.