1 – programmation avec After Effects #################################### Scripts et Expressions ********************** Deux approches de la programmation sont accessible dans After Effects. Les expressions et les scripts. * Les expressions sont associées à des propriétés de calques et évaluées lors du rendu. * Les scripts sont des fichiers externes (.jsx) qui sont évalués à l'exécution du script. Si ces deux modes de programmation se basent sur le même langage de programmation (JavaScript), on peut noter qu'ils ne s'exécutent pas dans le même environnement. Ils existent donc de nombreuses différences dans les objets et fonctions accessibles d'un mode de programmation à l'autre. historique des expressions et outils de scripting dans After Effects ******************************************************************** Si les expressions apparaissent en 2001 dans la version 5 d'After Effects, le scripting apparaît quand à lui dans la version 6, en 2003. On peut, depuis cette date, tracer les avancées du scripting dans After Effects : .. list-table:: :widths: 1 1 8 :header-rows: 1 :stub-columns: 2 * - date - version - avancée * - 2001 - 5.0 - apparition des expressions * - 2003 - 6.0 - apparition du scripting * - 2006 - 7.0 - éditeur de script ExtendScript Toolkit 1 * - ~ 2007 ? - CS3 - éditeur de script ExtendScript Toolkit 2 * - 2007 - CS3 - | `After Effects CS3 Scripting Guide `_ | `Adobe introduction to scripting `_ * - ~ 2008 ? - CS4 - éditeur de script ExtendScript Toolkit 3 * - 2010 - CS5 - | éditeur de script ExtendScript Toolkit 3.5 | `JavaScript tools guide `_ * - 2012 - CS6 - `After Effects CS6 Scripting Guide `_ * - ? - CC - éditeur de script ExtendScript Toolkit CC * - 2014 - CC 2014.1 (13.1) - amélioration des possibilités de scriptage des calques textes * - 2014 - CC 2014.2 (13.2) - amélioration des possibilités de scriptage des calques textes * - 2017 - CC 2017 (14.0) - amélioration des possibilités de scriptage * - 18 octobre 2017 - CC (15.0) - import JSON / accès aux points des chemins via les expressions * - 3 avril 2018 - CC (15.1) - import de fichiers CSV et TSV * - 15 octobre 2018 - CC (16.0) - nouveau moteur JavaScript pour les expressions Remarques ========= On peut remarquer que le moteur JavaScript utilisé pour les expressions à été mis à jour en octobre 2018. Toutefois, concernant les scripts, After Effects utilise encore JavaScript en version 3. La version 3 de JavaScript date de 1999. Et le dernier guide de scripting date de 2012. Autre élément que l'on va voir par la suite, l'éditeur de script d'Adobe est aujourd'hui classé « application ancienne » et n'apparaît plus par défaut dans les applications Adobe CC. Si les expressions et scripts dans After évoluent et semblent avoir bénéficiées de mise à jour récentes, on ne peut pas dire que la situation soit très claire, et pourrait être amenée à évoluer prochainement. (Comment ? Je ne saurais dire.) sources de documentation ************************ * Scripts * Adobe introduction to scripting - `PDF `_ * JavaScript tools guide - `PDF `_, `WEB `_ * After Effects CS6 Scripting Guide - `PDF `_, `WEB `_ * adobe.com : `scripts `_ * Expressions * adobe.com : `Principes de base des expressions `_ * adobe.com - `Exemples d’expressions `_ * adobe.com : `Référence au langage d’expression `_ outil : ExtendScript Toolkit **************************** Depuis la versiion 7 d'After Effects (2006) est fourni un outil d'édition de scripts : le logiciel adobe ExtendScript Toolkit. Celui-ci a connu plusieurs versions, mais est actuellement relégué par Adobe au rang d'« application ancienne ». installation ============ *Se référer à la documentation relative* : :ref:`_ressource-estoolkit`. interface de l'ExtendScript Toolkit ----------------------------------- 1. barre de menu 2. zone d'édition du script 1. onglets 2. liste déroulante du logiciel visé 3. ? 4. boutons de contrôle de l'exécution 3. panneaux 1. console JavaScript (permet de faire du debug) 2. scripts (permet d'accéder aux dossiers de scripts des logiciels Adobe) 3. points d'arrêt (*breakpoints*) : outil de debug 4. pile d'appels (*call stack*) : outil de debug 5. navigateur de données (*data browser*) : affiche le contenu de l'objet global $ et permet de naviguer dedans 6. fonctions (*functions*) Autre élément intéressant : dans le menu « Aide », ouvrez l'« outil de visualisation d'object model ». exercice 1 : commencer à manipuler les outils à notre disposition ***************************************************************** exercice 1, étape 1 : documentation en ligne ============================================ Rendez-vous sur `la version en ligne `_ du document « After Effects CS6 Scripting Guide » et prenez quelques minutes pour parcourir un peu ce document. .. note:: Observez comment le document est divisé grâce au menu de gauche, et parcourez une ou deux pages. exercice 1, étape 2 : environnement de travail ============================================== Rendez-vous au chapitre « The After Effects Object Model » et observez le schéma de l'environnement accessible. Essayer, en vous aidant du navigateur de données, de reparcourir l'arbre de « application » à « item(s) ». exercice 1, étape 3 : quelques réserves sur la documentation ============================================================ Rendez-vous au chapitre « Elements of basic JavaScript relevant to After Effects scripting ». Que signifie ce titre ? Cherchez-y une référence au composant du langage JavaScript qu'est *`Math `_*. Le trouvez-vous ?. Maintenant, dans l'ESTK (*ExtendScript Toolkit*), utilisez le navigateur de données pour faire la même vérification. Ensuite, Refaites la recherche après avoir activé, dans le menu contextuel, l'affichage des « éléments JavaScript principaux ». exercice 1, étape 4 : fonctions globales ======================================== Rendez-vous au chapitre « Global functions » et observez les fonctions globales auxquelles vous pouvez accéder. .. note:: Les fonctions globales sont les fonctions directement contenues dans l'objet global, c'est à dire accessibles de partout exercice 1, étape 5 : utiliser la console ========================================= Intéressez-vous aux fonctions *write* et *writeln*. Retrouvez-les dans le navigateur de données. Dans la documentation observez les informations indiquées, et tentez d'utiliser ces fonctions. exercice 1, étape 6 : variables et persistance de l'environnement ================================================================= 1. Essayer d'imprimer dans la console la valeur d'une variable que vous n'avez pas déclarée. Que se passe-t'il ? 2. Maintenant, ajoutez une ligne contenant la déclaration et l'initialisation de la variable précédente. Que se passe-t-il ? 3. Retirez maintenant la ligne ajoutée en **2**. Que se passe-t-il ? Que peut-on en déduire ? exercice 1, étape 7 : rappels ============================= .. code-block:: javascript // je déclare un tableau d'éléments var ma_phrase = ['un', 'petit', 'exercice', 'pour', 'se', 'dérouiller']; // je déclare une fonction function afficher_phrase ( phrase ) { /* j'indique ce que la fonction fait */ // on boucle sur notre tableau for (var i = 0; i < phrase.length; i++) { // on affiche élément par élément dans le console, // suivi d'une espace $.writeln( phrase[i] + " " ); } } // exécution de la fonction avec notre tableau en paramètre afficher_phrase( ma_phrase ); exercice 1, étape 8 : créer un script pour créer une structure de projet ======================================================================== Demande : créer un script qui créé une structure de projet dans After Effects. Lorsque le script est exécuté, il créé la structure de dossiers et compositions suivante : Dans le dossier racine : * un dossier « metrages » contenant : * un sous-dossier « videos » * un sous-dossier « vecteurs » * un sous-dossier « bitmaps » * un sous-dossier « autres » * un dossier « donnees » * un dossier « compositions » * un dossier « export », contenant : * une composition nommée « SD », 1280 par 720, 25 ips * une composition nommée « HD », 1920 par 1080, 50 ips Utilisez les couleurs de label. Pour réaliser cet exercice, il va vous falloir rechercher dans `la documentation `_ : * quel élément de l'« Object modèle » correspond au projet ? * quel sous-élément du projet correspond à la structure de fichiers ? * quelles méthodes de la structure de fichiers permettent de créer de nouveaux dossiers ou compositions ? * quelle méthode de l'objet Item permet de modifier le dossier parent d'un élément ? * Comment modifier la couleur de label d'un élément. Procédez par étape : 1. déterminez comment créer programmatiquement un dossier 2. déterminez comment créer programmatiquement une composition 2. déterminez comment mettre programmatiquement un dossier créé dans un autre dossier 2. déterminez comment modifier programmatiquement le label d'un élément exercice 1, étape 9 =================== Une fois votre script terminé, enregistrez-le en .jsx, et placez-le dans le dossier permettant à celui-ci d'apparaître dans « Fichiers → Scripts ». (`Voir ici la documentation indiquant ou placer vos .jsx `_)