Weltklasse-Motion Graphics in After Effects: der Prozess
Arbeiten Sie die gemeinsamen Grundlagen durch, folgen Sie dem relevanten Modus und schließen Sie mit Qualitätssicherung und Abgabe ab:
- Teil A – Mit After Effects verbinden. Stellen Sie eine zuverlässige Steuerung Ihrer eigenen AE-Instanz her.
- Teil B – Immer geltende Regeln. Lesen Sie die gemeinsamen Animations- und Editierbarkeitsregeln, bevor Sie mit dem Bau beginnen.
- Teil C – RECREATE-Prozess. Gleichen Sie ein Referenzvideo durch Analyse, Messung und Vergleich ab.
- Teil D – CREATE-Prozess. Entwickeln Sie einen Originalfilm durch Recherche, Konzept, Storyboard und Aufbau.
- Teil E – Abschluss. Überprüfen Sie das endgültige Rendering und verpacken Sie die angeforderten Liefergegenstände.
Arbeitsmodi
| Modus | Ziel | Wie es beginnt |
|---|---|---|
| RECREATE | Ein Referenzvideo 1:1 in Timing, Layout, Bewegung und Optik nachbilden, nativ neu aufgebaut. | Das Referenzvideo analysieren und vermessen; es definiert die Geschichte. |
| CREATE | Einen originellen Film für eine Marke oder ein Produkt erstellen. | Recherche, Konzept, Storyboard und Moodboard, gefolgt vom Aufbau. |
Teil A – Mit After Effects verbinden
Das Ziel ist eine private, zuverlässige, skriptbare After Effects-Instanz, die von keinem anderen Agenten gestört werden kann und die Sie steuern können, ohne die GUI zu berühren.
A1. Eigene Instanz starten
- Notieren Sie die laufenden AE-PIDs:
pgrep -f "Contents/MacOS/After Effects". - Starten Sie eine neue Instanz:
Ein kleiner Swift-Launcher (open -n "/Applications/Adobe After Effects 2026/Adobe After Effects 2026.app" --args -mNSWorkspace.openApplicationmitcreatesNewApplicationInstance=trueund Argumenten-m -ApplePersistenceIgnoreState YES) kann dasselbe tun und die PID direkt zurückgeben.- Starten Sie das rohe Binärprogramm nicht über
subprocess.Popen. Dieser Prozess ist nicht bundle-registriert und kann keine AppleEvents empfangen.
- Starten Sie das rohe Binärprogramm nicht über
- Differenzieren Sie die PID-Listen und behalten Sie die neue PID für nachfolgende Befehle.
- AE kann nach dem Start unter einer neuen PID neu starten. Nehmen Sie die PID, die das Hauptfenster "Adobe After Effects" besitzt (Quartz
CGWindowListCopyWindowInfo). - Die Bundle-ID ist
com.adobe.AfterEffects.application.
- AE kann nach dem Start unter einer neuen PID neu starten. Nehmen Sie die PID, die das Hauptfenster "Adobe After Effects" besitzt (Quartz
- Schließen Sie die Startdialoge (Crash-Reparatur → Weiter). Ein Adobe-Anmeldefenster in diesen Instanzen ist ein bekannter Anzeigefehler: ignorieren Sie es, geben Sie niemals Anmeldedaten ein und eskalieren Sie es nicht an den Benutzer.
ensure_ae.pyautomatisiert dies: es startet neu, wenn die PID tot ist, bestätigt die kleinen Dialoge, erkennt die neu gestartete PID und öffnet das Projekt erneut.
A2. Nur per PID mit ihm kommunizieren
tell application "Adobe After Effects 2026"trifft jede Instanz, einschließlich der Instanzen anderer Agenten. Verwenden Sie es niemals.aedo(Swift) sendet das AppleEventmisc/dosc(DoScript) an eine PID.ae.py script.jsxoderae.py -e "code"umschließt jedes Skript:- enthält das ES3-JSON-Polyfill (
json.jsx); - ruft
app.beginSuppressDialogs()auf; - führt
$.evalFileinnerhalb von try/catch aus; - schreibt
{ok, value, error, line, file, ms}in eine Ergebnisdatei. AppleEvent-Rückgabewerte sind unzuverlässig, lesen Sie daher immer die Datei.
- enthält das ES3-JSON-Polyfill (
- Projekt-Identitätswächter: Führen Sie vor jedem mutierenden Skript eine Überprüfung der Ziel-PID und
app.project.filegegen das bearbeitete Projekt durch. Schließen oder beenden Sie niemals eine Instanz, von der Sie nicht überprüft haben, dass sie Ihnen gehört. - Führen Sie jeweils nur ein AE-Skript aus. Skripte sind oft nicht idempotent, sichern Sie daher oder speichern Sie unter einem anderen Namen, bevor Sie Massenänderungen vornehmen.
A3. Gesundheitscheck vor der eigentlichen Arbeit
Lesen Sie mit einem Skript Folgendes aus:
app.versionund ob das Projekt Ihnen gehört;- den Comp-Renderer (
ADBE Advanced 3dwird für 3D-Modellebenen und Umgebungslicht benötigt); - Schriftarten:
app.fonts.getFontsByPostScriptName(name).lengthmuss größer als 0 sein für jede Schriftart, die Sie verwenden möchten; - ob ein Test-
saveFrameToPngauf der Festplatte erscheint.
Setzen Sie auch die Einstellung, die es Skripten erlaubt, Dateien zu schreiben und auf das Netzwerk zuzugreifen (Pref_SCRIPTING_FILE_NETWORK_SECURITY).
A4. Die Build-Pipeline: Daten → natives Projekt
Verwenden Sie verfügbare Build-Helfer oder implementieren Sie Äquivalente; die Namen der Helfer beschreiben ihre Rollen.
-
Python beschreibt den Film als Daten. Eine
kit.py-DSL bietet:K()-Sparse-Keys mit benannten Easings;shape,text,precomp,null,camera,model,L(Ebenen);- Effekte nach matchName, Masken, Track Mattes, Ausdrücke, Marker, Notizen, Labels.
Kombinieren Sie Szenenspezifikationen zu einer einzigen Build-Spezifikation.
-
kit.jsxerstellt native Ebenen aus der Spezifikation.- Es erstellt Ebenen von unten nach oben, sodass sie bereits in der endgültigen Reihenfolge sind. Vermeiden Sie Massenneuordnungen mit
moveTo, das AE verlangsamen kann. - Dann wendet es Parentings, Effekte, Masken, Transformationen, Easings, Mattes und Umgebungslicht-Verkabelung an.
- Es erstellt Ebenen von unten nach oben, sodass sie bereits in der endgültigen Reihenfolge sind. Vermeiden Sie Massenneuordnungen mit
-
build.py spec.json --new --only "A|B" --stills "Comp:t1,t2" --save output.aep--newschließt das aktuelle Projekt ohne zu speichern (CloseOptions.DO_NOT_SAVE_CHANGES). Andernfalls öffnetnewProject()einen "Speichern unter"-Dialog und hängt.
-
Standbilder:
stills.py "Comp" t1,t2 prefix.saveFrameToPngist asynchron (pollt, bis die Datei existiert) und schreibt 16-Bit-PNGs (vor 8-Bit-Betrachtung durch 257 teilen).
-
Gezielte Bewegungsrenders:
render.py "Comp" start end out.mp4 [--half] [--hq], oder aerender mit-s/-e. -
Vollständige Renders:
aerender_job.py "Comp" out.mp4 [--half] [--hq].- Es speichert eine Job-Kopie und führt
aerender -project job.aep -rqindex 1 -sound ONin einem separaten Prozess aus. - Es ist schneller als die In-App-Warteschlange, und ein Absturz kann die Arbeitsinstanz nicht lahmlegen.
- Es speichert eine Job-Kopie und führt
-
Kontaktbögen:
contact.py(Einzelbilder aus einem Video) undsheet.py(Standbilder, behält das Seitenverhältnis). Verkleinern Sie Bilder immer, bevor Sie sie anzeigen.
A5. ExtendScript-Regeln (ES3)
- Kein
JSONund keinArray.indexOf: Verwenden Sie das Polyfill oder Schleifen. Lesen Sie JSON miteval('('+text+')'). - Verwenden Sie niemals verkettete ternäre Operatoren (
a?x:b?y:zwerden falsch ausgewertet). Verwenden Sie if/else. - Adressieren Sie Eigenschaften per matchName. Namenssuchen nach Anzeigenamen haben eine Grenze von 39 Byte und sind lokalisiert.
- Eine Kamera ist kein
threeDLayer: Testen SiematchName==='ADBE Camera Layer'. - Normalisieren Sie Wertedimensionen: Übergeben Sie Skalare an getrennte Dimensionen und 3-Element-Arrays an 3D-Eigenschaften.
shutterPhasemuss eine ganze Zahl sein.- Setzen Sie
applyFill=true, bevor Sie eine Textfüllfarbe setzen. - Erstellen Sie ein neues
TextDocumentpro Ebene. Rufen SieresetCharStyle()/resetParagraphStyle()vor dem Styling auf. - Ein Fehler "Eigenschaft oder übergeordnetes Element ist ausgeblendet" bedeutet, dass die Eigenschaft dort nicht gilt. Beispiel: Die Y-Rotation eines Umgebungslichts kann nicht gesetzt werden; animieren Sie stattdessen seine Quellkarte.
- Formverlaufsfüllfarben können nicht skriptbar gesetzt werden. Verwenden Sie einen Verlaufsrampen-Effekt oder geschichtete Lichtgruppen.
A6. Zusammenleben mit anderen Agenten
- Andere Agenten können AE "beim Namen" beenden, was auch Ihre Instanz trifft. Speichern Sie oft und halten Sie
ensure_ae.pybereit. - Drücken von Escape in einem durch Beenden ausgelösten "Änderungen speichern?"-Dialog beendet AE.
- Computer-Use- und Barrierefreiheitswerkzeuge sehen möglicherweise nur die Fenster anderer Instanzen. Diagnostizieren Sie Ihre eigenen Fenster mit einer Quartz-Fensterliste, gefiltert nach PID, plus
screencapture -l <windowId>. Verwerfen Sie sie über Systemereignisse auf Ihrer PID (Tastencode 36 = Eingabetaste, 53 = Escape). - Legen Sie versehentliche Störungen einer anderen AE-Instanz offen.
Teil B – Regeln, die immer gelten
Wenden Sie diese Regeln in beiden Modi an, um die Bewegung flüssig und das Projekt bearbeitbar zu halten.
B1. Keyframes: so wenige wie möglich
- Verwenden Sie so wenige Keyframes wie möglich, um eine flüssige Bewegung zu erzielen. Zehn Keys mit Kurven schlagen tausend lineare Keys.
- Eine Geste benötigt 2–4 Keys: Start, Ende und einen echten Halt oder einen echten Extrempunkt (Spitze, Tal, Phasenwechsel).
- Begrenzen Sie jede Eigenschaft auf etwa 7–12 Keys. Mehr Keys bedeuten normalerweise, dass die Bewegung nicht entworfen wurde.
- Backen Sie Bewegung niemals als bildweise (oder 2-pro-Bild) lineare Keys. Ein Editor kann sie nicht bearbeiten, und sie wirkt mechanisch.
- Wenn Bewegung aus Messung oder Legacy-Daten stammt, passen Sie sie an (siehe B3). Fügen Sie niemals Samples direkt ein.
B2. Kurven: ein glatter Bogen im Geschwindigkeitsdiagramm
-
Öffnen Sie das Geschwindigkeitsdiagramm jeder animierten Eigenschaft.
- Ein glatter Glocken- oder Bogenverlauf bedeutet flüssige Bewegung.
- Ein eckiger, treppenartiger Graph (jeder Key mit Easy Ease auf Null) bedeutet, dass die Bewegung ruckelt.
- Ein Spike bedeutet einen Ruck, es sei denn, es ist ein beabsichtigter Akzent.
-
Innere Keys einer kontinuierlichen Geste dürfen nicht anhalten.
- Verwenden Sie kontinuierliche Bézier-Keys.
- Setzen Sie die innere Geschwindigkeit auf das harmonische Mittel der benachbarten Steigungen,
2ab/(a+b)wenn beide das gleiche Vorzeichen haben, sonst 0, bei einem Einfluss von etwa 33,3. - Wenden Sie niemals ein globales Easy Ease auf eine kontinuierliche Geste an: es erzeugt die Treppenstufen.
-
Easing-Vokabular (Aus-Einfluss des vorherigen Keys / Ein-Einfluss dieses Keys):
Name Einfluss ease 33/33 smooth 70/70 inout 82/82 out 12/88 expo 6/94 snap 3/97 in 88/12 soft 45/75 Ein benutzerdefiniertes Easing ist
{'o':[speed,inf],'i':[speed,inf]}. Ein sanftes Zurückziehen, zum Beispiel:{'o':[0,55],'i':[0,92]}. -
Räumliche Tangenten sind standardmäßig Null, was ein Überschwingen des Pfades vermeidet. Verwenden Sie Bögen nur gezielt.
-
Eine zu kurze Bewegung mit einem harten Expo-Start wirkt wie ein Ruck. Verlängern Sie sie (0,5 → 0,8 s) und weichen Sie das Easing auf, anstatt Keys hinzuzufügen.
-
Überlappen Sie Unterbewegungen zu einer Geste. Eine Faltung, dann ein Flip, dann ein Schub, einzeln ausgeführt, ergibt eine Stop-and-Go-Bewegung. Beginnen Sie die nächste Bewegung, bevor die vorherige endet.
B3. Kurven aus Daten anpassen
Im Recreation-Modus oder beim Konvertieren von dichten Daten:
-
Tasten Sie die Zielbewegung dicht ab (50–200 Hz) mit
valueAtTimeoder aus Messung. -
Fixieren Sie Knoten am Start und Ende, an exakten Haltepunkten (Geschwindigkeit Null) und an signifikanten Extrempunkten (Steigung Null auf dieser Achse).
-
Lösen Sie Geschwindigkeiten und Einflüsse durch kleinste Quadrate gegen die Samples: Geschwindigkeiten vorzeichenbeschränkt, Einflüsse auf 0,04–0,94 begrenzt.
-
Fügen Sie nur dann einen Knoten hinzu, wenn der Fehler die Toleranz überschreitet:
Eigenschaft Toleranz Position 2–3 px (Kamera 3 px) Skalierung 0,4–0,65 Opazität 0,5–2,5 Unschärfe ~1 Rotation 0,4 -
Führen Sie bei Vektoreigenschaften Knotenzeiten über Achsen hinweg zusammen, indem Sie den Bézier teilen (de Casteljau). Stellen Sie sicher, dass die eingehende Geschwindigkeit gleich der ausgehenden Geschwindigkeit an jedem inneren Key ist.
-
Belassen Sie es unverändert, mit einem schriftlichen Grund: Ausdrücke, Time Remap, Tippkadenz, bewusste Halteschalter, Ein-Bild-Sichtbarkeitswechsel.
B4. Eine 3D-Kamera pro Szene
-
Jede Szene hat eine
CAMERA • scene(Ein-Knoten,NO_AUTO_ORIENT, getrenntes X/Y/Z). Die Kamera trägt die Bildausschnitte, Schwenks, Fahrten und Zooms. -
Animieren Sie nicht Position/Skalierung an jedem Element, um eine Kamerafahrt vorzutäuschen.
-
Um eine Kamera aus aufgezeichneter UI-Bewegung abzuleiten (Hauptebenenposition
P, Skalierungs, KompositionszentrumC, ZoomZ0):Kamera XY = C + (C − P)/sKamera Z = −Z0/s
Drücken Sie dann alles, was sich von selbst bewegt, in lokalen Begriffen aus.
-
Die Kamera erzählt die Geschichte: Ankunft → Aktion → Beschleunigung → lesbarer Haltepunkt und Makro-Detail → Rückzug-Enthüllung.
-
Lokale Animation bleibt lokal: ein Cursorpfad, ein Klickdruck, ein Scrollen, ein Kartenflip. Eltern-Klick-Pulse innerhalb der Komponente, sodass sie dieser unter Perspektive folgen.
-
Überschriften leben auf einer stabilen 2D-Ebene über der 3D-Welt, sodass Kamerafahrten sie niemals abschneiden. Überprüfen Sie dies mit einer projizierten Textumgebungsprüfung.
B5. Bewegungsunschärfe, Schärfe und Tiefe
- Die Kompositions-Bewegungsunschärfe ist eingeschaltet (Verschluss 135–180°, 12–16 Samples).
- Verringern Sie den Verschluss auf 45–90° bei sehr schnellen Rückzügen oder UI-Verschmierungen.
- Schalten Sie die Bewegungsunschärfe auf Ebenen aus, bei denen sie Text verdoppelt.
- Halten Sie große Zooms der UI scharf: eine 2–4× supersampelte Renderebenen-Vorkomposition, die die bearbeitbare Vektor-UI enthält, und keine Kollabierung auf Kameraszenen.
- Advanced 3D-Renderer: halten Sie ≥ 4 Einheiten zwischen parallelen Ebenen, sonst entstehen Z-Fighting und sichtbare Nähte.
- Die Opazität einer Null-Ebene wirkt sich nicht auf ihre Kinder aus. Propagieren Sie Opazität auf alle Nachkommen.
- Unscharfe Glüheffekte müssen Ränder wiederholen AUS haben, sonst zeigen sie rechteckige Begrenzungen. Vollbild-radiale Rampen erzeugen die besten Lichtfelder.
B6. Übergänge: Kontinuität, nicht Effekte
-
Ein Übergang sollte motiviert sein:
- Match-Cut: Das letzte Bild von A gleicht dem ersten Bild von B. Messen Sie die Pose im Rendering.
- Morph: Eine Form animiert Größe, Rundheit, Farbe und Position zum nächsten Element.
- Objekt-Übergabe: Ein Element wird extrahiert und zum Helden der nächsten Szene.
- Kameratauchgang in ein dunkles Element, sodass die nächste Szene aus Schwarz auftaucht.
- Hell- oder Dunkelelliptischer Reveal hinter dem Produkt über eine Track Matte.
-
Verboten:
- Vollbild-weiße oder -graue Blitze;
- Überblendungen zwischen dunklen und hellen Szenen, die mittelgraue Bilder erzeugen;
- dieselbe Wischblende auf jedem Schnitt;
- graue Hintergrund-"Wisch"-Streifen.
Platzieren Sie Blitze dort, wo sie physikalisch hingehören: auf einem Display, mit einer farbigen Bloom-Blüte hinter dem Objekt.
-
Verwenden Sie höchstens 2–3 Vollbild-Verdunkelungswischblenden pro Film.
B7. Nur nativ, immer editierbar
- Asset-Downloads: Laden Sie alle für die Aufgabe benötigten Assets herunter, ohne den Benutzer zuerst zu fragen, einschließlich Logos, Symbole, Schriftarten, 3D-Modelle, Texturen, Bilder, Videoreferenzen, Musik und Soundeffekte. Bevorzugen Sie offizielle oder zuverlässige Quellen, bewahren Sie erforderliche Lizenzangaben und wenden Sie die untenstehenden Regeln für native Projekte bei der Verwendung der Assets in AE an.
- Nativ bedeutet Text, Formen, Masken, Effekte, Vorkompositionen, Kameras, Lichter und native 3D-Modellebenen (GLB/OBJ). Audio kann importiert werden.
- Importieren Sie niemals Screenshots, Referenzausschnitte, Vorrenderings, Webcam-Loops oder Rasterersatz für native Ebenen.
- Überprüfen Sie jedes Footage-Element, bevor Sie "nativ" behaupten.
- Editierbar bedeutet Live-Text, Schieberegler für Steuerungen, klare Ebenennamen und wiederverwendbare Komponentenvorkompositionen, die Änderungen überall dort propagieren, wo sie verwendet werden.
- Halten Sie Text nach Bearbeitungen mit einem Ankerpunkt-Ausdruck von
sourceRectAtTimezentriert.
B8. Typografie
- Nur Live-Text mit den echten Markenschriftarten. Überprüfen Sie mit
getFontsByPostScriptNameund installieren Sie statische Instanzen unter einem eindeutigen Familiennamen, wenn nötig. - Überschriften sind kurz, fett, Satzfall, mit einem Punkt. Laufweite −20 bis −40.
- Einblendung pro Zeichen oder Wort: Opazität 0, Unschärfe 20–24, y +14–26, Ease-Out über 0,45–0,55 s. Die Ausblendung spiegelt die Einblendung: 0,25–0,35 s, Unschärfe aufwärts.
- Messen Sie Breiten gegen das echte TTF (PIL bei 4× Supersampling), sodass Unterstreichungen, Pillen und andere Elemente präzise positioniert werden können.