loopOut() und loopIn() in After Effects sind Expression-Funktionen, die Keyframe-Animationen automatisch als endlose oder begrenzte Schleifen wiederholen, ohne dass Keyframes manuell dupliziert werden müssen.
Rubrik: Software & Tools Deep-Dive · Unterrubrik: After Effects · Niveau: Einsteiger Synonyme / Auch bekannt als: Loop-Expression, Cycle-Expression, Animations-Schleife
Was sind loopOut und loopIn?
loopOut() und loopIn() sind zwei eingebaute Expressions der After Effects Expression Language. Sie werden an Eigenschaften mit mindestens zwei Keyframes angehängt und sorgen dafür, dass die Animation zwischen diesen Keyframes als Schleife fortgeführt wird – entweder vorwärts, rückwärts oder pingpong-artig. Das Ergebnis: Ein einmal animierter Zyklus läuft endlos, ohne dass die Kompositionslänge verlängert oder Keyframes kopiert werden müssen.
Erklärung
loopOut() setzt die Schleife nach dem letzten Keyframe fort: ``javascript loopOut("cycle") `` Die Animation läuft nach dem letzten Keyframe wieder vom ersten Keyframe an.
loopIn() setzt die Schleife vor dem ersten Keyframe fort: ``javascript loopIn("cycle") `` Die Animation läuft vor dem ersten Keyframe wieder ab dem letzten Keyframe rückwärts.
Schleifentypen: Beide Funktionen akzeptieren als ersten Parameter einen Typ-String:
"cycle": Standard – die Keyframe-Sequenz wird von Anfang bis Ende wiederholt. Voraussetzung für einen nahtlosen Loop: erster und letzter Keyframe müssen denselben Wert haben."pingpong": Die Animation läuft vorwärts und dann rückwärts im Wechsel – nützlich für hin-und-her-schwingende Bewegungen."offset": Wie Cycle, aber der Startwert jedes Durchlaufs wird um den Gesamtwert der Animation versetzt – perfekt für kontinuierlich voranschreitende Bewegungen wie eine endlos scrollende Textur oder eine Uhr, die immer weiter dreht."continue": Setzt die letzte Geschwindigkeit (Velocity) des letzten Keyframes fort, ohne zu schleifen – nützlich für Trägheitseffekte.
Zweiter Parameter – numKeyframes: Optional kann angegeben werden, wie viele Keyframes für die Schleife berücksichtigt werden sollen: ``javascript loopOut("cycle", 2) `` Schleift nur die letzten zwei Keyframes – nützlich, wenn die Animation einen Aufbau hat und nur der Endteil geloopt werden soll.
Kombination mit anderen Expressions: loopOut lässt sich mit anderen Expressions kombinieren. Beispiel: Ein Loop über einen Wiggle-Wert wird mit loopOut stabilisiert, indem man Keyframes des Wiggles baked und dann loopt.
Wichtig – Keyframe-Timing: Für einen nahtlosen Cycle-Loop müssen erster und letzter Keyframe identische Werte haben. Bei loopOut("offset") muss die Differenz zwischen erstem und letztem Keyframe exakt dem Betrag entsprechen, um den sich die Animation pro Schleife voranbewegen soll.
Beispiele
- Endlos drehender Ladeindikator: Rotation-Keyframe von 0° bei 0:00 und 360° bei 0:01, dann
loopOut("cycle")– dreht endlos. - Pulsierender Call-to-Action-Button: Scale von 100% zu 105% in 0,5 Sekunden,
loopOut("pingpong")– pulsiert sanft hin und her ohne Keyframe-Duplizierung. - Laufender Hintergrund: Horizontal scrollende Textur, Position-X von 0 zu -1920 in 5 Sekunden,
loopOut("cycle")– nahtloser Endlosscroll. - Analoguhr-Zeiger: Sekunden-Rotation 0° bis 360° in 60 Sekunden,
loopOut("offset")– Zeiger dreht kontinuierlich weiter, auch nach dem letzten Keyframe. - Aufklatschende Wellen: Y-Position von 0 auf -30 und zurück auf 0,
loopOut("cycle")– simuliert wellenartige Bewegungen für Wasser-Overlays.
In der Praxis
loopOut anwenden:
- Mindestens zwei Keyframes auf einer Eigenschaft setzen
- Letzten Keyframe identisch zum ersten setzen (für Cycle)
- Alt+Klick auf Stoppuhr-Icon der Eigenschaft
- Eingeben:
loopOut("cycle") - Kompositions-Preview zeigt endlose Wiederholung
Prüfen ob der Loop nahtlos ist: Im RAM Preview in der Loop-Funktion: Gesamte Komposition als Loop-Preview abspielen. Ruckeln am Übergang deutet auf unterschiedliche Keyframe-Werte hin.
Nur letzten Teil loopen: ``javascript loopOut("cycle", 1) // Schleift nur den letzten Keyframe-Abschnitt ``
loopIn für Vor-Animation: Für Scroll-Abspann oder endlosen Intro-Loop: loopIn("cycle") vor dem ersten Keyframe.
Vergleich & Abgrenzung
In Cinema 4D können F-Curves direkt auf „Loop" gesetzt werden ohne Expression-Code. In Blender existiert eine „Repeat" und „Repeat Reversed"-Option in der NLA-Editor. After Effects' Expression-Ansatz ist weniger GUI-basiert, dafür deutlich flexibler durch Kombinierbarkeit mit anderen Expressions und Conditional-Logik.
Häufige Fragen (FAQ)
Warum springt mein Loop am Übergang? Der häufigste Grund ist, dass erster und letzter Keyframe unterschiedliche Werte haben. Bei loopOut("cycle") muss der letzte Keyframe exakt den gleichen Wert wie der erste haben. Eine Alternative: loopOut("pingpong") vermeidet den Sprung durch Rückwärts-Wiedergabe, ergibt aber eine andere Bewegungscharakteristik.
Kann loopOut mit Time Remapping kombiniert werden? Ja. loopOut auf der Time-Remapping-Eigenschaft eines Footage-Layers schleift das Video-Footage endlos. Dafür muss Time Remapping aktiviert sein (Layer → Time → Enable Time Remapping), und loopOut("cycle") wird an die Time-Remapping-Eigenschaft angehängt.
Verwandte Einträge
Weiterführend
- Meyer, C. & Meyer, T. (2019): After Effects Apprentice. Focal Press.
- Adobe After Effects Hilfe – helpx.adobe.com/after-effects/expressions
- Motion Array – Blog „Mastering Loop Expressions in AE"
