Maya Embedded Language
Mel, MEL ou Maya Embeded Language (langage incorporé de Maya) 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 lui-même programmé en Mel, le reste en C++. On peut utiliser le Mel dans plusieurs environements, par exemple, il est possibles 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 autre par l'utilisation du signe $ au début de chaque variables comme en PHP. Elle découle de la syntaxe du UNIX shell scripting : une commande en Mel est suivi de flags, c'est à dire de données auxquelles on attribue une valeur. Parmi ces flags on a souvent -query, pour appeller 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 Cube
Cette commande créer un cube polygonal, ou plutôt un prisme droit, Cube de hauteur 1.0, de largeur 2.0 et de profondeur 3.0. Attention ici Cube n'est pas une variable, mais le nom du cube polygonal créé, c'est pourquoi il n'est pas précédé du caractère $.
polyCube -edit -height 1.5 Cube
Celle-ci modifie sa hauteur.
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. La possibilité d'utiliser les fonctions Mel dans un environement Python pour agrandir les possibilité de ce langage au paradigme de programmation orientée objet et de programmation modulaire. Mel propose toutes les structures de contrôles les plus utilisées comme les conditions (if et else), les boucles (for, while) et les branchements (switch ... case).