Communitygithub.com

galloforge/forge-motion

FilmForge Motion: planeja a vida de cada plano em código em vez de créditos (pinturas paradas ganham vida com neblina flutuante, cinzas, neve, chuva, brasas, brilhos, varreduras de luz, cintilação de fogo, tremor de calor, vibração, relâmpagos, rachaduras de vidro, transições, fios dourados, palavras manuscritas e títulos), mapeia cada efeito para os parâmetros exatos do renderizador painted-film-pipeline, aplica correções de QA de quadro, exporta a linha do tempo de edição e renderiza a prévia; decide quando o vídeo pago vale seus créditos.

O que é forge-motion?

FilmForge Motion é uma skill para agentes de IA especializada em adicionar movimento e efeitos visuais a pinturas estáticas em filmes, como se fossem quadros de animação. Ela preenche o campo `motion` de cada plano em um arquivo de lista de planos (`shotlist.yaml`), aplica correções de garantia de qualidade (QA) em cada quadro, e exporta a linha do tempo para o renderizador `painted-film-pipeline`. A skill é especialmente útil para criadores que usam IA para gerar filmes pintados quadro a quadro, onde o movimento interno (partículas, névoa, luz) é gerado por GPU e vídeos pagos (como Kling) são reservados para ações que a IA não pode simular (voos, transformações). Seu funcionamento é guiado por passos: ler o estado atual da pintura, escolher efeitos de um vocabulário pré-definido (como neblina, fagulhas, tremores), sincronizar com a música usando dados de batidas, escrever as configurações no `yaml`, executar correções de cor e exportar para renderização. A skill também determina o custo-benefício de usar vídeos gerados por IA paga.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

FilmForge Motion

Pinturas permanecem como quadros de filme; sem zooms, sem deriva. O movimento vem de dentro do quadro: partículas, névoa, cintilação, brilho, luz, tudo renderizado na GPU sem custo. Vídeo pago é reservado para o que o código não pode fazer (um voo real, uma transformação que é o clímax do filme). Esta skill preenche o campo motion de cada plano, aplica as correções de QA, exporta a linha do tempo para o renderizador e renderiza a prévia que o diretor aprova.

Caminhos: scripts/, templates/ e config/ abaixo são pastas dentro desta skill (o diretório base mostrado quando ela carrega), colocadas lá por ./install.sh. Trabalhando a partir de um clone do repositório, elas são tools/, templates/ e config/ na raiz.

O renderizador é o painted-film-pipeline (Python e GLSL; módulos nomeados abaixo). Todos os valores de pixel são 4K (3840x2160); o renderizador os escala por K = W / 3840, então uma prévia em 1080p usa os mesmos números.

Passo 1. Ler o plano

Para cada plano: sua batida, o clima e o script de cor da cena, sua duração após reajuste de tempo, a música que o acompanha (frases, batidas em beatmap.json), o que já está na pintura (fogo, mar, céu, vidro). A vida deve pertencer ao mundo da pintura: brasas sobem de um fogo que está pintado ali; neve cai onde o céu está.

Passo 2. Escolher sua vida (o vocabulário)

EfeitoParâmetro (campo do plano)Valores
Faixa de névoa flutuantefog + fogc(força 0..1, y onde começa, y onde está total, velocidade de deriva); cor (r, g, b) 0..1
Varredura de luz sobre realcessweep(período s, largura da faixa px, intensidade, 0)
Cintilação de fogo ao redor de um pontoflick + fireamplitude (0.07 a 0.45); (x, y, raio px)
Tremor de calor em uma faixashim(y total, y zero, 0, força)
Vibração de câmerashake(início s, duração s, amplitude px)
Transição de entrada / saídatin, tout("fade" ou "white", segundos); padrão é corte seco
Reenquadramentocrop(x0, y0, x1, y1) em pixels de origem
Matiz de partículasashc(r, g, b)
Partículaslifeuma receita ou um lambda sobre os sistemas de partículas abaixo
Relâmpagoboltslista de tempos no plano
Rachadura de vidrocrack(início s, duração s)

Sistemas de partículas (painted.py): ash(t, n, wind=(vx, vy), size=(min, max), alpha, seed) para cinzas, poeira e neve; flakes(...) para flocos grandes e macios; sparkles(t, n, alpha, size) para brilhos e estrelas; streaks(t, n, speed) para chuva; embers(t, n, src=(x, y), spread, rise, life) para brasas subindo de uma fonte. Receitas do filme real (film_cut.py): SNOW(n, wind), EMB(n, alpha), GLINT, RAIN, STARS(n), GOLD. Significados completos dos parâmetros: reference/pipeline-modules.md; receitas de humor testadas: references/effects-cookbook.md.

Gráficos (graphics.py, overlays.py): fitas de fio dourado que desenham, balançam com a música e estalam (T(points, t0, draw, w)); palavras manuscritas escritas da esquerda para a direita (W(text, t0, x, y, size)); nomes de lugares que se formam a partir do material da própria cena e voam para longe (V(...)); o título final.

Passo 3. Deixe a música conduzir

graphics.Drive mede a partitura por quadro (nível e pulso). Floração, brilho de brasas, brilho do fio e respiração do texto seguem-na, então um golpe faz as brasas brilharem sem um quadro-chave. Coloque transições e tremores nos golpes do beatmap.json (início do shake = tempo do golpe menos o início do plano).

Passo 4. Escrever o campo de movimento

Em shotlist.yaml, por plano (exemplo: um plano de floresta em fogo de Simorgh, e o feixe da Mariposa Lanterna):

    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]

Um plano que não precisa de nada recebe motion: none (a comporta quer cada plano decidido).

Passo 5. Aplicar as correções de QA

Para cada fix em qa.yaml: execute sua chamada (grade.py recolor ou blue, um patch, um crop no plano), escreva o arquivo _g, meça novamente com ledger.py palette, então defina done: true. A grade combinada (níveis de placa) e a escala 4K são automáticas no renderizador.

Passo 6. Exportar, renderizar, olhar

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

imprime a linha do tempo como linhas P_() para film_cut.py. Então, no renderizador:

W=1920 H=1080 python film_cut.py still out/frames 6.0 12.0 24.0     # stills nos golpes da história
python film_cut.py sheet out/sheet.jpg                              # um quadro por plano
python film_cut.py video film/preview_1080p.mp4 audio/score.wav     # a prévia com a partitura

Assista à prévia com som. Verifique os stills em cada golpe. Então o diretor aprova a etapa de movimento.

Quando pagar por vídeo

Apenas quando o movimento é a história e o código não pode falsificá-lo: voo (lançamento de Simorgh: clipes reais com rampas de velocidade), um nascimento ou transformação no clímax. Custeie em budget.py (Kling 4.0: 16.25 créditos por 5 s em 1080p, mais a pintura do quadro-chave); pinte os quadros-chave primeiro e passe-os pelo QA; rascunhe barato onde o modelo oferece um rascunho e finalize uma tomada. Todo o resto é contado em poses-chave pintadas que estalam (poses: 2), da mesma forma que o anime segura uma pose.

Saída

  • campo motion de cada plano (ou none)
  • code/timeline.py do export-cut
  • as correções aplicadas (arquivos _g, done: true em qa.yaml)
  • film/preview_1080p.mp4, stills nos golpes, uma folha de um quadro por plano

Lista de verificação da comporta

  • Cada plano pintado tem um plano de movimento ou motion: none
  • Cada correção de QA aplicada e re-medida
  • A prévia assistida com som; stills em cada golpe verificados
  • Aprovado

Tabela de reparos

SintomaCorreção
Parece uma apresentação de slidesCada pausa precisa de uma camada viva ligada ao seu mundo (partículas, névoa, cintilação); varie-as por cena
Efeitos parecem coladosTingir partículas com ashc da pintura; emissores em fontes pintadas; cor da névoa do céu
Quadros movimentados, barulhentosMenos partículas (metade n), alpha mais baixo; uma família de efeitos por cena
Planos de diferentes gerações não cortam juntosA grade combinada está errada para aquela placa: verifique os níveis; uma grade, granulado e vinheta para todos
Efeitos ignoram a músicaGolpes não usados: coloque tremores, explosões e transições nos golpes do beatmap
Texto difícil de lerMova para a área tranquila da pintura (text_area), aumente o tamanho, desacelere a escrita

Referências

  • references/pipeline-modules.md: os módulos do renderizador e todos os parâmetros
  • references/effects-cookbook.md: receitas testadas por humor, de um filme finalizado

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

Habilidades Relacionadas