De nombreux exemples de cette section sont basés sur des expressions fournies par Dan Ebberts.

Ressources en ligne relatives à des exemples d’expressions

Sur son site Web MotionScript, Dan Ebberts propose des exemples d’expressions et des didacticiels pour apprendre à manier les expressions. Il propose notamment un excellent article traitant de la détection de collision.

Sur son site Web, Colin Braley propose un didacticiel et un projet-type qui expliquent comment utiliser des expressions pour qu’un calque en repousse d’autres naturellement.

Le forum AE Enhancers contient de nombreux exemples et beaucoup d’informations utiles sur les expressions, ainsi que des scripts et des animations prédéfinies. Dans cet article posté sur le forum AE Enhancers, Paul Tuersley propose un didacticiel et un projet-type qui expliquent comment utiliser des expressions pour animer plusieurs calques en essaim.

Sur son site Web, Rick Gerard illustre dans un exemple le roulement d’un objet carré sur un sol en conservant ses faces en contact avec le plan du sol.

Sur le site Web Creative COW, Carl Larsen propose un didacticiel vidéo qui illustre l’utilisation des expressions et du lien de parenté pour lier la rotation d’un train de roues au mouvement horizontal d’un véhicule.

Sur son site Web, Chris Zwar présente un exemple de projet qui permet de disposer automatiquement des images fixes ou des vidéos dans une grille (à l’instar d’un mur vidéo). Vous pouvez régler aisément la position et l’espacement à l’aide de curseurs connectés à un système d’expressions. Le projet comprend trois compositions : une pour les images fixes, une pour les vidéos et une pour créer un story-board automatique dans lequel la vidéo est échantillonnée à des intervalles définis par l’utilisateur et alignée dans une grille.

Le site Web de JJ Gifford présente plusieurs projets-types illustrant l’utilisation des expressions.

Maltaannon (Jerzy Drozda, Jr.) propose sur son site Web un didacticiel vidéo qui explique comment utiliser les expressions pour créer un volumètre à l’aide des résultats de la commande Convertir les données audio en images clés.

Sur son site Web graymachine, Harry Frank explique dans un didacticiel comment lire les données d’un fichier texte externe à l’aide d’expressions.

Exemple d’expression : déplacement d’un calque selon un cercle

Vous pouvez également créer des expressions ne faisant pas appel aux propriétés d’autres calques. Par exemple, vous pouvez déplacer un calque selon un cercle parfait.

  1. Sélectionnez un calque, appuyez sur la touche P pour faire apparaître sa propriété Position dans le panneau Montage et cliquez sur le chronomètre à gauche du nom de la propriété tout en maintenant la touche Alt (Windows) ou Option (Mac OS) enfoncée.
  2. Entrez ce qui suit dans le champ d’expression :
      [(thisComp.width/2), (thisComp.height/2)] + [Math.sin(time)*50, -Math.cos(time)*50]

Exemple d’expression : rotation des aiguilles d’une horloge

Vous pouvez utiliser l’icône de sélection pour lier les valeurs de rotation entre plusieurs calques et animer les aiguilles de l’horloge (lorsque l’aiguille des heures parcourt une heure, l’aiguille des minutes fait un tour complet du cadran). Ce genre d’animation serait très long à mettre en place si vous deviez positionner les images clés des deux calques d’aiguille. Grâce à l’icône de sélection, quelques minutes suffisent.

  1. Importez ou créez deux calques longs et étroits pour l’aiguille des heures et l’aiguille des minutes (voir Calques et métrages de couleur unie.)
  2. Définissez les points d’ancrage aux extrémités des calques (voir Points d’ancrage du calque.)
  3. Déplacez les calques de façon à placer les points d’ancrage au centre de la composition (voir Déplacement de calques dans l’espace.)
  4. Positionnez les images clés de rotation de l’aiguille des heures (voir Définition ou ajout d’images clés).
  5. Sélectionnez la propriété Rotation pour le calque de l’aiguille des minutes et choisissez Animation > Ajouter l’expression.
  6. Faites glisser l’icône de sélection sur la propriété Rotation pour l’aiguille des heures. L’expression suivante est alors proposée :
      thisComp.layer("hour hand").rotation
  7. Pour faire en sorte que l’aiguille des minutes tourne douze fois plus vite que celle des heures, ajoutez *12 à la fin de l’expression, comme indiqué ci-après :
      thisComp.layer("hour hand").rotation*12

Exemple d’expression : placement d’un calque entre deux autres

Cet exemple d’expression positionne et maintient un calque à une distance équivalente de deux autres calques.

  1. Débutez avec trois calques (voir Création de calques).

  2. Animez la position des deux premiers calques dans le panneau Montage (voir Trajectoires).

  3. Sélectionnez le troisième calque, appuyez sur la touche P pour faire apparaître la propriété Position et appuyez sur le bouton du chronomètre à gauche du nom de la propriété tout en maintenant la touche Alt (Windows) ou Option (Mac OS) enfoncée.
  4. Entrez ce qui suit dans le champ d’expression :
      (thisComp.layer(1).position + thisComp.layer(2).position)/2

Exemple d’expression : création d’une traînée d’images

Cet exemple d’expression indique qu’un calque doit rejoindre la position du calque de niveau supérieur dans le panneau Montage après un certain délai (dans ce cas, 0,5 seconde). Des expressions similaires peuvent être conçues pour d’autres propriétés géométriques.

  1. Commencez avec deux calques de couleur unie à une échelle de 30 % environ de la taille de la composition (voir Calques et métrages de couleur unie).
  2. Animez la position du premier calque (voir Trajectoires).
  3. Sélectionnez le deuxième calque, appuyez sur la touche P pour faire apparaître la propriété Position et appuyez sur le bouton du chronomètre à gauche du nom de la propriété, tout en maintenant la touche Alt (Windows) ou Option (Mac OS) enfoncée.
  4. Entrez ce qui suit dans le champ d’expression :
      thisComp.layer(thisLayer, -1).position.valueAtTime(time - .5)
  5. Dupliquez le dernier calque cinq fois en le sélectionnant et en appuyant cinq fois sur Ctrl + D (Windows) ou Commande + D (Mac OS).

Tous les calques suivent la même trajectoire avec un décalage de 0,5 seconde par rapport au précédent.

Sur son site Web MotionScript, Dan Ebberts fournit d’autres exemples et techniques relatifs à la création de traînées d’images.

Exemple d’expression : création d’un renflement entre deux calques

Cet exemple d’expression synchronise le centre de l’effet de renflement d’un calque avec la position d’un autre calque. Vous pouvez par exemple créer l’effet d’une loupe qui se déplace sur un calque, la portion de l’image située en dessous grossissant, par effet de renflement, au fur et à mesure que la loupe (c’est-à-dire le calque situé au-dessus) se déplace. Cette expression utilise la méthode fromWorld qui garantit un bon fonctionnement de l’expression, quels que soient les déplacements du calque loupe (ou du calque situé en dessous). L’expression restera intacte, même si vous effectuez une rotation ou un changement d’échelle sur le calque sous-jacent.

Vous pouvez utiliser d’autres effets avec cette expression (comme l’ondulation).

  1. Débutez avec deux calques, dont l’un pour la loupe (ou objet similaire comportant un trou central) nommé Loupe (voir Création de calques).
  2. Animez la position du calque Loupe (voir Trajectoires).
  3. Appliquez l’effet de renflement à l’autre calque (voir Application d’un effet ou d’une animation prédéfinie.)
  4. Sélectionnez la propriété Centre de l’effet de renflement dans le panneau Montage et choisissez Animation > Ajouter une expression , ou appuyez sur Alt (Windows) ou sur Option (Mac OS) et cliquez sur le bouton chronomètre de la propriété.
  5. Sélectionnez le texte de l’expression proposée par défaut et entrez :
      fromWorld(thisComp.layer("Magnifier").position)

Exemple d’expression : opacité de fondu d’un calque 3D en fonction de la distance de la caméra

  1. Appliquez l’expression suivante à la propriété Opacité d’un calque 3D :
      startFade = 500; // Start fade 500 pixels from camera. 
      endFade = 1500;  // End fade 1500 pixels from camera. 
      try
      { // Check whether there's a camera
          C = thisComp.activeCamera.toWorld([0,0,0]); 
      }
      catch(err)
      { // No camera, so assume 50mm
          w = thisComp.width * thisComp.pixelAspect; 
          z = (w/2)/Math.tan(degreesToRadians(19.799)); 
          C = [0,0,-z]; 
      } 
      P = toWorld(anchorPoint); 
      d = length(C,P); 
      linear(d,startFade,endFade,100,0)

    Le fondu commence à une distance de 500 pixels de la caméra et se termine à 1 500 pixels de la caméra. La méthode d’interpolation linéaire sert à faire correspondre les valeurs de distance avec des valeurs d’opacité.

Exemple d’expression : obtention d’un calque 3D invisible si dos à la caméra

  1. Appliquez l’expression suivante à la propriété Opacité d’un calque 3D :
      if (toCompVec([0, 0, 1])[2] > 0 ) value else 0

Dan Ebberts explique cette expression sur son site Web MotionScript.

Exemple d’expression : basculement du calque à l’horizontale si dos à la caméra

  1. Appliquez l’expression suivante à la propriété Echelle d’un calque 3D :
      if (toCompVec([0, 0, 1])[2] > 0 ) value else [-value[0], value[1], value[2]]

Exemple d’expression : animation de l’échelle à chaque repère de calque

  1. Appliquez l’expression suivante à la propriété Echelle pour faire osciller un calque à chaque repère :
      n = 0; 
      t = 0; 
      if (marker.numKeys > 0){ 
          n = marker.nearestKey(time).index; 
          if (marker.key(n).time > time) n--; 
      } 
      if (n > 0) t = time - marker.key(n).time; 
        
      amp = 15; 
      freq = 5; 
      decay = 3.0; 
        
      angle = freq * 2 * Math.PI * t; 
      scaleFact = (100 + amp * Math.sin(angle) / Math.exp(decay * t)) / 100; 
      [value[0] * scaleFact, value[1] / scaleFact];

Exemple d’expression : lancement ou arrêt du tremblement à un moment déterminé

Vous pouvez utiliser n’importe quelle expression à la place de l’expression wiggle employée ici pour lancer et arrêter l’influence d’une expression à un moment déterminé.

Appliquez l’expression suivante à une propriété pour commencer à la faire osciller au bout de 2 secondes :

timeToStart = 2;
if (time > timeToStart)
{
  wiggle(3,25);
}
else
{
  value;
}

Appliquez l’expression suivante à une propriété pour arrêter de la faire osciller au bout de 4 secondes :

timeToStop = 4;
if (time > timeToStop)
{
  value;
}
else
{
  wiggle(3,25);
}

Appliquez l’expression suivante à une propriété pour commencer à la faire osciller au bout de 2 secondes et arrêter l’oscillation au bout de 4 secondes :

timeToStart = 2;
timeToStop = 4;
if ((time > timeToStart) && (time < timeToStop))
{
  wiggle(3,25);
}
else
{
  value;
}

Exemple d’expression : mise en correspondance du plan focal de la caméra avec un autre calque

  1. Appliquez l’expression suivante à la propriété Distance de mise au point d’un calque de caméra pour que sa distance de mise au point corresponde à la distance jusqu’au point d’ancrage d’un calque appelé « cible » :
      target = thisComp.layer("target"); 
      V1 = target.toWorld(target.anchorPoint) - toWorld([0,0,0]); 
      V2 = toWorldVec([0,0,1]); 
      dot(V1,V2);

Dan Ebberts détaille cet exemple d’expression sur son site Web Motionscript.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne