Scripting & codage

Sommaire



  • Introduction
  • Pourquoi parler de scripting et de codage ?

    Vous êtes peut-être ici seulement pour le côté artistique et vous avez raison.

    Vous vous dites qu’en principe un artiste ne devrait se concentrer que sur son art et créer des choses pour lesquelles il s’est formé auprès d’un maître ou en autodidacte.

    Cependant, si vous vous arrêtez là, c’est que vous n’êtes pas allé(e) assez loin dans l’histoire de l’art. Vous ne vous êtes pas assez intéressé(e) à la vie et aux œuvres des artistes qui ont fait l’Histoire.

    Avant d’êtres les grands artistes qu’ils ont été, Dali, Rembrandt, Picasso, Matisse, Van Gogh… ont d’abord maîtrisé les techniques académiques et méthodes classiques.

    Au bout d’un cursus artistique, on devient un spécialiste qui reproduit à la lettre ce qu’on nous a appris ou alors un chercheur qui expérimente de nouvelles techniques. Ce qui est commun à tout cela c’est qu’il faut utiliser des matières, des outils ou des méthodes adaptés à son temps.

    Nous sommes alors passés de la terre pigmentée projetée sur les parois d’une grotte à des dessins à l’encre sur papyrus, en passant par la peinture à l’huile sur des cadres pour arriver à des pixels sur des écrans. Ces techniques ont évoluées et nous nous sommes adaptées. Mais le scripting et le codage dans tout ça ? A quoi ça sert ?

    Spoiler : ça sert à être plus productif !

  • Définition
  • Souvent on parle des termes suivants : script, code, programme, plugin, macro… Mais qu’est-ce que c’est que tout ça ?

    On s’y perd encore plus.

    Je vais tenter de vous donner des définitions simples avec les différences. Je n’entrerai pas dans les explications complexes pour les débutant avec les assembleurs, les compilateurs, les méthodes de traitement monothreading/multithreading… sinon je vais en perdre beaucoup, si ce n’est pas déjà fait.

    • Source
    • Parfois appelé listing, code source, suite d’instructions… c’est le contenu d’un programme, c’est ce qu’on édite et qu’on peut lire dans un éditeur de langage informatique dédié.

    • Programme
    • C’est un mot qui existe depuis le début de l’informatique. En anglais, on l’appelle abusivement « code » car le principe est de traduire des instructions humaines en instructions compréhensibles par l’ordinateur, donc coder des idées humaines en 0 et en 1.

      Un programme est une suite d’instructions organisées selon une syntaxe et une méthode de gestion propre à chaque langage de programmation. Une fois que le fonctionnement est testé et validé, le programme subit un processus de traitement qui le transforme en fichier autonome. Il est alors indépendant et capable de s’exécuter seul, on dit qu’il est exécutable.

      Au final, un programme est un fichier informatique autonome qui remplit une ou plusieurs tâches. Il se décline en 2 catégories principales : logiciel et application. Ex : mspaint est une application d’édition d’images, Maya est un logiciel de création 3D.

    • Code
    • C’est un mot et un anglicisme mais qui correspond bien avec l’idée de codage, c’est la même chose qu’une source. Il est plus utilisé par les geeks/nerds passionnés de programmation car c’est plus cool.

    • Script
    • Un script est une suite d’instructions gérée par un interpréteur intégré à un logiciel. Le script peut être sauvegardé au format texte ou un format propriétaire, mais ne peut pas être exécuté en dehors d’un interpréteur.

      Avec Maya ou 3DS Max, nous avons la possibilité d’utiliser respectivement Melscript ou Maxscript afin d’exécuter des instructions autant de fois qu’il le faut. Les langages utilisées sont propres à chaque logiciel mais il existe une base commune : le langage Python.

    • Plugin
    • Un plugin est une extension qui se rajoute à un logiciel afin d’ajouter des commandes ou des outils supplémentaires. Le plus souvent, c’est une interface graphique qui cache un script avec une suite d’instructions gérée par un interpréteur intégré à un logiciel. Le scripteur doit alors connaître les instructions gérant les interactions graphiques, clavier, souris et écran.

    • Macro
    • Macro vient du mot macro, c’est également le diminutif du mot macro-programmation. Pour résumer c’est une suite d’instructions comme pour les cas précédents. Cependant, la particularité est qu’un outil est dédié à l’enregistrement des actions réalisées par l’utilisateur. Cette suite d’actions possède alors un début, un corps et une fin qu’il sera possible de répéter autant de fois que désiré.

      Il n’est donc pas nécessaire de connaître un langage de programmation. Toutefois, les programmeurs peuvent intervenir directement dans la macro afin de la modifier selon les outils disponibles.


    Pour résumer, ce qui est commun à tous ces termes c’est qu’il faut connaître un langage de programmation afin de structurer les instructions.

    Les macros permettent de s’affranchir de cela. Le tout devra être organiser selon des règles et une logique stricte au risque d’expérimenter le plantage du script, de mauvaises actions ou le crash du PC. Il faut donc effectuer des sauvegardes régulièrement mais ça… vous le savez déjà.

  • A quoi ça sert ?
  • Le scripting ou le codage servent à augmenter la productivité et à faciliter certains processus en 3D.

    C’est un peu le pressoir de l’imprimerie de Gutenberg, la peinture au pochoir multicouches, l’imprimante couleur ou un robot qui répète la même tâche infiniment, inlassablement et rapidement.

    Bref, c’est un gain de temps qu’il ne faut pas sous-estimer mais qu’il faut bien calculer. En effet, le temps qu’on passe à concevoir un script ou un code peut nous en faire gagner beaucoup sur le long terme. Mais pour un projet court ce n’est pas forcément le cas.

    Un script permet de gagner du temps afin de réaliser une tâche répétitive ou pour assister à la conception d’un système.

    Afin d’y parvenir il faudra des compétences plus ou moins élevées en math, calcul spatial, physique… Il s’applique quasiment dans toutes les disciplines : modeling, texturing, rigging/skinning, animation, lighting, rendering…

  • Exemples
    • 3DS Max / Créer 100 cubes d’un coup

      for i=1 to 100 do (
       xpos = random -200 200
       ypos = random -200 200
       zpos = random -200 200
       Box pos:[xpos,ypos,zpos]
       )

    • Maya / Appliquer une couleur à une spline sans passer par plusieurs sous-sections

      string $array[] = `ls -sl`;
      for ($item in $array)
      {
        setAttr ($item + « .overrideEnabled ») 1;
        setAttr ($item + « .ovc ») 17;
      }


  • Comment élaborer un script ?
  • Scripter demande un effort d’apprentissage d’une nouvelle langue. En effet, la programmation requiert de connaître des règles de syntaxe afin de faire comprendre ce qu’on veut lui faire réaliser.

    Mais avant ça, il est conseillé d’apprendre l’algorithmique.

    C’est une méthode permettant de préparer la programmation en structurant nos idées avec des mots humains. L’avantage est qu’on comprend mieux la suite d’instructions et la logique. L’énorme bénéfice est qu’on peut ensuite adapter l’algorithme pour n’importe quel langage.

    • Exemple d’algorithmique basée sur la création de 100 cubes d’un coup :

      Pour i allant de 1 à 100 faire
      affecter à xpos un nombre aléatoire entre -200 et 200
      affecter à ypos un nombre aléatoire entre -200 et 200
      affecter à zpos un nombre aléatoire entre -200 et 200
      créer une boîte de dimension classique à la position x égale à xpos, y égale à ypos, z égale à zpos


    Nous n’irons pas plus loin dans les explications à ce stade car ce n’est pas le but. La programmation fait partie d’un cursus spécialisé et n’est pas accessible à tout le monde même si on vous le fait croire.

  • Faut-il des prérequis pour scripter ?
  • Contrairement à la plupart des personnes qui vous diraient que scripter, coder ou programmer est à la portée de tout le monde. Je vais aborder le problème d’une autre manière.

    Si vous souhaitez être indispensable, être à des postes importants et stratégiques à haute technicité, il faut savoir scripter. Vous permettrez à vos équipes d’être plus productives.

    Pour répondre clairement, je vous conseille fortement d’avoir des prérequis ou alors d’être très curieux et volontaire. Donc, il faut des prérequis, oui, oui et oui !!! Voici une liste non exhaustive :

    • Un bon esprit logique, d’analyse et de synthèse
      La logique afin de bien structurer vos instructions et les mécanismes qui seront mis en place. Par exemple, pour ouvrir une porte il faut tout décomposer : on sort la clé, on met la clé dans la serrure, on tourne la clé jusqu’à ce que le mécanisme soit ouvert, on retire la clé, on saisit la poignée, on tourne la poignée jusqu’à ce que le mécanisme ne bloque plus la porte, on tire la porte, est-ce qu’elle s’ouvre ? Oui alors on l’ouvre en entier sinon on pousse la porte, on l’ouvre bien en entier et on passe.

      L’analyse c’est regarder, décrire, comprendre et faire une liste des observations.

      La synthèse c’est faire un rapport et classer la liste des observations en plusieurs catégories afin d’en retirer les avantages, les inconvénients et les inconnus d’un système.

    • Mémoriser les algorithmes de base
      • Les algorithmes de tris
      • Les algorithmes de recherches
      • Les algorithmes de tracés
      • Etc…

    • Les mathématiques et la physique
      Ce seront des alliés importants pour ceux qui veulent scripter en 3D. Il est difficile de contourner ces 2 matières si vous voulez effectuer des scripts ou plugins en 3D. Calculs vectoriels, formules physiques, matrices, sinus, cosinus, tangentes… seront de la partie.

    • Les logiciels et le matériel informatique
      Vous devez vous intéresser à l’informatique en général. La programmation est parfois intimement liée aux bibliothèques Windows ou au matériel afin d’accéder à des registres ou des fonctions spécifiques.

    • La curiosité et la proactivité = autonomie
      Vous devrez être autonome afin d’apprendre beaucoup de choses par vous même et partager vos connaissances avec d’autres personnes. Les formateurs vous montreront les portes et l’ouvreront avec vous pour vous expliquez ce qu’il y a derrière. C’est à vous de la franchir et d’aller explorer en expérimentant ce qui se trouve derrière.

  • Conclusion
  • Les scripting ou le codage est donc un outil intéressant ayant des avantages et des inconvénients.

    Inconvénients Avantages
    • C’est comme apprendre une nouvelle langue
    • Le temps d’apprentissage peut-être long selon vos capacités et votre motivation
    • Connaître les méthodes qui existent déjà
    • Le temps de développement peut-être long selon la complexité des besoins
    • Se former et s’adapter au fonctionnement du script
    • Se tenir au courant des nouvelles technologies
    • Effectuer la maintenance afin de conserver la compatibilité lors de mises à jour majeures
    • Un gain de temps remarquable la plupart du temps
    • Plus de productivité