Graphiques animés de niveau mondial dans After Effects : le processus
Suivez les bases partagées, puis le mode approprié, et terminez par l'assurance qualité et la livraison :
- Partie A – Connexion à After Effects. Établissez un contrôle fiable de votre propre instance AE.
- Partie B – Règles qui s'appliquent toujours. Lisez les règles d'animation et de modification partagées avant de construire.
- Partie C – Processus RECREATE. Reproduisez une référence par analyse, mesure et comparaison.
- Partie D – Processus CREATE. Développez un film original par recherche, concept, histoire et construction.
- Partie E – Finition. Vérifiez le rendu final et préparez les livrables demandés.
Modes de travail
| Mode | Objectif | Comment ça commence |
|---|---|---|
| RECREATE | Reproduire une vidéo de référence 1:1 en termes de timing, disposition, mouvement et apparence, reconstruit de manière native. | Analyser et mesurer la référence ; elle définit l'histoire. |
| CREATE | Créer un film original pour une marque ou un produit. | Recherche, concept, histoire et moodboard, suivis de la construction. |
Partie A – Connexion à After Effects
L'objectif est une instance After Effects privée, fiable, scriptable qu'aucun autre agent ne peut perturber, et que vous pouvez piloter sans toucher à l'interface graphique.
A1. Lancez votre propre instance
- Enregistrez les PIDs des AE en cours d'exécution :
pgrep -f "Contents/MacOS/After Effects". - Lancez une nouvelle instance :
Un petit lanceur Swift (open -n "/Applications/Adobe After Effects 2026/Adobe After Effects 2026.app" --args -mNSWorkspace.openApplicationaveccreatesNewApplicationInstance=trueet les arguments-m -ApplePersistenceIgnoreState YES) peut faire la même chose et renvoyer le PID directement.- Ne pas démarrer le binaire brut via
subprocess.Popen. Ce processus n'est pas enregistré dans le bundle et ne peut pas recevoir d'AppleEvents.
- Ne pas démarrer le binaire brut via
- Différenciez les listes de PIDs et conservez le nouveau PID pour les commandes suivantes.
- AE peut se relancer sous un nouveau PID après le démarrage. Prenez le PID qui possède la fenêtre principale "Adobe After Effects" (Quartz
CGWindowListCopyWindowInfo). - L'ID du bundle est
com.adobe.AfterEffects.application.
- AE peut se relancer sous un nouveau PID après le démarrage. Prenez le PID qui possède la fenêtre principale "Adobe After Effects" (Quartz
- Fermez les boîtes de dialogue de démarrage (Crash Repair → Continue). Une fenêtre de connexion Adobe dans ces instances est un problème d'affichage connu : ignorez-la, ne saisissez jamais d'identifiants et ne remontez pas le problème à l'utilisateur.
ensure_ae.pyautomatise tout cela : il relance l'instance lorsque le PID est mort, confirme les petites boîtes de dialogue, détecte le PID relancé, et rouvre le projet.
A2. Communiquez avec elle uniquement par PID
tell application "Adobe After Effects 2026"cible n'importe quelle instance, y compris celles des autres agents. Ne l'utilisez jamais.aedo(Swift) envoie l'AppleEventmisc/dosc(DoScript) à un seul PID.ae.py script.jsxouae.py -e "code"encapsule chaque script :- inclut le polyfill ES3 JSON (
json.jsx); - appelle
app.beginSuppressDialogs(); - exécute
$.evalFiledans un bloc try/catch; - écrit
{ok, value, error, line, file, ms}dans un fichier de résultat. Les valeurs de retour des AppleEvents sont peu fiables, lisez donc toujours le fichier.
- inclut le polyfill ES3 JSON (
- Garde d'identité du projet : avant tout script modifiant, vérifiez le PID cible et
app.project.filepar rapport au projet en cours d'édition. Ne fermez ni ne quittez jamais une instance que vous n'avez pas vérifiée comme étant la vôtre. - Exécutez un script AE à la fois. Les scripts ne sont souvent pas idempotents, donc sauvegardez ou enregistrez sous avant les modifications en masse.
A3. Vérification de l'état avant le travail réel
Avec un seul script, lisez :
app.versionet si le projet est le vôtre;- le moteur de rendu de la composition (
ADBE Advanced 3dest nécessaire pour les calques de modèle 3D et les lumières d'environnement); - les polices :
app.fonts.getFontsByPostScriptName(name).lengthdoit être supérieur à 0 pour chaque police que vous prévoyez d'utiliser; - qu'un
saveFrameToPngde test apparaît sur le disque.
Définissez également la préférence qui permet aux scripts d'écrire des fichiers et d'accéder au réseau (Pref_SCRIPTING_FILE_NETWORK_SECURITY).
A4. Le pipeline de construction : données → projet natif
Utilisez les assistants de construction disponibles ou implémentez des équivalents ; les noms des assistants ci-dessous décrivent leurs rôles.
-
Python décrit le film sous forme de données. Un DSL
kit.pyfournit :K()des clés éparses avec des easings nommés;shape,text,precomp,null,camera,model,L(calques);- effets par matchName, masques, caches de piste, expressions, marqueurs, notes, étiquettes.
Combinez les spécifications de scène en une seule spécification de construction.
-
kit.jsxconstruit les calques natifs à partir de la spécification.- Il crée les calques de bas en haut, donc ils sont déjà dans l'ordre final. Évitez le réordonnancement en masse avec
moveTo, qui peut bloquer AE. - Ensuite, il applique le parentage, les effets, les masques, les transformations, les easings, les caches et le câblage des lumières d'environnement.
- Il crée les calques de bas en haut, donc ils sont déjà dans l'ordre final. Évitez le réordonnancement en masse avec
-
build.py spec.json --new --only "A|B" --stills "Comp:t1,t2" --save output.aep--newferme le projet actuel sans sauvegarder d'abord (CloseOptions.DO_NOT_SAVE_CHANGES). Sinon,newProject()ouvre une boîte de dialogue "Enregistrer sous" et se bloque.
-
Images fixes :
stills.py "Comp" t1,t2 prefix.saveFrameToPngest asynchrone (interrogez jusqu'à ce que le fichier existe) et écrit des PNG en 16 bits (divisez par 257 pour un affichage 8 bits).
-
Rendus de mouvement ciblés :
render.py "Comp" start end out.mp4 [--half] [--hq], ou aerender avec-s/-e. -
Rendus complets :
aerender_job.py "Comp" out.mp4 [--half] [--hq].- Il sauvegarde une copie du travail et exécute
aerender -project job.aep -rqindex 1 -sound ONdans un processus séparé. - C'est plus rapide que la file d'attente intégrée, et un crash ne peut pas faire tomber l'instance de travail.
- Il sauvegarde une copie du travail et exécute
-
Fiches contacts :
contact.py(images d'une vidéo) etsheet.py(images fixes, conserve les proportions). Réduisez toujours les images avant de les visualiser.
A5. Règles ExtendScript (ES3)
- Pas de
JSONet pas deArray.indexOf: utilisez le polyfill ou des boucles. Lisez le JSON aveceval('('+text+')'). - N'utilisez jamais d'opérateurs ternaires enchaînés (
a?x:b?y:zévalué incorrectement). Utilisez if/else. - Adressez les propriétés par matchName. Les recherches par nom d'affichage ont une limite de 39 octets et sont localisées.
- Une caméra n'est pas
threeDLayer: testezmatchName==='ADBE Camera Layer'. - Normalisez les dimensions des valeurs : transmettez des scalaires aux dimensions séparées et des tableaux de 3 éléments aux propriétés 3D.
shutterPhasedoit être un entier.- Définissez
applyFill=trueavant de définir la couleur de remplissage d'un texte. - Créez un nouveau
TextDocumentpar calque. AppelezresetCharStyle()/resetParagraphStyle()avant de styliser. - Une erreur "property or parent is hidden" signifie que la propriété ne s'applique pas là. Exemple : la rotation Y d'une lumière d'environnement ne peut pas être définie ; animez plutôt sa carte source.
- Les couleurs de remplissage de forme dégradée ne peuvent pas être scriptées. Utilisez un effet Gradient Ramp ou des groupes de lumière superposés.
A6. Coexistence avec d'autres agents
- D'autres agents peuvent quitter AE "par nom", ce qui affecte également votre instance. Sauvegardez souvent et gardez
ensure_ae.pyprêt. - Appuyer sur Échap sur une boîte de dialogue "Enregistrer les modifications ?" déclenchée par une commande quitter fait quitter AE.
- Les outils d'utilisation de l'ordinateur et d'accessibilité peuvent ne voir que les fenêtres d'autres instances. Diagnostiquez vos propres fenêtres avec une liste de fenêtres Quartz filtrée par PID plus
screencapture -l <windowId>. Fermez-les via System Events sur votre PID (code touche 36 = Retour, 53 = Échap). - Divulguez toute interférence accidentelle avec une autre instance AE.
Partie B – Règles qui s'appliquent toujours
Appliquez ces règles dans les deux modes pour que le mouvement soit fluide et le projet modifiable.
B1. Images clés : aussi peu que possible
- Utilisez aussi peu d'images clés que possible pour obtenir un mouvement fluide. Dix clés avec des courbes valent mieux que mille clés plates.
- Un geste nécessite 2 à 4 clés : début, fin, et une vraie pause ou un vrai extrême (pic, creux, changement de phase).
- Limitez chaque propriété à environ 7 à 12 clés. Plus de clés signifie généralement que le mouvement n'est pas conçu.
- Ne figez jamais le mouvement sous forme de clés linéaires par image (ou 2 par image). Un éditeur ne peut pas le modifier, et cela semble mécanique.
- Lorsque le mouvement provient de mesures ou de données héritées, ajustez-le (voir B3). Ne collez jamais d'échantillons.
B2. Courbes : un arc lisse dans le graphique de vitesse
-
Ouvrez le graphique de vitesse de chaque propriété animée.
- Une courbe en cloche ou arc lisse signifie un mouvement fluide.
- Un graphique anguleux, en escalier (chaque clé a un easy ease à zéro) signifie que le mouvement saccade.
- Un pic signifie une secousse, sauf s'il s'agit d'un accent intentionnel.
-
Les clés intérieures d'un seul geste continu ne doivent pas s'arrêter.
- Utilisez des clés Bézier continues.
- Définissez la vitesse intérieure comme la moyenne harmonique des pentes voisines,
2ab/(a+b)lorsque les deux ont le même signe, sinon 0, avec une influence d'environ 33,3. - N'appliquez jamais d'Easy Ease global à un geste continu : cela crée les escaliers.
-
Vocabulaire des easings (influence de sortie de la clé précédente / influence d'entrée de cette clé) :
Nom Influence ease 33/33 smooth 70/70 inout 82/82 out 12/88 expo 6/94 snap 3/97 in 88/12 soft 45/75 Un easy personnalisé est
{'o':[speed,inf],'i':[speed,inf]}. Un léger retrait, par exemple :{'o':[0,55],'i':[0,92]}. -
Les tangentes spatiales sont par défaut à zéro, ce qui évite les dépassements de chemin. Utilisez les arcs uniquement avec un objectif précis.
-
Un mouvement trop court avec un début expo agressif est perçu comme une secousse. Allongez-le (0,5 → 0,8 s) et adoucissez l'easing plutôt que d'ajouter des clés.
-
Superposez les sous-mouvements en un seul geste. Un pliage puis un retournement puis une poussée, effectués séparément, donnent un mouvement stop-and-go. Commencez le mouvement suivant avant la fin du précédent.
B3. Ajustement des courbes à partir de données
Mode recréation, ou lors de la conversion de données denses :
-
Échantillonnez le mouvement cible de manière dense (50–200 Hz) avec
valueAtTimeou à partir de mesures. -
Fixez les nœuds au début et à la fin, aux pauses exactes (vitesse zéro) et aux extrema significatifs (pente nulle sur cet axe).
-
Résolvez les vitesses et les influences par moindres carrés par rapport aux échantillons : vitesses sous contrainte de signe, influences comprises entre 0,04 et 0,94.
-
Ajoutez un nœud uniquement lorsque l'erreur dépasse la tolérance :
Propriété Tolérance Position 2–3 px (caméra 3 px) Échelle 0,4–0,65 Opacité 0,5–2,5 Flou ~1 Rotation 0,4 -
Pour les propriétés vectorielles, fusionnez les temps des nœuds sur tous les axes en divisant la courbe de Bézier (de Casteljau). Assurez-vous que la vitesse entrante est égale à la vitesse sortante à chaque clé intérieure.
-
Conservez tels quels, avec une raison écrite : expressions, time remap, cadence de frappe, commutateurs de pause intentionnels, inversions de visibilité d'une image.
B4. Une seule caméra 3D par scène
-
Chaque scène a une
CAMERA • scene(un nœud,NO_AUTO_ORIENT, X/Y/Z séparés). La caméra porte le cadrage, les panoramiques, les travellings et les zooms. -
N'animez pas la Position/Échelle sur chaque élément pour simuler un mouvement de caméra.
-
Pour déduire une caméra d'un mouvement UI enregistré (position du calque principal
P, échelles, centre de la compositionC, zoomZ0) :camera XY = C + (C − P)/scamera Z = −Z0/s
Ensuite, réexprimez tout ce qui bouge par lui-même en termes locaux.
-
La caméra raconte l'histoire : arrivée → action → accélération → pause lisible, et macro-détail → découverte en arrière-plan.
-
L'animation locale reste locale : un chemin de curseur, un clic, un défilement, un retournement de carte. Les pulsations de clic parentées à l'intérieur du composant, donc elles le suivent sous la perspective.
-
Les titres vivent sur un plan 2D stable au-dessus du monde 3D, afin que les poussées de la caméra ne les coupent jamais. Vérifiez avec une vérification des limites de texte projeté.
B5. Flou de mouvement, netteté et profondeur
- Le flou de mouvement de la composition est activé (obturateur 135–180°, 12–16 échantillons).
- Réduisez l'obturateur à 45–90° pour les retraits très rapides, ou les bavures d'interface.
- Désactivez le flou de mouvement sur les calques où il double le texte.
- Gardez les grands zooms d'interface nets : un précomp de rendu suréchantillonné 2–4× qui contient l'interface vectorielle modifiable, et pas d'effondrement sur les scènes de caméra.
- Moteur de rendu Advanced 3D : gardez ≥ 4 unités entre les plans parallèles, sinon ils se combattent en profondeur et montrent des coutures.
- L'opacité d'un nul n'affecte pas ses enfants. Propaguez l'opacité à tous les descendants.
- Les lueurs floues doivent avoir Répéter les bords des pixels DÉSACTIVÉ, sinon elles montrent des limites rectangulaires. Les rampes radiales plein cadre créent les meilleurs champs de lumière.
B6. Transitions : continuité, pas d'effets
-
Une transition doit être motivée :
- Coupe franche sur correspondance : la dernière image de A est égale à la première image de B. Mesurez la pose dans le rendu.
- Morphose : une forme anime sa taille, son arrondi, sa couleur et sa position pour devenir l'élément suivant.
- Transfert d'objet : un élément est extrait et devient le héros de la scène suivante.
- Plongée de caméra dans un élément sombre, de sorte que la scène suivante émerge du noir.
- Disque lumineux ou sombre révélant derrière le produit via un cache de piste.
-
Interdit :
- flashs blancs ou gris plein cadre;
- fondus entre des scènes sombres et claires, qui produisent des images gris moyen;
- le même wipe sur chaque coupe;
- bandes "balayage" de fond gris.
Placez les flashs là où ils appartiennent physiquement : sur un écran, avec un bloom coloré derrière l'objet.
-
Utilisez au maximum 2 à 3 wipes d'occultation plein cadre par film.
B7. Natif uniquement, toujours modifiable
- Téléchargements d'actifs : Téléchargez tous les actifs nécessaires à la tâche sans demander d'abord à l'utilisateur, y compris les logos, icônes, polices, modèles 3D, textures, images, vidéos de référence, musique et effets sonores. Préférez les sources officielles ou fiables, conservez l'attribution de licence requise et appliquez les règles de projet natif ci-dessous lors de l'utilisation des actifs dans AE.
- Natif signifie texte, formes, masques, effets, précompositions, caméras, lumières et calques de modèle 3D natifs (GLB/OBJ). L'audio peut être importé.
- N'importez jamais de captures d'écran, de recadrages de référence, de pré-rendus, de boucles de webcam ou de substituts raster pour les calques natifs.
- Auditez chaque élément de métrage avant de prétendre qu'il est "natif".
- Modifiable signifie texte en direct, curseurs pour les contrôles, noms de calques clairs et précompositions de composants réutilisables qui propagent les modifications partout où ils sont utilisés.
- Gardez le texte centré après les modifications avec une expression de point d'ancrage provenant de
sourceRectAtTime.
B8. Typographie
- Texte en direct uniquement, avec les vraies polices de la marque. Vérifiez avec
getFontsByPostScriptName, et installez des instances statiques sous un nom de famille unique si nécessaire. - Les titres sont courts, gras, en casse de phrase, avec un point final. Crénage −20 à −40.
- Révélation par caractère ou mot : opacité 0, flou 20–24, y +14–26, ease-out sur 0,45–0,55 s. La sortie imite l'entrée : 0,25–0,35 s, flou vers le haut.
- Mesurez les largeurs par rapport au TTF réel (PIL à 4× suréchantillonnage) afin que les soulignements, les pastilles et les
...