Maya Embedded Language
The Maya Embedded Language is a scripting language used to simplify tasks in the 3D graphics software Autodesk Maya. Most tasks that can be achieved through Maya's GUI can be achieved with MEL, as well as certain tasks that are not available from the GUI. MEL offers a method of speeding up complicated or repetitive tasks, as well as allowing users to redistribute a specific set of commands to others that may find it useful.
Design
MEL is syntactically similar to Perl and Tcl. It provides some memory management and dynamic array-allocation, and offers direct access to functions specific to Maya. The majority of standard Maya commands are default MEL scripts, saved in the Maya Program Files directory.MEL is fairly limited compared to mainstream scripting languages. It is primarily a language meant to journal the Maya session, so it lacks many advanced features such as associative arrays. Python was added to Maya as an alternative to MEL in Maya 8.5. Still MEL offers some advantages to Python:
- Discoverability of MEL is better since the built-in command echo server was created with MEL in mind.
- A lot of legacy code and inner working of Maya is in MEL form. This provides many insights into undocumented inner workings of Maya.
Uses
The tools designed using MEL scripts generally come under the following categories:- Data I/O
- Motion capture data import
- Proprietary game data export
- Scene meta-data for production tracking
- Geometry creation and modification
- Custom primitives
- Third-party renderer specific data type
- Modeling tools not offered in the base package
- Animation tools
- Muscle simulators
- Rigging and setting up controls
- Crowd AI behavior
- Lighting /rendering tools
- Automatic creation of common complex shader setups
- Pre- and post-render effects
- Making calls to third-party renderers
- Dynamics
- Custom particle behavior
- Simulated object emergent flocking and swarming
- Genetic algorithms
- Cloth simulation
- File and folder scene setup and maintenance
- User interface customization
- Custom character controls
- Removal of invalid Maya commands
- Custom UIs
Example
This is an example of a script which copies a selected object through its path:// animated duplicates/instances script
proc animatedDuplication
// Usage example:
// duplicate the current selection 5 times --
// evenly distributed between frame 1 and 240
animatedDuplication;