Learning MEL – Step #1 – What is MEL? What Does MEL Do? Why MEL? A New Method

Hello to all users. I am going to begin a MEL tutorial series from the very beginning all the way to more advanced tutorials. First of all, I highly recommend you to read my article on Maya Relations Here.

What is MEL really? Why do we go through programming in Maya? Autodesk Maya provides a very satisfying UI which allows users of multiple level to deeply interact with. You can customize it to a very deep extent. It does not require you to learn MEL or Python, and still you are highly free in manipulating the elements. Nevertheless, MEL enables you to automate the process. To create repetitive tasks, managed jobs, systematized management and workflow, and innovative creation. Still, the most important task of MEL is its automating task. Automation must not be degraded with the name of automation  in your mind. What does it mean? I will explain it.

What does UI enable you to do? All the jobs are recorded in Maya script editor history one by one. Go to Maya script editor and then select Echo All Commands in the menu “History” of the Script Editor. Then every task that you do with Maya is recorded and shown in this window.

Now let’s begin to become more specific on the MEL.

1- MEL (Maya Embedded Language) I do not want to talk about MEL history and its ancestor, and some tiny unimportant details that are told one thousand times, and with a search on the net you can find them. I want to talk about MEL practically. To do something, to learn something as it could be applied in the software. Good.
MEL is a language in the software Autodesk Maya. This scripting language allows you to do task more professionally in the Autodesk Maya. There is another language available to Maya user which is Python. That is different. I do not intend talking about that. When you want to create/do something with Autodesk Maya MEL, you need the commands. Commands are executors of Maya real functions. Even in some cases they are directly the same Maya functions. But you can not say that maya has several parts: Modeling, Rendering, Animation, Rigging, Dynamics, Effects, Live, Lighting, Scripting etc. and I then choose scripting. You can be a modeler and a MEL programmer as well. MEL only allows you to boost your Maya Knowledge. Then it is necessary for you to be the master of some part[s] in Maya and move them high in level using MEL. When you want to create a sphere in Maya, the following command does the job:


Then it is essential to ask this question that:

Isn’t it essential to learn that Maya could create sphere, and why one must create spheres.

Then you know that when you create a sphere in Maya from the menu Create/Polygon/Sphere It creates a sphere in the center of the scene. But I can change the name of the sphere form the channel box or the attribute editor as well. How is it possible to be done using MEL. In quest of learning it, you search and find out that “polySphere” function in the MEL has a propoerty called “name”. So you write:

polySphere name=”testSphere”;

anyway, you soon understand that Maya reports a syntactical error in your script. I leave the narration here and become more scientifically concerned on the subject.

Linear learning of a programming language tells you that you must learn syntax first. Just as it was true with our language learning at the school. Nevertheless, it does not work. In recent theories (from 1970 up to now) in Teaching Language Methods, it has been proposed and also propagated, and eventually spread across the world that since a language is an instrument and not a target, we must teach language not linearly, but dramatically and in action. Talking about various topics such as health, psychology, sports, economy etc but using the new language. I agree with the method, as I myself have been taught English using this method which is called Communicative Language Teaching, or briefly CLT. To end this part, I could say you how to be taught MEL, and how to use it, linearly, but it is just boring, I teach MEL in action and explain parts whenever necessary.

I think now you know what MEL is and that what jobs it does, however briefly. It’s time to finish this first part of MEL series with the following two paragraphs. You need MEL. If you want to become a master in Maya, which means in industry and 3d creation, you have to learn a programming language. There is Python, more advanced, more technical and also updating, and usable in other applications such as Houdini and also in Web Development. But the story does not end in here, MEL is greatly documented for Maya, its child “expression” (which I talk about later) is living inside Maya. You can learn it easier, since it is all reported in Maya Echo All Commands much more better than Python. I learned PHP but just after learning HTML/CSS. It is relevant. Later the relation would be easier to grasp. Hence, MEL is crucial to learn. In a studio where its technical director is standing behind your chair watching your commercial modeling for their new advertising, he or she would not be satisfied to see you translating(that is, translate is “move” in Maya, and you must know it already) spheres manually by hand in the scene, he or she, rather, expects to see you writing  a MEL script, executing it, and have one hundred spheres manipulated across the scene all randomly.

In this first part, I talked about MEL and some points related to learning and using it. Keep in touch with this page, Learning MEL just would be filled with various tutorials on various applications of MEL.

Mostafa Talebi

Relation, A Look Into Maya’s Connections

In Maya, and almost every other 3d application, tremendous needs for a true, smooth and quick connections could be always felt. In Maya, regardless of its company (Autodesk), since brains are individual and group people and not the brand behind it, these needs are highly responded. One can smoothly saunter through its relative places. In this article I’m going to explore some of its features in bringing forth various instruments to pace out the process.


A. Introduction

B. Methods and Instruments

1. Expressions

2. Maya Embedded Language

3. Connection Editor

4. Hyper Shade

5. Constraints

6. Key Frames

C. Unwrap The Engine


Maya, let’s relate it to its history (of course I don’t mean Maya Civilization which was invaded aggressively centuries ago), has mainly three head categories for its connecting workflow.

The first one, if broadly name it, slips into language. Linguistic approach that you have through Maya’s options. Two vastly used parts are active within this single field. Expression and MEL. Expression, and offspring of MEL, not exactly the same, but using its rule, and the MEL itself which stands for Maya Embedded Language. Second category belongs to GUI. Connection Editor and Hypershade are in this group. The third group includes Constraint and Set Driven Key Frames, in this group simple keyframing is also exisiting. But I’m not going to talk about it, since it could be explained within Driven Key Frames. This third category, also, relates to GUI, but it differs also from the task-related view.

Expression are highly satisfying when you’ll use them. according to Maya’s own Help documentation, Expressions are:

You can use an expression to animate any keyable, unlocked object attribute for any frame range. You can also use an expression to control per particle or per object attributes. Per particle attributes control each particle of a particle object individually. Per object attributes control all particles of a particle object collectively. ( User Guide > Scripting > MEL and Expressions > Animation expressions > )


However this definition may not be adequate for its full understanding, but let’s give you an example. If you have a sphere called “ball” and a cube which is called “cube”, and you want to move cube in X  axis whenever balls moves in Y axis. With following line, added to expression attribute of “cube.tx” you can achieve this effect.

cube.tx = ball.ty;

Expressions also are of high importance, since as you see in previous paragraph, you mention the name of the attribute which means you have a direct and immediate access to it without any specific command needed to be used. Follwing definition can tell you how MEL relates into Maya:

The entire Maya graphical user interface (GUI) is written and controlled using MEL, the Maya Embedded Language. The creation, editing, and deletion of all the graphical user interface elements is done using the MEL language. It then follows that you too can control the Maya interface by using MEL. In fact you can entirely replace the standard Maya interface by using your own MEL scripts. There is often a need for specialized customization of parts of Maya’s interface. For instance, you may want to develop a particular interface that allows animators to set keys without their having to learn the Channel Box or other Graph Editor. You can also hide or remove a lot of the Maya interface elements to reduce the complexity of the interface for certain users (Gould, 2).


It’s very easy to work with MEL, it allows you to connect many attributes once to many other attributes. To give you an instance, assume that there are fifty objects, and you need to connect their scale to fifty locators. How much time would be consumed using the regular process of connecting them? If you use MEL you can quickly finalize you process. Let’s say that if you want to uncover how fast it would be, or how faster, you first need to examine the whole process. Connection of fifty plus fifty other object which end up in one hundred hungry object for connection is not a quick-be-done task. Nevertheless, MEL, being handy and capable, decrease the time you need to spend upon it.

In  MEL, you need to call for an attribute, a job which you would not need to employ in Expressions. For instance, you want to connect sphere.scaleZ to locator.translateY; this script is what you need:


connectAttr sphere.scaleZ locator.translateY;


However if you want to get their attributes for whatever you purpose might be, you need:


getAttr sphere.scaleZ;


As I have already mentioned, MEL is the most reliable friend in Maya’s environment whom you can trust always. Fifty objects example can recall you how fast it would be. MEL, because of its alliterative likeness with Maya, retrospectively remembers me of Indian Ethical Civilization and Development.

Connection Editor, is a window where you can connect attributes using a GUI. According to Maya’s documentation, Connection Editor is:

The Connection Editor provides node network information in a side-by-side layout where you can view two connected nodes in a node network. This editor is useful for fine-tuning a shading network.  You can quickly and easily traverse from node to node and show a node’s outputs or inputs to facilitate connections, meaning you can make connections in either direction in a node network.

Connection Editor is also useful for animation, and rigging process. It allows you to connect the attribute easily, and its advantage is that you can select amongst many different attributes that you have. You can access this window under the menu Window, and then General Editor, Connection Editor. But as the documentation has already mentioned, it’s great for shading network in Maya.

Constraints are an animation tool which help you connect object’s position, rotation and scale most notably. there are other constraint options such as Pole Vector which is used in cooperation with IK Handle. I don’t want to make details about them, but to give about them an overall explanation. For instance, Point Constraint deals with positional attributes. If you parent constraint object A to object B, the movement of the object A forces the object B to move with. It has options which can give you offset, and also it has an option for each parent node, weight attribute. If you enter the value 0.5 into weight field, with every unit movement of the object A, object B will move half-unit. And if you change it to 0.25, with every unit movement of the object A, object B will move four times slower than object A. Constraint are inevitably used in every serious workflow, they are great. However, simultaneously, with  pointConstrainting object A to B, and weighting it  0.25, we can equalize it within Expression:

objectA.translateX = objectB.translateX * .25;

Here we can see the interconnection of the Maya’s various abilities, such as what we see in equalization of the Constraint using Expressions.

The last part deals with Key Framing. It connects an attribute to a relative change of it during the time within the Time Line. Set Driven Key is another type of Key Framing, but not in accordance with another attribute and not the time. For instance you connect objectA.tx to objectB.ty, and key it with both attributes set to 0. The you set objectA.tx to 10 and objectB.ty to 50, and again key it. This makes the objectB to move 5 unit with one unit movement of objectA. Again you can see that programming it with both MEL and Expression is possible.

In what I have written, the attempt was to uncover a very small part of Maya without tending to be cliche about explanations. Pictures are not used, since I aimed a theoretical representation of content.


Maya’s Documentation

Gould, David. Complete Maya Programming: An Extensive Guide to MEL and C++

Mostafa Talebi


Set Driven Keyframes in Maya

(High Quality) (1600 * 900)
In this lesson, I will present you two Set Driven Keyframes in two different ways.
You can also take a look at my article at side section of the blog, under the Article category to read an article which is called “Relations, A look into Maya’s connection workflow.”
You can Download the text file here

Download the MT Set Driven Keyframes Here

Download MT Parenting Facilitator Here

Introducing Set Driven Key Frames in Maya

In this tutorial I will examine how Set Driven Key Frames in Maya works, and basically, for people who are not familiar with the task, provide them with an example to learn it.

You can download the text file here

You can download the MT Set Driven Keyframes Plugin Here

and Download the MT Parenting Facilitator Here