Expressions in After Effects sind kleine JavaScript-Codeschnipsel, die einer Eigenschaft (Position, Rotation, Deckkraft etc.) dynamische Werte zuweisen – entweder als Alternative zu Keyframes oder als Verbindung zwischen verschiedenen Layer-Eigenschaften.
Rubrik: Software & Tools · Unterrubrik: Adobe After Effects · Niveau: Fortgeschritten Synonyme / Auch bekannt als: AE Expressions, JavaScript Expressions, Scripting (abzugrenzen von Scripting mit ExtendScript/JSX); Aktivieren: Alt + Klick auf Stoppuhr einer Eigenschaft
Was sind Expressions?
Expressions sind das Automatisierungswerkzeug von After Effects. Sie basieren auf einer Untermenge von JavaScript (ECMAScript) und werden direkt in der Timeline eingegeben. Statt Werte manuell per Keyframe anzusteuern, berechnet eine Expression den Wert dynamisch: basierend auf der Zeit (time), auf Eigenschaften anderer Layer, auf Benutzer-definierten Kontrollwerten oder auf mathematischen Funktionen. Das Ergebnis sind Animationen, die sich automatisch anpassen – wenn zum Beispiel ein Null-Objekt als Kontroll-Schieberegler definiert wird, der die Animationsgeschwindigkeit aller Layer gleichzeitig steuert.
Erklärung
Expression aktivieren und eingeben
- Alt + Klick auf die Stoppuhr-Icon einer beliebigen Eigenschaft
- Das Expressions-Feld öffnet sich in der Timeline (farblich markiert)
- Code direkt eingeben oder bearbeiten
- Enter bestätigt; Esc bricht ab ohne Übernahme
- Fehler werden durch ein Ausrufezeichen und roten Layer-Namen signalisiert
Expression deaktivieren (ohne löschen)
Das =-Icon links neben dem Expressions-Feld umschalten (durchgestrichen = deaktiviert). Die Expression bleibt gespeichert, wirkt aber nicht.
Expression löschen
Alt + Klick auf die Stoppuhr erneut → Expression wird entfernt
Grundlegende Variablen und Objekte
```javascript // Aktuelle Zeit in Sekunden: time
// Eigener aktueller Wert (vor der Expression): value
// Frames-Dauer der Composition: thisComp.frameDuration
// Breite der Composition: thisComp.width
// Höhe der Composition: thisComp.height
// Name der Composition: thisComp.name ```
Auf andere Layer und Eigenschaften zugreifen
```javascript // Zugriff auf eine andere Ebene in derselben Comp: thisComp.layer("Ebenenname")
// Position-Eigenschaft einer anderen Ebene: thisComp.layer("Kontroll-Ebene").transform.position
// Deckkraft einer anderen Ebene: thisComp.layer("Referenz-Layer").transform.opacity
// Zugriff auf einen Effekt-Parameter: thisComp.layer("Ebene").effect("Effektname")("Parametername") ```
Eigenschaft mit Slider-Effekt steuern (Kontroll-Rig)
``javascript // 1. Auf einem Null-Objekt: Effekt > Expressions-Steuerung > Schieberegler hinzufügen // 2. Auf der Ziel-Eigenschaft Expression: control = thisComp.layer("CTRL_Null").effect("Schieberegler 1")("Schieberegler"); value + control; ``
Math-Funktionen in Expressions
```javascript // Sinus-Welle (periodische Bewegung): Math.sin(time 2 Math.PI frequency) amplitude
// Beispiel: Pendelnde Rotation: Math.sin(time 3) 45 // zwischen -45° und +45°
// Zufallszahl (nicht persistent): Math.random() * 100
// Zufallszahl mit Seed (persistent): seedRandom(1, true); random(0, 100)
// Wert auf einen Bereich begrenzen (clamp): clamp(value, 0, 100)
// Lineares Interpolieren zwischen zwei Werten: linear(time, startTime, endTime, startValue, endValue)
// Ease-Interpolation: ease(time, startTime, endTime, startValue, endValue) ```
if/else-Logik in Expressions
```javascript // Eigenschaft wechselt je nach Zeit: if (time < 2) { 0; // 0° bis Sekunde 2 } else { 90; // 90° ab Sekunde 2 }
// Oder ternärer Operator (kurzform): time < 2 ? 0 : 90; ```
Array-Werte (für Position, Farbe etc.)
```javascript // Position als Array [x, y]: [thisComp.width / 2, thisComp.height / 2] // Comp-Mitte
// Nur X-Position der Comp-Mitte, Y bleibt original: [thisComp.width / 2, value[1]]
// Farbe als Array [R, G, B, A] (0-1 Werte): [1, 0, 0, 1] // Reines Rot ```
Expression Selector (für Text Animatoren)
```javascript // In einem Text-Animator-Selektor: // textIndex = Index des Zeichens (1-basiert) // textTotal = Gesamtanzahl der Zeichen
// Jedes zweite Zeichen: textIndex % 2 == 0 ? 100 : 0
// Abnehmende Stärke: 100 - (textIndex / textTotal) * 100 ```
Expressions-Bibliothek (Presets)
Expressions können als Animation Presets gespeichert werden:
- Animation > Animation Preset speichern
- Gespeichert unter:
~/Documents/Adobe/After Effects/User Presets/
Beispiele
- Stoppuhr-Zähler: Textebene mit Expression auf Source Text: `
Zeit: ${Math.floor(time)}s` – zeigt laufende Sekunden - Verknüpfte Skalierung: Layer B skaliert immer doppelt so groß wie Layer A:
thisComp.layer("A").transform.scale * 2 - Offset-Follow: Layer B folgt Layer A mit 0,5 Sekunden Verzögerung:
thisComp.layer("A").transform.position.valueAtTime(time - 0.5) - Bounce-Expression: Kombiniert
Math.abs(Math.sin())für einen einfachen Hüpfeffekt ohne viele Keyframes - Universeller Loop-Controller: Null-Objekt mit Schieberegler steuert die loopOut-Frequenz aller Layer gleichzeitig
In der Praxis
Expressions sind nicht dasselbe wie Scripts (JSX/ScriptUI): Scripts sind externe .jsx-Dateien, die from After Effects ausgeführt werden und die AE-Programmstruktur verändern können. Expressions sind eingebetteter Code in einzelnen Eigenschaften.
Debugging: Expressions-Fehler erscheinen als gelber Hinweis im Compositing-View und als ! neben dem Expressions-Feld. Auf das ! klicken zeigt die Fehlermeldung.
Nützliche Expression-Ressourcen:
- Dan Ebberts Motionscript.com: die umfangreichste frei zugängliche Expression-Bibliothek
- ae.tutorials.io: Expression-Datenbank mit Suche
Häufige Shortcuts:
| Aktion | Shortcut |
|---|---|
| Expression öffnen/schließen | Alt + Klick auf Stoppuhr |
| Expression aktivieren/deaktivieren | = Icon links vom Feld |
| Expression-Pickwhip nutzen | Spiralen-Icon im Expressions-Feld |
| Alle Expressions anzeigen | U U (doppelt auf Layer) |
Vergleich & Abgrenzung
| Methode | Vorteil | Nachteil |
|---|---|---|
| Expressions | Automatisch, dynamisch, skalierbar | Erfordert JavaScript-Grundkenntnisse |
| Keyframes | Intuitiv, vollständige visuelle Kontrolle | Manuell, schwer nachträglich skalierbar |
| Scripts (ExtendScript/UXP) | Steuert ganze AE-Projekte | Komplexer, externe Datei, mehr Programmierung |
| Plug-ins | Oft GUI-basiert, kein Code | Kostenpflichtig, externe Abhängigkeit |
Häufige Fragen (FAQ)
Muss ich JavaScript kennen, um Expressions zu nutzen? Für die häufigsten Expressions (Wiggle, loopOut, Math.sin) reicht das Kopieren und Anpassen von Parametern. Für komplexere Expressions (Bedingungen, Zugriff auf andere Layer, Arrays) sind grundlegende Programmierkenntnisse hilfreich, aber keine Voraussetzung. After Effects' Pickwhip-Werkzeug generiert automatisch den Code für die Verbindung zu anderen Eigenschaften.
Werden Expressions beim Export mitgerendert? Ja – beim Rendern berechnet After Effects alle Expressions frame-genau und bäckt die Ergebnisse in die Output-Datei. Im exportierten Video sind keine Expressions mehr vorhanden – nur die berechneten Werte pro Frame.
Verwandte Einträge
Weiterführend
- Adobe After Effects Benutzerhandbuch – helpx.adobe.com/de/after-effects
- Motionscript.com – Dan Ebberts (englisch, die Referenz für AE-Expressions)
- Hasson, M.: After Effects Expressions. Focal Press, 2007
