Bewegungsdoktrin (Gateway)
Lies dies, bevor du eine Animation komponierst. Es entscheidet, WAS an jeder Nahtstelle passiert und wie sich jede Szene verhält; die Technik-Skills setzen es um. Diese Regeln ersetzen generische / übergeordnete Bewegungsrichtlinien. Der Fehler, den dies verhindert: Szenen, die isoliert erstellt werden – der Schwung des Auges stirbt an jedem Schnitt, und Szenen wackeln an Ort und Stelle zwischen Eintritt und Austritt.
Routenkarte
| Entscheidung (dieses Skill) | Umsetzungsskill |
|---|---|
| Wahl des Nahtübergangs + Parameter + Code | cut-the-curve §1–5 (der Katalog) |
| Text-/Element-Eintrittskaskaden | cut-the-curve §6 (Wasserfall-Eintritt) |
| Szeneninterne Gruppen-Neupositionierung (ohne Schnitt) | cut-the-curve §7 (Nudge-Kurve) |
| Cursor-geführte Aktion / Szenenstart / Morph-Zündung | oversized-cursor |
| Naht-Rendermechanik / Weißblitz-Schutz | seam-craft |
| Produkteinführungs-/Erklär-/Untertitelarbeit | Überlagert text-beat-economics, brand-faithful, captions-overlay auf das übergeordnete Skill |
Authoring-Reihenfolge: Vektor-Ledger (ledger.json) → STAMPE die Hauptnähte daraus (scripts/seam-stamp.mjs --ledger ledger.json --write index.html) → anhaltende Bewegungsroute pro Phase → Träger und Ursachen → Build-Komponenten → VERIFIZIEREN (scripts/seam-gate.mjs). Nur Tier-A-Morphs/Match-Cuts von Hand erstellen; gestempelte Nähte bestehen das Gate konstruktionsbedingt.
Teil 1 — Das Nahtgesetz
Das Vektorgesetz
Wie Szene A endet, bestimmt, wie Szene B beginnt: gleiche Achse, gleiche Richtung, übereinstimmende Geschwindigkeit, Schnitt während der Bewegung auf BEIDEN Seiten.
- Achse — x bleibt x, y bleibt y, Z bleibt Z. Niemals Achsen über einen Schnitt hinweg tauschen.
- Richtung — niemals spiegeln. Auf Z ist Richtung = das VORZEICHEN der Skalierungsänderung: Vergrößern = Schieben (Kamera nach vorne), Verkleinern = Ziehen (Kamera zurück). Ein zurückweichender Ausgang, der durch einen von-klein-wachsen-Eintritt beantwortet wird, ist eine gespiegelte Vektorverletzung – die häufigste, weil von-klein-wachsen der Standard-Element-Eintritt ist.
- Geschwindigkeit — Die Eintritts-Anfangsgeschwindigkeit ≈ die Austritts-Endgeschwindigkeit, durch gespiegelte Easing-Funktionen (Austritt
power4.in+ Eintrittpower4.out, gleiche Distanz und Dauer; die eingehende Seite übernimmt ≥50% durch den gedachten Pfad). Mechanik incut-the-curve. - Phase — Der Schnitt landet mitten in der Bewegung auf BEIDEN Seiten. Zur Ruhe kommen vor dem Schnitt oder aus der Ruhe danach starten ist ein toter Beat.
Der Strom
Jeder Film wählt EINE dominante Richtung (Hausstandard: LINKS). Jede gewöhnliche Naht verwendet sie. Andere Vektoren sind RESERVIERT – sie auszugeben bedeutet etwas:
| Vektor | Bedeutung |
|---|---|
| Der Strom (LINKS) | „nächster Beat“ – neutraler Fortschritt |
| Aufwärts | Erhöhung – eine Schlussfolgerung oder Enthüllung erhebt sich über das Vorherige |
| Z vorwärts (Zoom-durch) | tiefer in denselben Gedanken eintauchen |
| Z rückwärts (inverser Zoom) | ANKUNFT – etwas Größeres landet |
| Skalen-Burst (explodieren) | eine Welt verlassen – eine Oberfläche rast an der Kamera vorbei |
- Führe niemals aufeinanderfolgende Nähte in entgegengesetzte Richtungen aus – Ping-Pong wird als Fehler gelesen.
- Ein Richtungswechsel braucht eine sichtbare Ursache (Klick / Sprung / Aufprall) oder eine Kapitelgrenze.
Das Vektor-Ledger
Schreibe es, bevor du eine Master-Zeitleiste erstellst – als ledger.json im Projektstamm (Schema: references/seam-gate.md). Eine Zeile pro Naht: Schnittzeit, Austritts- und Eintrittsvektoren (Achse + signierte Richtung; Z-Zeilen tragen das Skalierungsvorzeichen), Selektoren, Technik. Austritt und Eintritt müssen übereinstimmen; bei einer nicht übereinstimmenden Zeile korrigiere den Plan, nicht das Easing. Der Verifizierer prüft die Zeilenkonsistenz statisch vor jeder Laufzeit-Stichprobe.
Träger
Das Auge folgt Objekten, nicht Abstraktionen. Die stärksten Nähte übergeben einen konkreten Träger über den Schnitt mit übereinstimmender Position UND Geschwindigkeit: ein Cursor auf halbem Weg, ein Container, der schrumpft/ins nächste Layout andockt, eine Markierung, die in ihren genauen Slot fliegt, die Wortgruppe eines Wasserfall-Schnitts. Ohne natürlichen Träger übernehmen die Szenen-Helden den Transport (teilweise Bewegung + frühes Ausblenden, Eintritt mittendrin). Niemals eine Überblendung – sie hat überhaupt keinen Träger.
Kausale Bewegung
Verkette Bewegungen so, dass jede sichtbar von der letzten ausgelöst wird: Klick → Quetschen → Feder loslassen → Flug → Aufprall → Rückstoß → Enthüllung.
- Effekte beginnen IN dem auslösenden Frame – gleiche Timeline-Position, niemals „kurz danach“.
- Reaktionen skalieren mit der implizierten Masse: große Elemente federn langsamer zurück, kleine schneller.
- Eine Kraft ist eine Lizenz zum Richtungswechsel; ein ursachenloser Flip ist ein Ping-Pong.
Das Naht-Gate (Build-Gate – führe den Verifizierer aus, Exit 0 oder die Naht ist nicht fertig)
node <SKILL_DIR>/scripts/seam-stamp.mjs --ledger ledger.json --write index.html # generieren
node <SKILL_DIR>/scripts/seam-gate.mjs verify --ledger ledger.json --project . # verifizieren
Das Skript (Nutzung + Ledger-Schema: references/seam-gate.md) erzwingt numerisch, pro Naht: Ledger-Zeilen-Konsistenz, Austritt in Bewegung zum Schnitt, Eintritt während des Flugs (niemals aus der Ruhe), gemessene Richtung = Ledger-Richtung, Geschwindigkeitsübereinstimmung von Eintritt/Austritt (WARN), keine Überlappung (eine Seite pro Frame sichtbar – der Schnitt ist keine Überblendung), die Z-Vorzeichen-Regel (d(scale)/dt gleiches Vorzeichen auf beiden Seiten; die Eintritte der eingehenden Szene werden auf Vorzeichenkonflikte geprüft) und die Kontinuität des Träger-Rechtecks unter Einbeziehung des übergeordneten Maßstabs. Verwende seam-gate.mjs probe --t <cut>, um die wahren Träger-Selektoren jeder Naht zu finden, wenn du das Ledger erstellst.
Regeln, die das Skript NICHT prüfen kann – bleiben deine Aufgabe:
- Bearbeitungen öffnen die Naht wieder. Jede Änderung an den ersten/letzten ~1 s einer Szene (einschließlich Neusynchronisierung auf neue VO) macht die Prüfung dieser Grenze ungültig – führe den Verifizierer erneut aus.
- Audio ist die Uhr. Synchronisiere Szenen auf die echten Wortzeitstempel der VO; erzwinge niemals ein Lesen, um in einen Slot zu passen. Eine erneute VO-Generierung öffnet ihre Nähte neu.
- Clip-Gating-Falle (die übliche Ursache für einen Überlappungsfehler): Ein Clip, dessen
data-startvor seinem Eintritts-Tween liegt, wird bei seiner anfänglichen Deckkraft eingeblendet – setze anfänglichautoAlpha: 0UNDdata-start= die Schnittzeit, niemals früher.
Teil 2 — Performance (die Szene bleibt in Bewegung)
Kein Leerlauf-Wobbel
Leerlauf-Sinus-Schleifen (Atmen, Schweben, Driften, Glühen-Pulsieren) sind als anhaltende Bewegung VERBOTEN – sie wirken wie „das Video wartet“. Eine Szene, die mit Sekunden übrig fertig eingeblendet ist, ist ein Planungsfehler: füge Geschichte hinzu, kein Wackeln. Jede Phase zwischen Eintritt und Austritt gehört zu einer dieser Routen (benenne die Route im Plan):
| Route | Was es ist |
|---|---|
| Gestaffelte Enthüllungen | Halte Inhalt zurück; zeige ihn auf Erzähl-Beats – der Frame gewinnt kontinuierlich an Information (Standard für ≥2 Inhaltsgruppen) |
| Kamera mit Absicht | Ein festgelegter Skalierungs- + Schwenk-Pfad: etablieren (weit) → reisen → auf dem Motiv ankommen |
| Sequenzielles UI-Leben | Das Produkt verhält sich über die Zeit: Fortschritt schreitet voran, Highlights Schritt, Zähler ticken |
| Animierte Sequenzen | Elemente führen einen Beat auf: eine Karte legt sich in einen Stapel, ein Gegenstand wird gezogen, ein Ergebnis setzt sich zusammen |
| Cursor-geführte Aktion | Ein übergroßer Cursor führt das Auge zu einem Auslöser; sein KLICK zündet den nächsten Beat (oversized-cursor) |
Test: Pausiere zu jeder beliebigen Sekunde – es muss etwas Sinnvolles im Flug sein (eine enthüllte Landung, die Kamera unterwegs, das UI tut, was die Erzählung sagt).
Stille vor dem Höhepunkt
Plane eine 0,3–0,75 s Pause zwischen der Hauptaktion und ihrem Ergebnis – das dramatische Komma. Eine Szene, die direkt von der Aktion zum Ergebnis springt, verliert es.
Timing-Absichten
- Einzelner Eintritt ≤ ~800 ms; längeres Aufbauen = Multi-Element-Staffelung, nicht ein langsames Element.
- Austritt ≈ 75 % des Eintritts. Ausnahme:
cut-the-curvekehrt dies um (Eintritt ~127 % des Austritts). - Gesamtstaffelung ≤ 500 ms; bei 8+ Elementen, verkürze die Verzögerung pro Element oder staffele die ersten paar.
- Verbotene Easings:
bounce.out/elastic.out. Eintritts-Überschwingenback.out(1.4–1.7)ist in Ordnung. - Ähnliche Elemente teilen sich eine Easing + Dauer-Absicht – niemals ein einzigartiges Paar pro Element.
Übergangsvokabular
Verwende nur 2–3 Zwischenszenen-Übergänge pro Film und wiederhole sie; die Standardgrenze ist cut-the-curve in Richtung des Stroms. Handgeschriebene Shared-Element-Morphs (intent: morph) zählen nicht gegen das Budget.
Anti-Patterns
| Nicht so | Stattdessen |
|---|---|
| Jede Szenen-Eingabe isoliert erstellen | Schreibe zuerst das Vektor-Ledger |
| Überblendung zwischen Szenen | Cut-the-curve in Richtung des Stroms |
| Austritt abgeschlossen, DANN wechselt die Szene | Schneide während der Bewegung auf beiden Seiten |
| Eintritt startet aus der Ruhe nach einem Schnitt | Tritt ≥50 % durch den gedachten Pfad ein |
| Inverser Zoom-Austritt → wachsen-von-klein-Eintritt (oder Schieben → übergroßer Rückzug) | Gleiche das Skalierungs-Geschwindigkeits-Vorzeichen an (Naht-Gate 7) |
| Eigenes Pop-In-Intro der eingehenden Szene unter einer Z-Naht-Übergabe | Halte ihren Anfangsrahmen komponiert, oder gleiche das Vorzeichen an |
| Leerlauf-Wobbel / Atmen / Schweben, um Zeit zu füllen | Weise eine anhaltende Bewegungsroute zu; oder füge Geschichte hinzu |
| Richtungswechsel ohne Ursache | Gib eine Kraft aus, oder behalte den Strom |
| Reservierte Vektoren als Abwechslung verwendet | Standard auf den Strom; gib sie für Bedeutung aus |
| Reaktion ein paar Frames nach ihrer Ursache | Zündung im selben Frame |
| Aktion springt direkt zum Ergebnis | Plane Stille vor dem Höhepunkt (0,3–0,75 s) |