Communitygithub.com

avalner/living-paintings

Crie vídeos em que uma câmera se aproxima de uma pintura emoldurada em uma sala, a cena retratada ganha vida e, opcionalmente, a câmera recua. Use para quadros vivos e vídeos subsequentes da série Pinturas; não para filmes genéricos ou edições de imagem independentes.

O que é living-paintings?

Esta habilidade é projetada para o design visual e composição de vídeos de pinturas que ganham vida, operando como um controlador especializado para o sistema `comfy-film`. Ela suporta múltiplos ambientes de agente, como Codex, DeepSeek Harness e Claude Code, todos acionando o mesmo script `film.py`, mas com diferenças nas ferramentas ao redor — por exemplo, em vez do painel do navegador do Codex, o DSH usa `progress.py --serve` e `ask_user_question`. O usuário é guiado através de um fluxo de trabalho rigoroso que separa o movimento da câmera na sala da animação do quadro, garantindo transições suaves e evitando artefatos como borrões ou saltos de brilho. A habilidade enfatiza o uso de composição determinística (escala/corte planar), inspeção manual de quadros para qualidade, e um processo de revisão em várias etapas (aprovação de fontes, cortes e final). Para novas pinturas, é essencial consultar o `workflow.md` antes de gerar vídeo, pois contém receitas testadas e falhas conhecidas. O resultado final é um MP4 H.264 com AAC, com opção de upscale, e todas as decisões (geometria, prompts, takes aprovados) são registradas em um `brief.md` para rastreabilidade.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/avalner/comfy-film-kit/tree/HEAD/skills/living-paintings

Perguntar na sua IA favorita

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

Documentação

Pinturas vivas

Use esta habilidade para o design visual e composição de vídeos de pinturas. Use o controlador comfy-film instalado para geração, revisões, recuperação e entrega final. É o mesmo controlador em cada agente — Codex (~/.codex/skills/comfy-film/SKILL.md), DeepSeek Harness (~/.dsh/skills/comfy-film-dsh/SKILL.md) e Claude Code (~/.claude/skills/comfy-film-dsh/SKILL.md) — todos eles acionam o mesmo $Tools/comfy-film/scripts/film.py; apenas as ferramentas ao redor diferem. Leia as referências relevantes conforme necessário; não recrie seus controladores. Para prompts H3 substantivos, use h3-prompt-writing.

Diferenças de ambiente (Codex → DeepSeek Harness / Claude Code)

Hábito do CodexO que fazer em vez disso
Painel do navegador Codex para a página de progressoInicie progress.py --serve como um job em segundo plano e publique a URL verificada de .pipeline/progress-server.json
Ferramenta Menu para aceitar/alterar/rejeitarask_user_question com rótulos de duas palavras; links e números pertencem à mensagem acima dela
Imagens confiáveis para renderizar no chatLink de caminho entre colchetes angulares para imagens/documentos; http://127.0.0.1:8199/watch/... para cada clipe (servidor: comfy-film-dsh/scripts/serve-media.py)
Rascunho delegado a um subagenteFaça o rascunho no pai; o DSH não tem delegação de rascunho para esses filmes
Processamento finalcomfy-film-dsh/scripts/finalize_delivery.py --input ... --no-upscale

As regras de publicação, revisões e montagem permanecem inalteradas; elas estão na habilidade comfy-film.

Iniciar ou retomar

  • Mantenha os projetos sob $Paintings/<Nome em inglês>. Armazene a obra de arte original, referência da sala, prompts, takes gerados, clipes de montagem e exportações finais dentro desse projeto. Evite dependências de área de transferência/arquivos temporários ou da pasta de saída de outro projeto.
  • Ao retomar, execute film status --project PROJECT e leia o brief.md atual. O estado técnico está em film.json; aprovações não são inferidas a partir da existência de arquivos.
  • Para uma nova pintura, leia workflow.md antes de projetar keyframes ou gerar vídeo. Ele contém a receita testada e falhas específicas do Living Cafe Painting.
  • Reutilize as escolhas de formato, temporização, som e câmera fornecidas pelo usuário. A abordagem de 5s + animação de 10s + recuo de 5s do filme anterior é um exemplo, não uma escolha automática para toda pintura.

Separe o movimento da sala da animação da obra de arte

  1. Projete uma referência de sala com a pintura emoldurada de frente e espaço suficiente ao redor para a aproximação pretendida. Mantenha a obra de arte original em alta resolução como uma fonte separada.
  2. Quando o usuário quiser a obra de arte estática durante a aproximação, componha essa obra original no quadro e anime um corte/escala planar uniforme deterministicamente. Não peça ao H3 para inventar o movimento da sala para a rua: no projeto testado, ele mudou a perspectiva interna. Não aplique zoom na pequena pintura embutida na imagem da sala: ela ficará borrada.
  3. Renderize a aproximação de modo que seu quadro final esteja completamente dentro da obra de arte. Verifique se a obra original tem pixels suficientes para o corte mais apertado. Um canvas de sala em alta resolução ajuda na precisão da composição, mas não adiciona detalhes à obra; preserve os pixels da fonte original até a amostragem final de saída.
  4. Inicie a cena viva a partir do ponto final real da aproximação aceita. Isso é deliberadamente uma nova ação a partir de uma pose estática: use I2VA com essa pose estática, em vez de carregar a sala/aproximação como um guia em movimento. O padrão de guia no comfy-film permanece apropriado para continuar uma ação já viva, não para esta transição.
  5. Use um prompt afirmativo curto descrevendo o ponto de vista fixo da rua/paisagem e alguns pequenos movimentos dentro da cena retratada. Não descreva entrar ou passar pela pintura. Veja o padrão de prompt bem-sucedido em workflow.md.
  6. Para um recuo com obra estática, congele o último quadro real selecionado da cena viva aceita, registre-o na composição de alta resolução sala/obra e anime o corte/escala planar inverso. Não redefina para as poses de personagens anteriores da obra original na junção. Inspecione as bordas em busca de costuras de registro; use feathering contido apenas onde adequado.

Mantenha o movimento da câmera e o movimento da cena representada independentemente controláveis. Movimentos de câmera generativos podem ser usados quando o usuário deseja mudanças de perspectiva; o método da obra plana aplica-se ao conceito de obra estática.

A junção no take vivo é onde o olho percebe um salto

O H3 não copia sua imagem de condicionamento: ele re-renderiza seus primeiros quadros, que saem mais planos e alguns luma mais escuros, com um céu redesenhado. Contra o quadro nítido da composição da aproximação, isso é lido como um degrau de brilho no corte, mesmo que escala e deslocamento coincidam exatamente. No Living Tulip Balloons, o corte carregou o maior degrau de luma de quadro único do filme (-2,04) enquanto a junção mediu 0 de deslocamento e 1,000 de escala.

Meça, não adivinhe: decodifique o corte montado uma vez e imprima o luma médio por quadro; a junção não deve ser o maior degrau do filme. Quando for, substitua os 12 quadros iniciais do take por uma dissolução determinística que comece no último quadro real da aproximação e convirja para os próprios quadros do take (peso k/12). Nada é re-temporizado, nada é inventado, e o primeiro quadro exibido do take é exatamente a imagem em que a câmera parou. Receita e números: workflow.md.

Revisões e finalização

  • Siga as portas de revisão de quadro, clipe e final do comfy-film. O ajuste determinístico de fontes aprovadas e a extração de ponto final herdam sua aprovação de fonte; um novo ambiente generativo ou redesenho de obra precisa de sua própria revisão.
  • Antes de exibir um candidato a animação, inspecione toda sua linha do tempo em busca de mãos em primeiro plano, painéis/janelas abrindo, movimento de câmera indesejado, desvio de layout, artefatos de personagem e perda de detalhes. A decodificação bem-sucedida por si só não é aprovação visual. Em caso de falha, divulgue-a e siga as regras autorizadas de nova tentativa do comfy-film.
  • Use os pontos finais reais aparados para as junções. O H3 arredonda a duração; remova apenas os quadros excedentes necessários para atender ao plano selecionado. Preserve clipes e versões de fonte aceitos.
  • Com música fornecida, mantenha o vídeo inalterado quando possível; salve uma nova versão final. Ajuste o equilíbrio música/ambiente e os fades para a faixa fornecida, em vez de reutilizar cegamente a mixagem do primeiro filme.
  • O upscale final é opcional: use finalize_delivery.py --no-upscale a menos que explicitamente solicitado. Produza H.264 yuv420p/AAC com faststart e verifique a decodificação. Forneça um link MP4 local clicável; um vídeo inline por si só não era visível para o usuário no chat testado.
  • Salve a geometria selecionada, versões da fonte, prompts, takes aceitos, cortes, mixagem e status da revisão final em brief.md. Registre uma nova lição reutilizável aqui apenas quando ela mudar decisões futuras; mantenha coordenadas únicas no projeto.

Exemplo existente

$Paintings/Living Cafe Painting é o exemplo testado. Seu brief.md preserva decisões e variantes rejeitadas; clips/ contém segmentos aceitos; .pipeline/drafts/prompts/part2-v4.txt é o prompt bem-sucedido da cena viva. A v2 final inclui a música do usuário e ainda aguarda aprovação explícita do filme final. Esses fatos não aprovam filmes futuros nem autorizam publicação.

Habilidades Relacionadas