Communitygithub.com

gallowforge/forge-motion

FilmForge Motionは、各ショットの動きをクレジットではなくコードで計画します。静止画に動きを与え、すべてのエフェクトをペイントフィルムパイプラインレンダラーの正確なパラメーターにマッピングし、フレームQAコードの修正を適用して、編集タイムラインをエクスポートし、プレビューをレンダリングします。有料ビデオを使用する判断も行います。

forge-motion とは?

FilmForge Motionは、静止画のペインティングを映画のフレームのように扱い、GPU上でレンダリングされるパーティクル、フォグ、フリッカー、シマー、ライトなどのエフェクトを使用して、各ショットに動きの生命を吹き込むAIエージェントスキルです。このスキルは、各ショットの`motion`フィールドを設定し、QA修正を適用し、レンダラーのタイムラインをエクスポートし、監督が承認するプレビューをレンダリングします。有料ビデオは、コードでは実現できない実際の飛行やクライマックスの変身など、ストーリー上どうしても必要な場合にのみ使用します。このスキルは、CLI環境で`painted-film-pipeline`(PythonとGLSL)と連携し、`scripts/`、`templates/`、`config/`ディレクトリ構造を使用します。すべてのピクセル値は4K (3840x2160) を基準とし、レンダラーが解像度に応じてスケーリングします。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

FilmForge Motion

絵画はフィルムのフレームのように静止している。ズームもドリフトもない。動きはフレームの内側から生まれる。パーティクル、フォグ、フリッカー、シマー、ライト。すべてGPU上で無料でレンダリングされる。有料のビデオは、コードではできないこと(本当の飛行、映画のクライマックスとなる変身)のために残しておく。このスキルは、各ショットのmotionフィールドを設定し、QA修正を適用し、レンダラー用のタイムラインをエクスポートし、監督が承認するプレビューをレンダリングする。

パス: 以下のscripts/、templates/、config/は、このスキル内のフォルダ(読み込み時に表示されるベースディレクトリ内)であり、./install.shによって配置される。リポジトリのクローンから作業する場合、これらはルートにあるtools/、templates/、config/である。

レンダラーは painted-film-pipeline(Python と GLSL。モジュール名は後述)である。すべてのピクセル値は4K (3840x2160) である。レンダラーはこれらを K = W / 3840 でスケーリングするため、1080p のプレビューでも同じ数値が使用される。

ステップ1. ショットを読む

各ショットについて: そのビート、そのシーンのムードとカラースクリプト、リタイム後の長さ、その下にある音楽(フレーズ、beatmap.json のヒット)、すでに絵に描かれているもの(火、海、空、ガラス)。生命はその絵の世界に属していなければならない: 描かれた火から炭が立ち上り、空があるところに雪が降る。

ステップ2. 生命を選ぶ(語彙)

エフェクトパラメータ (ショットフィールド)値
漂うフォグバンドfog + fogc(強度 0..1, 開始y, 全面y, ドリフト速度); 色 (r, g, b) 0..1
ハイライト上のライトスイープsweep(周期 s, バンド幅 px, 強度, 0)
一点周りの焚き火の揺らめきflick + fire振幅 (0.07 ~ 0.45); (x, y, 半径 px)
バンド内の熱のゆらぎshim(y 最大, y ゼロ, 0, 強度)
カメラシェイクshake(開始 s, 長さ s, 振幅 px)
イン/アウトのトランジションtin, tout("fade" または "white", 秒); デフォルトはハードカット
リフレームcrop(x0, y0, x1, y1) ソースピクセル単位
パーティクルティントashc(r, g, b)
パーティクルlife以下のパーティクルシステムに対するレシピまたはラムダ
稲妻boltsショット内の時間のリスト
ガラスのひび割れcrack(開始 s, 長さ s)

パーティクルシステム (painted.py): ash(t, n, wind=(vx, vy), size=(最小, 最大), alpha, seed) 灰、塵、雪用; flakes(...) 大きな柔らかいフレーク用; sparkles(t, n, alpha, size) きらめきと星用; streaks(t, n, speed) 雨用; embers(t, n, src=(x, y), spread, rise, life) 発生源から立ち上る炭用。実際の映画からのレシピ (film_cut.py): SNOW(n, wind), EMB(n, alpha), GLINT, RAIN, STARS(n), GOLD。全パラメータの意味: references/pipeline-modules.md; テスト済みムードレシピ: references/effects-cookbook.md。

グラフィックス (graphics.py, overlays.py): 描画され、音楽に合わせて揺れ、スナップする黄金の糸リボン (T(points, t0, draw, w)); 左から右に書かれる手書きの単語 (W(text, t0, x, y, size)); シーン自身の素材から形成され吹き飛ばされる場所の名前 (V(...)); タイトルフィナーレ。

ステップ3. 音楽にドライブさせる

graphics.Drive はフレームごとのスコア(レベルとパルス)を測定する。ブルーム、炭のフレア、糸のグロー、テキストの呼吸はそれに追随するため、キーフレームなしでヒットが炭をフレアさせる。beatmap.json のヒットにトランジションとシェイクを配置する(shake の開始 = ヒットの時間からショットの開始時間を引いたもの)。

ステップ4. motion フィールドを書く

shotlist.yaml 内、ショットごとに(例: Simorgh の火の森のショット、そして The Lantern Moth の光線):

    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]

何も必要としないショットには motion: none を設定する(ゲートはすべてのショットが決定されていることを要求する)。

ステップ5. QA修正を適用する

qa.yaml のすべての fix について: その呼び出しを実行し(grade.py の recolor または blue、パッチ、ショットへの crop)、_g ファイルを書き込み、ledger.py palette で再測定し、done: true を設定する。マッチしたグレード(プレートレベル)と4Kアップスケールはレンダラーで自動的に行われる。

ステップ6. エクスポート、レンダリング、確認

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

タイムラインを film_cut.py 用の P_() 行として出力する。次に、レンダラー内で:

W=1920 H=1080 python film_cut.py still out/frames 6.0 12.0 24.0     # ストーリーヒットでの静止画
python film_cut.py sheet out/sheet.jpg                              # ショットあたり1フレーム
python film_cut.py video film/preview_1080p.mp4 audio/score.wav     # スコア付きプレビュー

音声付きでプレビューを見る。すべてのヒットで静止画を確認する。その後、監督がモーションステージを承認する。

ビデオに支払うタイミング

モーションがストーリーであり、コードで偽造できない場合のみ: 飛行(Simorgh の離陸: スピードランプ付きの実際のクリップ)、クライマックスの誕生または変身。budget.py でコストを見積もる(Kling 4.0: 1080p で5秒あたり16.25クレジット、キーフレームのペインティングは別)。最初にキーフレームをペイントしてQAを通す。モデルがドラフトを提供する場合は安価にドラフトし、1テイクを最終化する。それ以外はすべて、アニメがポーズを保持するように、スナップするペイントされたキーポーズ(poses: 2)で表現される。

出力

  • すべてのショットの motion フィールド(または none)
  • export-cut からの code/timeline.py
  • 適用された修正(_g ファイル、qa.yaml 内の done: true)
  • film/preview_1080p.mp4、ヒットでの静止画、ショットあたり1フレームのシート

ゲートチェックリスト

  • すべてのペイントされたショットにモーションプランまたは motion: none がある
  • すべてのQA修正が適用され、再測定された
  • プレビューが音声付きで視聴され、すべてのヒットでの静止画が確認された
  • 承認済み

修復テーブル

症状修正
スライドショーのように感じるすべての静止には、その世界に関連した1つの生きているレイヤー(パーティクル、フォグ、フリッカー)が必要。シーンごとに変化させる
エフェクトが貼り付けられたように見えるパーティクルをペインティングのashcで着色する。エミッターはペイントされたソースに。フォグの色は空から
フレームがごちゃごちゃしているパーティクルを減らす(nを半分に、アルファを下げる)。シーンごとに1つのエフェクトファミリー
異なる世代のショットがカットでつながらないそのプレートのマッチしたグレードがずれている: レベルを確認。すべてに1つのグレード、グレイン、ビネット
エフェクトが音楽を無視しているヒットが使用されていない: ビートマップのヒットにシェイク、フレア、トランジションを配置する
テキストが読みにくいペインティングの静かなエリア(text_area)に移動し、サイズを大きくし、書き込み速度を遅くする

参考文献

  • references/pipeline-modules.md: レンダラーのモジュールとすべてのパラメータ
  • references/effects-cookbook.md: 完成した映画からの、ムードごとのテスト済みレシピ

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

関連スキル