Où taper du code ?

Après une introduction rapide au fonctionnement de Maya, voici le chapitre concernant l’outil que vous allez utiliser le plus souvent durant ce tutoriel : le Script Editor. :diable:

La ligne de commande

La ligne de commande (command line en anglais) vous permet d’écrire et d’exécuter une simple ligne MEL ou Python sans avoir à ouvrir le Script Editor:

La ligne de commande.
La ligne de commande.

Vous pouvez commuter entre MEL et Python en cliquant sur le bouton contenant le nom du langage à gauche de la ligne de commande.

Allez-y, cliquez sur le bouton MEL pour qu’il passe en Python puis exécutez ceci :

print "Bonjour!",
Ligne de commande, print Bonjour.

Le résultat apparaît dans la sortie à droite de la ligne de commande :

Ligne de commande, print Bonjours, résultat.

Maintenant, tapez ceci :

untrucquivapasmarcher
ligne de commande bug

Et voyez comment la sortie devient rose méchante ! :pirate:

Dernière chose utile avant d’entrer dans le Script Editor, placez votre curseur dans la ligne de commande et faites Haut sur votre clavier.

Surprise ! :soleil:

Les commandes tapées précédemment (ici print "Bonjour!",) apparaissent. On peut ainsi naviguer entre les commandes déjà tapées via Haut et Bas.

Au bout d’un moment, vous deviendrez suffisamment à l’aise et il vous arrivera de taper certaines commandes directement ici. ^^

Le Script Editor

Le Script Editor (l’« éditeur de scripts » en français) est une fenêtre dédiée à l’écriture de scripts dans Maya. Il n’est pas forcément très pratique pour l’écriture de gros scripts, mais c’est largement suffisant pour commencer à se familiariser. ^^

Ouvrir le Script Editor

Il y a plusieurs façons d’ouvrir le Script Editor. La plus évidente est de cliquer sur l’icône à droite de la sortie de la ligne de commande :

Icone du Script Editor de Maya
Une icône explicite ! :-°

Mais vous pouvez aussi l’ouvrir depuis le menu principal :

Ouvrir le Script Editor depuis le menu.

Ou bien encore de convertir un panel :

Ouvrir le Script Editor dans le panel courant

Rapide présentation

Quelle que soit la façon dont vous avez ouvert le Script Editor, vous devriez vous retrouver face à quelque chose qui ressemble à ça :

Le Script Editor de Maya
Le Script Editor de Maya ! :pirate:
  • Tout en haut vous avez le menu (File, Edit, History, Help).
  • Juste en dessous, toutes les icônes, c’est la barre d’outils (toolbar en anglais). Elle contient les entrées du menu les plus souvent utilisées.
  • Viens le premier bloc qu’on appelle la sortie (output en anglais), c’est ici que tout ce qui sortira de votre code (les appels à print entre autres), sera affiché.
  • Le second (et dernier) bloc contient des onglets suivant le type de code que vous écrivez. Vous vous en doutez, on va utiliser Python. :P Le « + » à droite permet de créer un nouvel onglet.

Un mot sur la sortie

Avant d’entamer ce chapitre un peu indigeste et sans intérêt pratique immédiat, je vais essayer de vous faire saliver un peu.:diable: Créez une sphère :

Créer une polySphere dans Maya
Créer une polySphere dans Maya.

Je vous expliquerai au prochain chapitre comment faire ça en script ! :P

Cliquez dessus, déplacez-la, tournez-la, changez ses attributs.

La sortie devrait vous afficher quelque chose comme ça :

move -r -3.235522 6.06181 -1.310835 ;
rotate -r -os -fo 15.868418 -21.480475 5.314154 ;
scale -r 0.729335 0.729335 0.729335 ;
setAttr "pSphere1.rotateX" 7234;
setAttr "pSphere1.rotateX" 44;
setAttr "pSphere1.visibility" 0;
select -cl  ;
select -r pSphere1 ;

Ouah ! Tout ce que je fais dans l’interface est affiché dans la sortie ! Comment je peux récupérer ça et en faire un script ? o_O

Eh bien nous verrons ça plus tard ! :-°

Pour l’instant, on va se concentrer sur ce que propose le Script Editor.

Les menus et icônes

Nous allons rapidement passer en revue les menus du Script Editor. Notez que certains de ces menus disposent d’une icône permettant un accès plus rapide. Vous pouvez vous amuser à les retrouver. :-°

File

Maya script editor file menu
  • Load script : charge le contenu d’un fichier texte dans l’onglet courant.
  • Source script : exécute le contenu d’un fichier texte.
  • Save script : sauvegarde le texte sélectionné dans un fichier texte.
  • Save script to shelf : ajoute un bouton au shelf courant exécutant le texte sélectionné. Vous allez voir qu’il y a une manière beaucoup plus classe de le faire. :soleil:

Edit

Maya script editor edit menu

Je ne vais pas tous les faire, ce sont les fonctions classiques d’un éditeur de texte. Seules les trois dernières sont assez spécifiques a Maya.

  • Clear History : vide le contenu de la sortie. On l’utilise souvent quand on exécute un code complexe, qui imprime beaucoup de choses et qu’on souhaite pouvoir relire la sortie.
  • Clear Input : vide le contenu de l’onglet courant. C’est beaucoup plus rare.
  • Clear All : vide le contenu de la sortie et de l’onglet courant. C’est encore plus rare. :D

History

Maya script editor history menu
  • Batch render messages : affiche les messages de rendu en batch.
  • Echo all commands : affiche toutes les commandes. Par exemple, si vous faites Create/Polygon Primitives/Sphere, la commande MEL correspondante (ici, polySphere) s’affichera dans la fenêtre de sortie. On n’active cette option que sporadiquement, sur une seule commande pour essayer de deviner ce que fait l’interface pour nous. Essayez pour voir. ^^
  • Line numbers in errors : affiche les numéros de la ligne incriminée dans les messages d’erreur. Je vous conseille d’activer cette option pour déboguer plus rapidement un crash dans vos scripts.
  • Show stack trace : c’est l’option à activer de toute urgence. Quand Python crashe, il peut vous donner la « pile d’exécution » (c.-a-d. « quelle fonction appelle quelle fonction appelle quelle fonction »). C’est vraiment pratique quand un script complexe crashe. Ne vous inquiétez pas, vous aurez tout le plaisir de vous rendre compte de son utilité durant votre apprentissage. :P
  • Suppress … : je ne vais pas tous les détailler. Le principe est d’alléger la fenêtre de sortie en masquant des messages dont on n’aurait pas besoin.

Command

Maya script editor command menu

Ce menu concerne les onglets ainsi que le bloc d’édition de texte. Beaucoup de ces options sont une affaire de goût. Je vous les présente ici, mais je vous invite a les essayer durant votre apprentissage pour savoir lesquelles correspondent le mieux à votre style.

  • New Tab : crée un nouvel onglet. Une petite fenêtre s’ouvre alors pour vous demander si vous souhaitez créer un onglet en MEL ou en Python. Notez que vous pouvez également créer un nouvel onglet en cliquant sur le bouton + à droite des onglets déjà présents ou, si vous voulez faire comme les pros, via le raccourci clavier Ctrl+T.
  • Rename Tab : comme son nom l’indique, sert à renommer l’onglet courant.
  • Select Tab : un magnifique menu qui vous propose de passer à l’onglet précédant via Previous et à l’onglet suivant via Next. >_<  Sachez que vous pouvez en faire de même en manipulant la molette de votre souris sur les onglets. C’est quand même beaucoup plus pratique. :lol:
  • Delete Tab : pour supprimer l’onglet courant.
  • Show line numbers : affiche les numéros des lignes à gauche du bloc de texte.
  • Use tabs for indent : utilise des tabulations pour l’indentation. Quand vous appuierez sur la touche Tab de votre clavier, un caractère de tabulation sera créé plutôt que des espaces. Moi, je n’aime pas les tabulations alors je la désactive. :pirate:
  • Auto-close braces : ferme automatiquement les accolades ({ et }) quand vous écrivez du code. Python n’utilisant pas les accolades, le problème est réglé. :lol: .
  • Command Completion : permet l’auto-complétion du nom des commandes. Si vous avez activé Show Tooltip Help, le nom des commandes apparaît en même temps que vous les tapez. Sinon, il vous faut faire Ctrl+Barre d’espace pour les faire apparaître.
  • Object Path Completion : permet l’auto-complétion du nom des objets. Fonctionne de la même façon que Command Completion.
  • Show Tooltip Help : affiche automatiquement la fenêtre l’auto-complétion quand vous tapez.
Script Editor Maya Exemple d’auto-complétion
Exemple d’auto-complétion.
Script Editor Maya Exemple d’aide
Exemple d’aide.
  • Show Quick Help : affiche un petit panel d’accès rapide à la liste des arguments d’une commande. On peut double-cliquer sur les arguments et il les écrit dans l’éditeur de texte. Ce n’est toutefois pas très pratique.
Script Editor Maya Quick Help en action !
Quick Help en action !
  • Execute : comme vous vous en doutez, permet d’exécuter le contenu de l’éditeur de texte. Je lui préfère la touche Entrée du pavé numérique (ou Ctrl+Entrée du clavier « normal »).

Help

Script Editor Maya help menu

Ce menu se passe de commentaires. :-°

Pensez à bien activer History/Show Stack Trace.

Import du module Maya

C’est bientôt la fin de ce chapitre et je voudrais vous parler d’un truc. :)

Vous le remarquerez rapidement : partout dans la documentation, le module responsable de l’exécution des commandes maya est appelé sous la forme :

import maya.cmds as cmds

cmds.maCommande()

J’utilise toutefois cette approche, plus courte :

import maya.cmds as mc

mc.maCommande()

Pour éviter d’avoir à taper la ligne d’import à chaque ouverture de Maya, je vous invite à créer un fichier texte nommé userSetup.py :

  • Sous Windows : C:\Users\<user>\Documents\maya\scripts\userSetup.py
  • Sous Linux : ~/maya/scripts/userSetup.py
  • Sous Mac : /users/<user>/Library/Preferences/Autodesk/maya/2018/scripts/userSetup.py

Et d’y mettre :

import maya.cmds as mc

Le fichier userSetup.py est chargé au démarrage de Maya.

Ainsi vous n’aurez plus à importer le module à chaque ouverture.

À partir de maintenant, je partirai du principe que le module Maya est déjà chargé dans votre session et j’appellerai toutes mes commandes via l’espace de nom mc. :)


J’ai bien conscience que ce chapitre était assez lourd à digérer, mais le Script Editor étant votre principal outil pour ce tutoriel, il me semblait important de faire le tour de ce qu’il permettait. :)

Je vous invite à garder cette page sous le coude si vous avez un doute et à tester différentes options.

Nous allons maintenant rentrer dans le vif du sujet, vous allez maintenant apprendre à voir une scène comme un script la voit. :ninja:

Rendez-vous au prochain chapitre ! :D