Maya Embedded Language
# Maya Embedded Language

Le Maya Embedded Language (langage incorporé de Maya) (MEL) est le langage de programmation du logiciel 3D Maya. Il s'agit d'un langage interprété. Maya est caractérisé par sa possibilité d'être entièrement exploitable via des lignes de codes sachant qu'une grande partie du logiciel (dont son interface) est programmée en Mel, le reste en C++. On peut utiliser le Mel dans plusieurs environnements, par exemple, il est possible d'écrire des expressions qui agiront à chaque nouvelle image dans le temps ou d'associer un Mel à une collision. De façon générale, il permet d'avoir accès à la création d'interfaces (création de fenêtres, de boutons...) et à toutes les fonctions du logiciel, et c'est pour cette raison qu'il est un outil indispensable pour les utilisateurs de Maya.

## Syntaxe et concepts

La syntaxe du Mel se caractérise entre autres par l'utilisation du signe $ au début de chaque variables comme en PHP. Elle découle de la syntaxe des shells Unix : une commande en Mel est suivie de flags, c’est-à-dire de données auxquelles on attribue une valeur. Parmi ces flags on a souvent -query, pour appeler une valeur d'une donnée, ou -edit, pour éditer une valeur d'une donnée. Par exemple :

    polyCube -height 1.0 -width 2.0 -depth 3.0

Cette commande crée un cube polygonal, ou plutôt un prisme droit, Cube de hauteur 1.0, de largeur 2.0 et de profondeur 3.0.

    polyCube -edit -height 1.5 pCube1

Celle-ci modifie la hauteur du cube appelé pCube1, il n'y a pas de $ devant pCube1 car il ne s'agit pas d'une variable mais du nom de l'objet.

Le Mel ne respecte que le concept de programmation procédurale, sachant que le terme de procédure (le mot clé est proc) est employé à tort dans ce langage puisqu'il est possible de renvoyer une valeur, ce qui en principe ne l'est pas avec une procédure mais avec une fonction. Existe également la possibilité d'utiliser les fonctions Mel dans un environnement Python pour étendre les possibilités de ce langage au paradigme de programmation orientée objet et de programmation modulaire. Mel propose toutes les structures de contrôle les plus utilisées comme les conditions (if et else), les boucles (for, while) et les branchements (switch ... case).

