Création de calque



Comme nous le savons, les calques que l'on crée dans After Effects peuvent être de différente nature : une caméra, une lumière, un solide (un calque d'effets si l'option est cochée) ou encore une composition. Le cas de la composition a été vu dans la partie précédente, penchons nous donc maintenant sur la création d'autres types de calque.

Comme pour la création d'une composition dans un projet, nous n'allons pas directement ajouter un calque à l'objet composition mais plutôt à sa collection de calques, cette collection s'appelle layers.


Création d'un solide


Nous ajouterons un solide grâce à la méthode addSolid(). Cette méthode prend en compte 6 paramètres pour créer un solide : sa couleur, son nom, sa largeur, sa hauteur, les format de ses pixels et sa durée (si la durée n'est pas spécifiée, elle sera par défaut égale à celle de la composition dans laquelle le solide est créé).

En supposant que nous ayons déjà créé une composition et qu'elle est active (fenêtre en surbrillance), nous écrirons par exemple cela pour la stocker dans une variable :

      myComp = app.project.activeItem;

Nous ajoutons maintenant un nouveau solide nommé "monSolide", de couleur #97BC9E ou [151,188,158] (dans le scripting chaque couleur doit être exprimée sur une échelle de 0 à 1, c'est pourquoi nous allons devoir les diviser par 255), de taille 160*120, avec un format de pixel carré et d'une durée de 10s. Nous stockons ce solide dans une variable "mySolid" :

      mySolid = myComp.layers.addSolid([151/255,188/255,158/255],"monSolide",160,120,1,10);

création d'un solide



Création d'un calque texte


La création d'un calque texte se fera par la méthode addText(). Elle prend en paramètre la chaîne de caractères à afficher. Cette chaîne est facultative, si l'on ne précise rien on crée simplement un calque de texte vide. Il ne semble pas possible par le scripting de choisir sa police ou la taille des caractères par exemple, ceux-ci seront identiques à ceux utilisés dans le projet précédent.

      myTextLayer = myComp.layers.addText("www.nabscripts.com");

création d'un calque texte


Nous mentionnons qu'il est possible d'afficher la date grâce à l'objet Javascript Date(). Il retourne la date correspondant au moment où l'objet a été appelé.

Nous aurons par exemple :

      myDateLayer = myComp.layers.addText(Date());

afficher la date



Création d'une caméra


On pourra ajouter une caméra grâce à la méthode addCamera(). Elle nécessite deux paramètres pour fonctionner : le premier est le nom à attribuer au calque et le deuxième correspond aux coordonnées du "Point ciblé" de la caméra (x et y uniquement) qu'on exprimera sous forme d'un tableau contenant ces deux valeurs.

Nous écrirons par exemple :

      myCamera = myComp.layers.addCamera("maCaméra",[160,120]);

création d'une caméra



Création d'une lumière


D'une façon similaire on utilisera la méthode addLight() pour créer une nouvelle lumière. Cette méthode nécessite les mêmes paramètres qu'une caméra.

      myLight = myComp.layers.addLight("maLumière",[160,120]);

création d'une lumière



Création d'un objet nul


La création d'un objet nul se fera par l'intermédiaire de la méthode addNull() qui prend en paramètre la durée en secondes du calque. Ce paramètre est facultatif.

      myNull = myComp.layers.addNull(10);

création d'un nul



Précomposition de calques


Nous terminerons cette partie par la méthode precompose(), qui comme son nom l'indique va nous permettre de précomposer un ensemble de calques. Elle agit également sur la collection "layers". Elle prend en paramètres un tableau d'indices (ceux des calques à précomposer), le nom de la composition qui va être créée et éventuellement une indication 'true' ou 'false' pour indiquer l'option "Transférer tous les attributs..." ou non (celle-ci est 'true' par défaut).

Prenons un exemple, supposons que nous ayons un ensemble de calques dans notre composition,

calques avant précomposition


et que nous voulions précomposer tous les calques ayant un numéro impair et ne pas toucher aux autres. Nous pourrions alors écrire quelque chose comme cela : la première instruction sert à déclarer un nouveau tableau et "myComp.numLayers" représente le nombre de calques dans la composition; notre tableau d'indices va être rempli au fur et à mesure et sa taille "length" va augmenter dès lors que "i" sera impair (i.e. dont la valeur modulo 2 est égale à 1)

      layerIndices = new Array();
      for(i = 1; i <= myComp.numLayers; i++) {
         if (i%2 == 1) layerIndices[layerIndices.length] = i;
      }
      myComp.layers.precompose(layerIndices,"maPrécomp",true)


précomposition des calques d'indice impair