El Idioma Maya Embedded (MEL) es un lenguaje de script utilizado para simplificar las tareas de Autodesk 3D Graphics Software Maya . La mayoría de las tareas que se pueden lograr a través de la GUI de Maya se pueden lograr con MEL, así como ciertas tareas que no están disponibles en la GUI. 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 otros que pueden encontrarlo útil.
Diseño
MEL es sintácticamente similar a Perl y Tcl . Proporciona algo de administració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 de archivos de programa de Maya.
MEL es bastante limitado en comparación con los lenguajes de programación convencionales. Mel es principalmente un lenguaje destinado a registrar la sesión maya [ cita requerida ] , por lo que carece de muchas características avanzadas como matrices asociativas. Python se agregó a Maya como una alternativa a MEL en Maya 8.5. Aún así, MEL ofrece algunas ventajas a Python:
- La capacidad de detección de MEL es mejor ya que el servidor de eco de comandos integrado se creó teniendo en cuenta a MEL.
- Una gran cantidad de código heredado y funcionamiento interno de Maya está en forma MEL. Esto proporciona muchos conocimientos sobre el funcionamiento interno indocumentado de Maya.
MEL a menudo es criticado por su falta de funciones de programación y orientación a objetos. En la práctica, sin embargo, MEL se usa como un lenguaje de metaprogramación donde MEL simplemente instruye a la arquitectura de nodos de Maya para resolver el problema. Dado que los nodos forman el núcleo computacional real de Maya, usar un método de programación más robusto y fácilmente aparente 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 completamente.
Usos
Las herramientas diseñadas con scripts MEL generalmente se clasifican 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 escena para el seguimiento de la producción
- Creación / modificación de geometrías
- Primitivas personalizadas
- Tipo de datos específico del renderizador de terceros (p. Ej., Superficies subdivisionales de RenderMan)
- Herramientas de modelado que no se ofrecen en el paquete básico
- Herramientas de animación
- Simuladores musculares
- Controles de montaje / configuración
- Comportamiento de la IA de la multitud
- Herramientas de iluminación / renderizado
- Creación automática de configuraciones de sombreado complejas comunes
- Efectos previos y posteriores al renderizado
- Hacer llamadas a renderizadores de terceros
- Dinámica
- Comportamiento de partículas personalizado
- Flocado y enjambre emergente de objetos simulados
- Algoritmos genéticos
- Simulación de tela
- Configuración y mantenimiento de escenas de archivos y carpetas
- Personalización de la interfaz de usuario
- Controles de personajes personalizados
- Eliminación de comandos mayas no válidos
- IU personalizadas
Ejemplo
Este es un ejemplo de un script que copia un objeto seleccionado a través de su ruta:
// script 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 inicio de rango string $ selectedObjects []; // para almacenar objetos seleccionados $ selectedObjects = `ls -sl` ; // almacenar objetos seleccionados select $ selectedObjects ; while ( $ i <= $ num_of_duplicates ) { $ temp = $ range_start + ( $ step_size * $ i ); currentTime ( $ temp ); // selecciono los objetos a duplicar o instancia select $ selectedObjects ; if ( $ duplicateOrInstance == 0 ) { duplicado ; } else { instancia ; } $ i ++ ; } } // Ejemplo de uso: // duplicar la selección actual 5 veces - // distribuida uniformemente entre el fotograma 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
- Página web oficial
- Referencia de comando MEL (Maya 2013)
- Referencia de comando MEL (Maya 2014)
- Referencia de comando MEL (Maya 2015)
- MEL y expresiones - Ayuda de Autodesk Maya 2015
- Wiki Mel
- Scripts útiles para Maya
- CGSociety - Foro de Programación Maya
- CGSociety - hilo de 'scripts MEL'
- CGSociety - Hilo 'Maya UI Building'
- Tutoriales de secuencias de comandos de MEL para Maya - CreativeCrash
- variables en mel - Instructor de ACCAD Alan Price
- Tutoriales en video de MEL - lynda.com
- Búsqueda de tutores digitales - MEL
- maya mel - polyextrude.com
- MEL - maya rigging wiki
- Mel Scripting - RobTheBloke