Maya Embedded Language
Encyclopedia
The Maya Embedded Language (MEL) is a scripting language used to simplify tasks in Autodesk's
Autodesk
Autodesk, Inc. is an American multinational corporation that focuses on 3D design software for use in the architecture, engineering, construction, manufacturing, media and entertainment industries. The company was founded in 1982 by John Walker, a coauthor of the first versions of the company's...

 3D Graphics Software Maya
Maya (software)
Autodesk Maya , commonly shortened to Maya, is 3D computer graphics software that runs on Microsoft Windows, Mac OS and Linux, originally developed by Alias Systems Corporation and currently owned and developed by Autodesk, Inc. It is used to create interactive 3D applications, including video...

. Most tasks that can be achieved through Maya's GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...

 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.

MEL is syntactically similar to Tcl
Tcl
Tcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own...

 and Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

. 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 not object oriented, and lacks advanced features such as associative arrays. Very few improvements have been made to it in recent years, and in Maya 8.5, Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 was added to Maya as an alternative to MEL.

Applications of MEL

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/modification
  • Custom primitives
  • Third-party renderer specific data type (e.g., RenderMan sub-divisional surfaces)
  • Modeling tools not offered in the base package
  • Animation tools
  • Muscle simulators
  • Rigging/setup 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 (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; // set to range start

string $selectedObjects[]; // to store selected objects
$selectedObjects = `ls -sl`; // store selected objects
select $selectedObjects;

while ($i <= $num_of_duplicates)
{
$temp = $range_start + ($step_size * $i);
currentTime ($temp);
// seleced the objects to duplicate or instance
select $selectedObjects;
if($duplicateOrInstance

0)
{
duplicate;
}
else
{
instance;
}
$i++;
}
}



// Usage example:
// duplicate the current selection 5 times --
// evenly distributed between frame 1 and 240
animatedDuplication(1, 240, 5, 0);

Expression Language
Maya also offers an expression language that is a super-set of MEL, and results in nodes that are executed as part of Maya's dependency graph. Expressions are developed with Maya's expression editor, and allow scripts to trigger while Maya evaluates the scene file at each change in time, to simulate complex behaviors or perform other useful tasks.
External links
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK