En la documentación de Maya 2018, si accedemos a la sección de novedades de esta versión, en la sección general podemos encontrar un apartado llamado Dash Scripting.

Se ha añadido al Channel Box una nueva forma de escribir scripts de personalización.

Dash significa veloz (no se si alguien recuerda al hijo de Mr. Increíble… ). Suena algo complejo, pero como podréis averiguar haciendo unas pruebas, es realmente útil.

Cómo activarlo

  • selecciona uno o varios objetos Y uno o más canales que queremos modificar con el script en el Channel Box
  • pulsa Alt + Click derecho en ellos
  • se abrirá un editor de una sola linea donde introduciremos un comando para hacer cambios en los canales seleccionados para esos objetos.

Comandos por defecto

Los que ya están creados utilizan por debajo MASH, el plugin incluido en Maya que sirve para generación procedural, ¡aunque aquí no parezca que tiene nada que ver!.

De momento solo están los siguientes:


l ( número ) ó  linear (número)

Seleccionamos dos o más objetos y los distribuye linealmente en un distancia indicada por este número. ( l viene de «linear»).

r ( número )  ó  rand (número)

Asigna un número aleatorio entre 0 y el número dado.

r ( bajo, alto ) ó  rand (bajo,alto)

Asigna un número aleatorio entre esos dos valores.

e( )  ó  ease()

Suaviza el canal de animación

e ( número )  ó ease (número)

Suaviza aceleración y deceleración de un canal basado en un número decimal entre -1 y 1.  (-1 representa aceleración lenta y deceleración rápida, y 1 lo contrario).

ts ( número )  o timeStep (n)

Aplica un offset de tiempo a cualquier keyframe de los canales seleccionados. El número indica de cuántos frames será ese offset.

help

Este no está documentado, pero muestra por el script editor una ayuda más bien escueta sobre su utilización


Suponemos que añadirán más comandos próximamente.

Aquí tenéis en inglés algunas explicaciones visuales sobre cómo utilizarlo en el estupendo canal de YouTube «Oh My Maya»:

Un poco más difícil: Generación aleatoria

Si os llama la atención tener un control en la generación de números más allá del simple «rand(a,b)» y «rand(a)» de Dash, entonces  tal y como pone en la ayuda y en la documentación, además se puede usar el módulo Random de Python para generación aleatoria de números en Dash. Si esto os suena a chino, lo que significa es lo siguiente: Que Python dispone de un grupo de opciones para construir números aleatorios llamado Random (aleatorio).

Si no sois perfiles técnicos, es probable que esto os suene a chino también, pero en esta lista, donde están todas las posibilidades que hay con Random en la documentación oficial del módulo de funcionalidad en Python 2.x (ojo, no es 3, Maya aún utiliza la versión 2, recordad).  https://docs.python.org/2/library/random.html .

Para que lo entendáis, se pueden encontrar lineas como sigue:

random.randrange(startstop[step])

Return a randomly selected element from range(start, stop, step). This is equivalent to choice(range(start, stop, step)), but doesn’t actually build a range object.

Randrange, explica, genera un número entre «start» y «stop» y con un parámetro opcional de «step» (esto lo sabemos porque incluye unas llaves [ ]  al rededor del tercero). Nosotros debemos utilizar lo que hay después de «random.». Es decir, escribimos y ejecutamos en Dash:

randrange(0,20)   <– Genera números aleatorios entre 0 y 20… es exáctamente igual que r(0,20) en Dash.

randrange (0, 20, 2)  <– Añade el parámetro opcional del tamaño del paso. Dará pasos de 2. Es decir, números como 0, 2, 4, 6, 8, … hasta 20.

[wp_ad_camp_1]

Más información técnica

Este pequeño lenguaje de scripting forma parte de MASH, como ya he mencionado. Originalmente era de una empresa anglosajona llamada Mainframe, como aquí podemos ver.  Forma parte de Maya desde la extensión 2 de Maya 2016.

Existen tres módulos Python relacionados con Dash llamados Dash, DashLegacy y DashCommand en la siguiente carpeta:

/Program Files/Autodesk/Maya2018/plug-ins/MASH/scripts (windows)

/Applications/Autodesk/Maya2018/plug-ins/MASH/scripts (Mac)

Curiosamente, si ejecutamos el código que abre la caja de texto donde introducimos la linea de código Dash allá donde esté situado el ratón:

import DashLegacy  

DashLegacy.showDash(‘mainChannelBox’)  

están utilizando aún (en Maya 2018) la versión Legacy. Si inspeccionamos su código, vemos que utilizan una librería llamada «flux» que forma parte de MASH. Comparando el código, que es bastante similar, entre Dash y DashLegacy parece que la versión nueva está utilizando PySide, shiboken, OpenMayaUI y otros, con lo que parece que ya no depende de MASH.

Sospecho que lo que quieren es extraerlo de MASH y convertirlo en algo independiente y quizá más grande en próximas versiones. Por lo demás, en DashCommand podemos investigar más profundamente qué más opciones hay disponibles, a falta de una documentación más extensa.

En concreto, si expulsamos la ayuda de Dash hecha por los antiguos desarrolladores, parece bastante escueta. Estudiando el código, los operadores tienen la mayor prioridad, seguidos de los comandos Dash y luego comandos de Random.

Operators: + – * /
rand [r]: 0 to 2 arguements
ease [e]: 1 arguement
timeStep [ts]: 1 arguement
linear [l]: 1 arguement
Anything from the Python Random module

Añadir comandos personalizados

También es posible crear comandos personalizados editando el archivo :   Dash.json   en la siguiente ruta:

/Program Files/Autodesk/Maya2018/plug-ins/MASH/scripts (windows)

/Applications/Autodesk/Maya2018/plug-ins/MASH/scripts (Mac)

Aquí tenemos uno de los items del Json:

«MayaExec»: «import DashCommand», «MayaEval»: «DashCommand.dashEase», «DashCommand»: «ease», «ShortDashCommand»: «e», «Description»: «Auto ease keyframes»}

MayaExec sería el módulo a importar o el código a ejecutar. MayaEval la función concreta a ejecutar. DashComand es el nombre que tendrá el comando nuevo. Y lo demás es autoexplicativo. Para entender esto completamente habría que leer el código directamente.

De momento no se sabe nada más.

Espero que os resultado de interés. ¡Un saludo!