Communitygithub.com

gallowforge/forge-motion

FilmForge motion : planifie la vie de chaque plan en code plutôt qu'en crédits (plans fixes animés par brouillard, cendres, neige, pluie, braises, scintillements, balayages lumineux, vacillement de feu, mirage thermique, secousses, éclairs, fissures de verre, transitions, fils dorés, mots manuscrits et titres), mappe chaque effet aux paramètres exacts du moteur de rendu painted-film-pipeline, applique les corrections de QA, exporte la timeline de montage et rend la prévisualisation ; décide quand la vidéo payante vaut ses crédits.

Qu'est-ce que forge-motion ?

FilmForge Motion est une compétence spécialisée pour l'agent qui automatise l'animation de plans peints dans un pipeline de film. Au lieu d'utiliser des crédits de génération vidéo payante pour chaque léger mouvement, ce skill donne vie aux peintures fixes via des effets procéduraux (particules, brouillard, lumière) rendus sur GPU. Il fonctionne en plusieurs étapes : analyse de chaque plan, choix des effets dans un vocabulaire prédéfini, pilotage par la musique de la scène, écriture du champ `motion` dans le fichier `shotlist.yaml`, application des corrections QA, export de la timeline et rendu de la prévisualisation finale. L'agent doit décider si un plan nécessite une vraie vidéo générée par IA (par exemple pour un vol ou une transformation) ou si l'effet de code suffit. Le skill est conçu pour fonctionner avec le moteur de rendu painted-film-pipeline (Python, GLSL) et produit des sorties comme des vidéos, des images fixes ou des feuilles de contact. Il inclut des recettes testées issues de films réels et des tables de réparation pour résoudre les problèmes courants (effet de diaporama, bruit, textes illisibles).

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

FilmForge Motion

Les peintures sont fixes comme des photogrammes ; pas de zooms, pas de dérive. Le mouvement vient de l'intérieur du cadre : particules, brouillard, vacillement, mirage, lumière, le tout rendu sur le GPU pour rien. La vidéo payante est réservée à ce que le code ne peut pas faire (un vrai vol, une transformation qui est le point culminant du film). Ce skill remplit le champ motion de chaque plan, applique les corrections QA, exporte la timeline pour le moteur de rendu et rend la prévisualisation que le réalisateur valide.

Chemins : scripts/, templates/ et config/ ci-dessous sont des dossiers à l'intérieur de ce skill (le répertoire de base affiché lors de son chargement), placés par ./install.sh. En travaillant depuis un clone du dépôt, ils sont tools/, templates/ et config/ à sa racine.

Le moteur de rendu est painted-film-pipeline (Python et GLSL ; modules nommés ci-dessous). Toutes les valeurs de pixels sont en 4K (3840x2160) ; le moteur les met à l'échelle par K = W / 3840, donc une prévisualisation en 1080p utilise les mêmes nombres.

Étape 1. Lire le plan

Pour chaque plan : son temps, l'ambiance de sa scène et son script de couleurs, sa durée après ré-étalonnage, la musique qui l'accompagne (phrases, temps forts dans beatmap.json), ce qui est déjà dans la peinture (feu, mer, ciel, verre). La vie doit appartenir au monde de la peinture : des braises s'élèvent d'un feu qui est peint ; la neige tombe là où le ciel est.

Étape 2. Choisir sa vie (le vocabulaire)

EffetParamètre (champ du plan)Valeurs
Bande de brouillard dérivantfog + fogc(force 0..1, y où il commence, y où il est plein, vitesse de dérive) ; couleur (r, v, b) 0..1
Balayage lumineux sur les hautes lumièressweep(période s, largeur de bande px, intensité, 0)
Vacillement de feu autour d'un pointflick + fireamplitude (0,07 à 0,45) ; (x, y, rayon px)
Mirage thermique dans une bandeshim(y plein, y zéro, 0, force)
Secousse de camérashake(début s, durée s, amplitude px)
Transition entrante / sortantetin, tout("fade" ou "white", secondes) ; par défaut une coupe franche
Recadragecrop(x0, y0, x1, y1) en pixels source
Teinte des particulesashc(r, v, b)
Particuleslifeune recette ou une lambda sur les systèmes de particules ci-dessous
Éclairsboltsliste des moments dans le plan
Fissure de verrecrack(début s, durée s)

Systèmes de particules (painted.py) : ash(t, n, wind=(vx, vy), size=(min, max), alpha, seed) pour cendres, poussière et neige ; flakes(...) pour les gros flocons doux ; sparkles(t, n, alpha, size) pour les scintillements et étoiles ; streaks(t, n, speed) pour la pluie ; embers(t, n, src=(x, y), spread, rise, life) pour les braises s'élevant d'une source. Recettes du film réel (film_cut.py) : SNOW(n, wind), EMB(n, alpha), GLINT, RAIN, STARS(n), GOLD. Signification complète des paramètres : references/pipeline-modules.md ; recettes d'ambiance testées : references/effects-cookbook.md.

Graphismes (graphics.py, overlays.py) : rubans de fils dorés qui se dessinent, ondulent avec la musique et se cassent (T(points, t0, draw, w)) ; mots manuscrits écrits de gauche à droite (W(text, t0, x, y, size)) ; noms de lieux qui se forment à partir de la matière de la scène et s'envolent (V(...)) ; le titre final.

Étape 3. Laisser la musique la guider

graphics.Drive mesure la partition par image (niveau et impulsion). Le bloom, la flambée des braises, la lueur des fils et la respiration du texte la suivent, de sorte qu'un temps fort fait flamber les braises sans image clé. Placez les transitions et les secousses sur les temps forts de beatmap.json (shake début = le moment du temps fort moins le début du plan).

Étape 4. Écrire le champ motion

Dans shotlist.yaml, par plan (exemple : un plan de forêt en feu de Simorgh, et le faisceau du Papillon Lanterne) :

    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]

Un plan qui ne nécessite rien reçoit motion: none (la porte de montage veut que chaque plan soit décidé).

Étape 5. Appliquer les corrections QA

Pour chaque fix dans qa.yaml : exécuter son appel (recolor ou blue de grade.py, un patch, un crop sur le plan), écrire le fichier _g, remesurer avec ledger.py palette, puis définir done: true. Le grade correspondant (niveaux de la plaque) et le suréchantillonnage 4K sont automatiques dans le moteur de rendu.

Étape 6. Exporter, rendre, regarder

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

imprime la timeline sous forme de lignes P_() pour film_cut.py. Ensuite, dans le moteur de rendu :

W=1920 H=1080 python film_cut.py still out/frames 6.0 12.0 24.0     # images fixes aux temps forts de l'histoire
python film_cut.py sheet out/sheet.jpg                              # une image par plan
python film_cut.py video film/preview_1080p.mp4 audio/score.wav     # la prévisualisation avec la partition

Regardez la prévisualisation avec le son. Vérifiez les images fixes à chaque temps fort. Ensuite, le réalisateur valide l'étape de mouvement.

Quand payer pour la vidéo

Seulement lorsque le mouvement est l'histoire et que le code ne peut pas le simuler : vol (le lancement de Simorgh : véritables plans avec variations de vitesse), une naissance ou une transformation au point culminant. Estimez son coût dans budget.py (Kling 4.0 : 16,25 crédits par 5 s en 1080p, plus la peinture d'image clé) ; peignez d'abord les images clés et passez-les par QA ; faites une ébauche à moindre coût là où le modèle propose une ébauche et finalisez une seule prise. Tout le reste est raconté en poses clés peintes qui s'arrêtent (poses: 2), comme l'anime tient une pose.

Production

  • le champ motion de chaque plan (ou none)
  • code/timeline.py depuis export-cut
  • les corrections appliquées (fichiers _g, done: true dans qa.yaml)
  • film/preview_1080p.mp4, images fixes aux temps forts, une feuille d'une image par plan

Liste de vérification de la porte de montage

  • Chaque plan peint a un plan de mouvement ou motion: none
  • Chaque correction QA appliquée et remesurée
  • La prévisualisation regardée avec le son ; images fixes à chaque temps fort vérifiées
  • Validée

Table de réparation

SymptômeCorrection
Ça ressemble à un diaporamaChaque plan fixe a besoin d'une couche vivante liée à son monde (particules, brouillard, vacillement) ; variez-les par scène
Les effets semblent collésTeintez les particules avec ashc provenant de la peinture ; émetteurs aux sources peintes ; couleur du brouillard provenant du ciel
Images chargées, bruyantesMoins de particules (moitié de n), alpha plus bas ; une famille d'effets par scène
Des plans de différentes générations ne se coupent pas ensembleLe grade correspondant est incorrect pour cette plaque : vérifiez les niveaux ; un seul grade, grain et vignette pour tous
Les effets ignorent la musiqueTemps forts non utilisés : placez les secousses, les flambées et les transitions sur les temps forts du beatmap
Le texte est difficile à lireDéplacez-le vers la zone calme de la peinture (text_area), agrandissez, ralentissez l'écriture

Références

  • references/pipeline-modules.md : les modules du moteur de rendu et chaque paramètre
  • references/effects-cookbook.md : recettes testées par ambiance, issues d'un film terminé

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,...

Skills associés