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

MT Chart Designer Version


I have made some modification in this script. A custom frame range number is added, and max-amount for datapoints are now driven by upLimit value.

Stay up-to-date!

Some fun script would be uploaded within a few days. Now I’m just dealing with PHP.

Download MT Chart Designer Version

MT Chart Designer Version

8pic.ir     مكاني براي آپلود رايگان فایل های شما

Download MT Chart Designer Version
MT Chart Design Version

or you can…

Download MT Chart Designer Version
MT Chart Design Version

Download MT Chart Designer Version
MT Chart Design Version

Animating and Designing Charts for various puposes now is possible
with one click and several simple settings. You may
render them with high quality shading to boost the
beautiness of your final production.

Chart Type:
Column would make for each data point a column, and cube
would do so with cube instead of the column. A curve type would be enabled
in future, however if I receive comments requesting this to make
myself sure that updates are welcomed.

Name: A namefield is used to allow users to keep a name for all of
their created nodes.

Frame Range: Since one of the principal usage of this script is to make
the Datas grow over time,  frame-limits are presented for the user to choose

Number Of Data Points are the number of statical columns/cubes you need.

Up Limit: As the name is explanatory, it is used for vertical limit of the chart.

Unit: After how many value a number must be used for vertical range. Try to use
numbers greater than 10. Still all numbers are possible.

Offset: Next to vertical bar, numbers are used with markers, this number set the space
between numbers and the vertical bar.

Data Points: Entering a number for your respective data point.The value entered must
be less than Up Limit number, otherwise process might malfunction.
For each data point a name field is used for making the appropriate
textual representation.

Under the Structure Tab there are several options:

Range Value Text Scale: Scale of the number next to the vertical bars.
Spacing: Space between various data points, changing this option affects on the whole chart. Use this option to make your chart desirable.
Base Final Offset: The space from the last data point to the end of base platform.

Range Bar Thickness: The thickness of the vertical bar.

Base Platform Thickness: The thickness for the base platform.

Data Point Scale: Scale for the columns and Cubes.

Data Text Scale: Scale of the texts below each individual data point, retrieved from UI.

Data Text Z Offset: The Z translation of each created Data Text.

MT Shading Network Generator

A good script to make shading networks easily; of course, ramp-based networks which are so popular, specially for making glass, chrome, velvet and etc.

MT Shading Newtwork Generator
Written by Mostafa Talebi


Build Ramp-Based Networks.
Image and video hosting by TinyPic

With this script users can make networks of related ramps and a base shader, and if checked, a dirt material.
This script has three major parts. Blinn base settings, ramp settings and dirt material override.
-Core Name
If you type the name here, for instance “wooden_”, it would go into all the maps names.
As a result, you have for instance “wooden_specularMap” which is a great time-saver.

-Base Material:
In this part primary channels of the material are placed. There is an “IOR” checkbox which
allows the user to set the “Index of Reflections”.

-Ramp Setting:
The main goal of this script is to produce ramp-based network, therefore if you check-on
one of those checkboxes, the respective ramp setting would turn on, while the primary channel related
to it greys out.

-Ramp Setting General Layout:
For each ramp setting there is a “Use Sampler Info” checkbox, turning it on would make that ramp come with
a sampler info node. If all ramped-channels have this box on, one sampler info would be used in common. there
will not be a chaos of sampler info nodes.
A slider used to query how many ramp instant colors are to be made. A ramp basically has three colors. You can tweak
it to five colors. There are several color-presets which are handsome to use, if appropriate.
User must apply the setting for it to pop up. This makes a ramp ready to be published.

-Dirt Material
Unfortunately I have not written this part to be made within the UI. You can make a dirt material, select it and then hit
the button and input its name into the field. Eventually if you hit “produce network” the network, with a layeredShader would
be made and all connections are linked, respectively.

This script would update to more richer tools that if you FEED THE RSS, you can be updated by updates.
How to install it?
just copy the script content onto your shelf. and also copy the bitmap into your bitmap folder.
usually it is : yourDocument/maya/version/perfs/icons/…


MT Shading Network Generator_v1.rar


I hope it would be a working script for your projects.

From IRAN.

MT Shading Newtwork Generator
Written by 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