Maya Embedded Language (MEL) es un lenguaje de programación que se utiliza para simplificar tareas en el software de gráficos 3D Autodesk Maya . La mayoría de las tareas que se pueden realizar a través de la interfaz gráfica de usuario de Maya se pueden realizar con MEL, así como también ciertas tareas que no están disponibles desde la interfaz gráfica de usuario. MEL ofrece un método para acelerar tareas complicadas o repetitivas, además de permitir a los usuarios redistribuir un conjunto específico de comandos a otras personas que puedan encontrarlo útil.
Diseño
MEL es sintácticamente similar a Perl y Tcl . Proporciona cierta gestión de memoria y asignación dinámica de matrices, y ofrece acceso directo a funciones específicas de Maya. La mayoría de los comandos estándar de Maya son scripts MEL predeterminados, guardados en el directorio Archivos de programa de Maya.
MEL es bastante limitado en comparación con los lenguajes de programación convencionales. Es principalmente un lenguaje destinado a registrar la sesión de Maya, [ cita requerida ] por lo que carece de muchas funciones avanzadas como matrices asociativas. Python se agregó a Maya como una alternativa a MEL en Maya 8.5. Aun así, MEL ofrece algunas ventajas sobre Python:
- La capacidad de descubrimiento de MEL es mejor ya que el servidor de eco de comandos integrado fue creado con MEL en mente.
- Gran parte del código heredado y del funcionamiento interno de Maya se encuentra en formato MEL, lo que proporciona mucha información sobre el funcionamiento interno no documentado de Maya.
A menudo se critica a MEL por su falta de funciones de programación y orientación a objetos. Sin embargo, en la práctica, se utiliza como un lenguaje de metaprogramación en el que MEL simplemente le indica a la arquitectura de nodos de Maya que resuelva el problema. Dado que los nodos forman el núcleo computacional real de Maya, utilizar un método de programación más robusto y evidente sería un enfoque muy ineficiente. En muchos sentidos, MEL complementa la API de Maya, con límites algo claros entre las tareas asignadas. Esto hace que MEL sea más difícil de aprender y comprender por completo.
Usos
Las herramientas diseñadas con scripts MEL generalmente se dividen en las siguientes categorías:
- E/S de datos
- Importación de datos de captura de movimiento
- Exportación de datos de juegos patentados
- Metadatos de la escena para el seguimiento de la producción
- Creación y modificación de geometría
- Primitivas personalizadas
- Tipo de datos específicos del renderizador de terceros (por ejemplo, superficies subdivisionalizadas de RenderMan)
- Herramientas de modelado no ofrecidas en el paquete básico
- Herramientas de animación
- Simuladores musculares
- Montaje y configuración de controles
- Comportamiento de la IA en masa
- Herramientas de iluminación y renderizado
- Creación automática de configuraciones de sombreadores complejos comunes
- Efectos previos y posteriores al renderizado
- Realizar llamadas a renderizadores de terceros
- Dinámica
- Comportamiento de partículas personalizado
- Simulación de enjambres y bandadas emergentes de objetos
- Algoritmos genéticos
- Simulación de tela
- Configuración y mantenimiento de la escena de archivos y carpetas
- Personalización de la interfaz de usuario
- Controles de personajes personalizados
- Eliminación de comandos Maya no válidos
- Interfaces de usuario personalizadas
Ejemplo
Este es un ejemplo de un script que copia un objeto seleccionado a través de su ruta:
// secuencia de comandos de instancias/duplicados animados
proc animatedDuplication ( int $rangeStart , int $rangeEnd , int $numOfDuplicates , int $duplicateOrInstance )
{
int $range_start = $rangeStart ;
int $ range_end = $ rangeEnd ;
int $num_of_duplicates = $numOfDuplicates ;
int $step_size = ( $range_end - $range_start ) / $num_of_duplicates ;
int $i = 0 ;
int $temp ;
currentTime $range_start ; // establecer en el inicio del rango
cadena $selectedObjects []; // para almacenar los objetos seleccionados
$selectedObjects = `ls -sl` ; // almacenar los objetos seleccionados
select $selectedObjects ;
mientras ( $i <= $num_of_duplicates )
{
$temp = $range_start + ( $step_size * $i );
currentTime ( $temp );
// se seleccionaron los objetos a duplicar o instanciar
seleccionar $selectedObjects ;
si ( $duplicateOrInstance == 0 )
{
duplicar ;
}
de lo contrario
{
instancia ;
}
$i ++ ;
}
}
// Ejemplo de uso:
// duplicar la selección actual 5 veces --
// distribuida uniformemente entre los fotogramas 1 y 240
animatedDuplication ( 1 , 240 , 5 , 0 );
Características
Maya también ofrece un lenguaje de expresión que es un superconjunto de MEL y da como resultado nodos que se ejecutan como parte del gráfico de dependencia de Maya. Las expresiones se desarrollan con el editor de expresiones de Maya y permiten que los scripts se activen mientras Maya evalúa el archivo de escena en cada cambio de tiempo para simular comportamientos complejos o realizar otras tareas útiles.
Referencias
Enlaces externos
- Sitio web oficial
- Referencia del comando MEL (Maya 2013)
- Referencia de comandos MEL (Maya 2014)
- Referencia de comandos MEL (Maya 2015)
- MEL y expresiones - Ayuda de Autodesk Maya 2015
- Wiki de Mel
- Scripts útiles para Maya
- CGSociety - Foro de programación Maya
- CGSociety - Hilo sobre 'scripts de MEL'
- CGSociety - Hilo 'Construcción de la interfaz de usuario de Maya'
- Tutoriales de programación MEL para Maya - CreativeCrash
- Variables en mel - Instructor de ACCAD Alan Price
- Tutoriales en vídeo de MEL - lynda.com
- Búsqueda de tutores digitales - MEL
- maya mel - polyextrude.com
- MEL - Wiki de aparejos mayas
- Guión de Mel - RobTheBloke