Communitygithub.com

gallowforge/forge-motion

FilmForge motion: plant jeden Schuss Leben in Code statt in Credits (gemalte Halte werden lebendig mit treibendem Nebel, Asche, Schnee, Regen, Glut, Glitzern, Lichtstreifen, Feuerschein-Flimmern, Hitzeflimmern, Erschütterung, Blitzen, Glassprüngen, Überblendungen, goldenen Fäden, handgeschriebenen Wörtern und Titeln), ordnet jeden Effekt den exakten Parametern des gemalten Film-Pipeline-Renderers zu, wendet Frame-QA-Code-Korrekturen an, exportiert die Bearbeitungszeitleiste und rendert die Vorschau; entscheidet, wann bezahltes Video seine Credits wert ist.

Was ist forge-motion?

Dieses Skill automatisiert den Motion-Schritt in einem Filmherstellungsprozess, der auf gemalten Bildern basiert. Es vermeidet Zooms oder Kamerafahrten; stattdessen erzeugt es Bewegung innerhalb des Bildes durch GPU-gerenderte Partikel, Nebel, Flimmern und Licht – alles ohne zusätzliche Kosten für Videogenerierung. Das Skill füllt das `motion`-Feld jedes Shots in `shotlist.yaml`, wendet QA-Korrekturen an, exportiert die Zeitleiste für den Renderer und erstellt eine Vorschau mit Ton. Es enthält ein Entscheidungssystem, wann bezahltes Video (z. B. über Kling) sinnvoll ist: nur dann, wenn die Bewegung die Geschichte trägt und Code sie nicht realistisch nachbilden kann (z. B. Flug, Verwandlung). Das Skill unterstützt verschiedene Partikelsysteme (Asche, Schnee, Glut, Regen, Glitzer, Goldfäden), grafische Overlays (handgeschriebene Texte, Titel) sowie Effekte wie Feuerschein, Hitzeflimmern, Kamerabeben, Blitze und Glassprünge. Die Musik steuert die Dynamik über Drive-Messungen, sodass Effekte wie Glutblühen oder Textatmung ohne Keyframes auf Beat-Hits reagieren.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gallowforge/filmforge/tree/HEAD/skills/forge-motion

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

FilmForge Motion

Gemälde halten wie Filmframes; kein Zoomen, kein Driften. Bewegung kommt von innen: Partikel, Nebel, Flimmern, Schimmer, Licht – alles auf der GPU gerendert für nichts. Bezahltes Video wird aufgehoben für das, was Code nicht kann (echter Flug, eine Verwandlung, die der Höhepunkt des Films ist). Dieses Skill füllt das motion-Feld jedes Shots, wendet die QA-Korrekturen an, exportiert die Zeitleiste für den Renderer und rendert die Vorschau, die der Regisseur absegnet.

Pfade: scripts/, templates/ und config/ unten sind Ordner innerhalb dieses Skills (das Basisverzeichnis, das beim Laden angezeigt wird), platziert von ./install.sh. Beim Arbeiten aus einem Klon des Repositorys sind es tools/, templates/ und config/ in dessen Wurzel.

Der Renderer ist painted-film-pipeline (Python und GLSL; Module unten benannt). Alle Pixelwerte sind 4K (3840x2160); der Renderer skaliert sie mit K = W / 3840, sodass eine 1080p-Vorschau dieselben Zahlen verwendet.

Schritt 1. Den Shot lesen

Für jeden Shot: sein Beat, die Stimmung seiner Szene und das Farbdrehbuch, seine Länge nach Retime, die darunterliegende Musik (Phrasen, Hits in beatmap.json), was bereits im Bild ist (Feuer, Meer, Himmel, Glas). Das Leben muss der Welt des Gemäldes angehören: Glut steigt aus einem Feuer auf, das dort gemalt ist; Schnee fällt, wo der Himmel ist.

Schritt 2. Sein Leben wählen (das Vokabular)

EffektParameter (Shot-Feld)Werte
Treibende Nebelbänderfog + fogc(Stärke 0..1, y wo es beginnt, y wo es voll ist, Driftgeschwindigkeit); Farbe (r, g, b) 0..1
Lichtstreifen über Lichternsweep(Periode s, Bandbreite px, Intensität, 0)
Feuerschein-Flimmern um einen Punktflick + fireAmplitude (0.07 bis 0.45); (x, y, Radius px)
Hitzeflimmern in einem Bandshim(y voll, y null, 0, Stärke)
Kamerabebenshake(Start s, Länge s, Amplitude px)
Überblendung rein / raustin, tout("fade" oder "white", Sekunden); Standard ist ein harter Schnitt
Neuausrichtungcrop(x0, y0, x1, y1) in Quellpixeln
Partikeltönungashc(r, g, b)
Partikellifeein Rezept oder ein Lambda über die Partikelsysteme unten
BlitzeboltsListe von Zeitpunkten im Shot
Glassprungcrack(Start s, Länge s)

Partikelsysteme (painted.py): ash(t, n, wind=(vx, vy), size=(min, max), alpha, seed) für Asche, Staub und Schnee; flakes(...) für große weiche Flocken; sparkles(t, n, alpha, size) für Glitzer und Sterne; streaks(t, n, speed) für Regen; embers(t, n, src=(x, y), spread, rise, life) für Glut, die aus einer Quelle aufsteigt. Rezepte aus dem echten Film (film_cut.py): SNOW(n, wind), EMB(n, alpha), GLINT, RAIN, STARS(n), GOLD. Vollständige Parameterbedeutungen: references/pipeline-modules.md; getestete Stimmungsrezepte: references/effects-cookbook.md.

Grafiken (graphics.py, overlays.py): goldene Fadenbänder, die sich einzeichnen, mit der Musik schwingen und einrasten (T(points, t0, draw, w)); handgeschriebene Wörter, die von links nach rechts geschrieben werden (W(text, t0, x, y, size)); Ortsnamen, die sich aus dem Material der Szene formen und fortblasen (V(...)); das Titel-Finale.

Schritt 3. Die Musik treibt es

graphics.Drive misst die Partitur pro Frame (Level und Puls). Bloom, Glutblühen, Fadenglühen und Textatmung folgen ihm, sodass ein Hit die Glut ohne Keyframe aufleuchten lässt. Setze Überblendungen und Beben auf Hits aus beatmap.json (shake Start = die Zeit des Hits minus der Start des Shots).

Schritt 4. Das Motion-Feld schreiben

In shotlist.yaml, pro Shot (Beispiel: ein Feuer-Wald-Shot aus Simorgh und der Strahl der Laternenmotte):

    motion:
      life: EMB(320)
      flick: 0.09
      fire: [1920, 1300, 2600]
      shim: [2160, 300, 0, 0.8]
      ashc: [0.62, 0.55, 0.5]
    motion:
      tin: [white, 0.4]
      sweep: [3.0, 520, 0.35, 0]
      life: GOLD
      shake: [0.0, 0.4, 10]

Ein Shot, der nichts braucht, bekommt motion: none (das Gate will, dass jeder Shot entschieden ist).

Schritt 5. Die QA-Korrekturen anwenden

Für jede fix in qa.yaml: führe ihren Aufruf aus (grade.py recolor oder blue, ein Patch, ein crop auf den Shot), schreibe die _g-Datei, messe erneut mit ledger.py palette, setze dann done: true. Die angepasste Gradierung (Plattenebenen) und die 4K-Hochskalierung sind automatisch im Renderer.

Schritt 6. Exportieren, rendern, ansehen

python3 scripts/shotlist.py export-cut shotlist.yaml --paintings art/film > code/timeline.py

gibt die Zeitleiste als P_()-Zeilen für film_cut.py aus. Dann, im Renderer:

W=1920 H=1080 python film_cut.py still out/frames 6.0 12.0 24.0     # Standbilder zu den Story-Hits
python film_cut.py sheet out/sheet.jpg                              # ein Frame pro Shot
python film_cut.py video film/preview_1080p.mp4 audio/score.wav     # die Vorschau mit der Partitur

Sieh dir die Vorschau mit Ton an. Überprüfe die Standbilder an jedem Hit. Dann segnet der Regisseur die Motion-Phase ab.

Wann für Video bezahlen

Nur wenn die Bewegung die Geschichte ist und Code sie nicht vortäuschen kann: Flug (Simorghs Start: echte Clips mit Geschwindigkeitsrampen), eine Geburt oder Verwandlung am Höhepunkt. Kalkuliere die Kosten in budget.py (Kling 4.0: 16,25 Credits pro 5 s bei 1080p, plus das Keyframe-Gemälde); male die Keyframes zuerst und lass sie durch die QA laufen; erstelle günstige Entwürfe, wo das Modell einen Entwurf anbietet, und finalisiere einen Take. Alles andere wird in gemalten Schlüsselposen erzählt, die einrasten (poses: 2), so wie Anime eine Pose hält.

Ausgabe

  • das motion-Feld jedes Shots (oder none)
  • code/timeline.py aus export-cut
  • die angewendeten Korrekturen (_g-Dateien, done: true in qa.yaml)
  • film/preview_1080p.mp4, Standbilder zu den Hits, ein Ein-Frame-pro-Shot-Blatt

Gate-Checkliste

  • Jeder gemalte Shot hat einen Bewegungsplan oder motion: none
  • Jede QA-Korrektur angewendet und erneut gemessen
  • Die Vorschau mit Ton angesehen; Standbilder an jedem Hit überprüft
  • Abgesegnet

Reparaturtabelle

SymptomKorrektur
Es fühlt sich an wie eine DiashowJeder Haltepunkt braucht eine lebendige Schicht, die an seine Welt gebunden ist (Partikel, Nebel, Flimmern); variiere sie nach Szene
Effekte wirken aufgeklebtTöne Partikel mit ashc aus dem Gemälde; Emitter an gemalten Quellen; Nebelfarbe aus dem Himmel
Hektische, verrauschte FramesWeniger Partikel (n halbieren), niedrigeres Alpha; eine Effektfamilie pro Szene
Shots aus verschiedenen Generationen schneiden nicht zusammenDie angepasste Gradierung ist für diese Platte falsch: Ebenen prüfen; eine Gradierung, Korn und Vignette für alle
Effekte ignorieren die MusikHits nicht genutzt: platziere Beben, Flares und Überblendungen auf Beatmap-Hits
Text ist schwer zu lesenVerschiebe ihn in den ruhigen Bereich des Gemäldes (text_area), vergrößere, verlangsame das Einblenden

Referenzen

  • references/pipeline-modules.md: die Module des Renderers und alle Parameter
  • references/effects-cookbook.md: getestete Rezepte pro Stimmung, aus einem fertigen Film

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

gallowforge/forge-director

FilmForge director: runs an AI film production end to end (story, style lock, score, paintings, frame QA, motion in code, sound, delivery, archive) through stage gates, so no credit is spent before its gate passes. Keeps the production state file (production.yaml) and the credit ledger, prices the plan against the credits, and always names the one next action. Use this skill whenever the user wants to make, plan, budget, continue or check on a short film, painted film, animated story, music...

gallowforge/forge-frame-qa

FilmForge frame QA: inspects every painting at full size against the character sheets and the continuity ledger, measures colour rules, palette and exposure with tools, scores it on a nine-criterion rubric and decides: accept, fix in code (naming the module and the exact parameters), or repaint (with the root cause and the full corrected prompt). Use this skill whenever paintings, stills, keyframes, character sheets or book pages come back from an image model, when the user asks whether...

gallowforge/forge-painter

FilmForge painter: writes every shot's image prompt from the shot list, the character sheets and the style lock, on a fixed twelve-slot order with continuity anchors (handles, anchors, scale locks, props, states, forbidden-colour clauses); keeps the continuity ledger; lints every prompt before a credit is spent; paints in batches of four and hands each batch to frame QA. Use this skill whenever the user wants image prompts for a film's shots or a picture book's pages, storyboard frames,...

gallowforge/forge-style-lock

FilmForge style lock: fixes one image model and setting, one look sentence (or two when the drawing itself carries the story), the palette and colour rules, the line, brush and lens language, the character-sheet specs with scale bars, and the prompt grammar every shot must follow, so every painting in a film or book matches. Use this skill whenever the user starts the visual side of a film, music video or picture book, wants consistent characters or one consistent look across many images,...

Verwandte Skills