Communitygithub.com

avalner/living-paintings

製作畫作動畫影片:鏡頭從房間接近畫框,畫中場景「活過來」,並可選擇拉遠鏡頭。適用於「活起來的畫作」及 Paintings 系列後續影片;不適用於一般電影或獨立圖片編輯。

living-paintings 是什麼?

這個技能專為生成「畫作活化」類影片而設計,核心概念是讓靜止的畫作在鏡頭推進後變為動態場景。它利用統一的 `comfy-film` 控制器(可在 Codex、DeepSeek Harness 和 Claude Code 中使用)進行生成、審查、恢復和最終交付。技能明確區分房間運動與畫作動畫:先製作房間參考,再使用原始高解析度藝術品進行平面合成,並透過確定性裁切/縮放來實現鏡頭推進,而非依賴 H3 模型自行推斷。當畫作「活起來」時,它採用 I2VA(影像到影片動畫)技術從推進終點靜止畫面開始生成,並提出透過測量亮度跳躍來確保剪接處平滑的具體方法。該技能也包含了完整的審查與完成工作流程,包括檢查時間軸上的偽影、使用剪輯後的端點進行拼接、可選的最終放大,以及將所有決策記錄在 `brief.md` 中。它支援多個 AI 代理平台,但針對不同平台的工具使用方式提供了明確的指引(例如,在沒有瀏覽器面板的平台上如何提供進度連結)。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

活起來的畫作

使用此技能進行畫作影片的視覺設計與合成。使用已安裝的 comfy-film 控制器進行生成、審查、恢復和最終交付。每個代理程式中的控制器都是相同的——Codex (~/.codex/skills/comfy-film/SKILL.md)、DeepSeek Harness (~/.dsh/skills/comfy-film-dsh/SKILL.md) 和 Claude Code (~/.claude/skills/comfy-film-dsh/SKILL.md)——它們都驅動同一個 $Tools/comfy-film/scripts/film.py;僅周邊工具不同。請按需閱讀相關參考資料;不要重新創建其控制器。對於實質性的 H3 提示,請使用 h3-prompt-writing。

平台差異(Codex → DeepSeek Harness / Claude Code)

Codex 習慣替代做法
Codex 瀏覽器面板顯示進度頁面將 progress.py --serve 作為背景任務啟動,並從 .pipeline/progress-server.json 發布驗證過的 URL
使用選單工具進行接受/更改/拒絕使用 ask_user_question 並附上兩個字的標籤;連結和數字應放在其上方的訊息中
圖片可直接在對話中渲染圖片/文件使用路徑連結放在尖括號中;每個片段使用 http://127.0.0.1:8199/watch/...(伺服器:comfy-film-dsh/scripts/serve-media.py)
委派給子代理程式進行草稿在父代理程式中打草稿;DSH 對此類影片沒有草稿委派功能
最終處理使用 comfy-film-dsh/scripts/finalize_delivery.py --input ... --no-upscale

發布、審查和剪輯規則保持不變;它們位於 comfy-film 技能中。

開始或恢復

  • 將專案保存在 $Paintings/<英文名稱> 下。將原始藝術品、房間參考、提示、生成的作品、剪輯片段和最終匯出檔都存放在該專案內。避免依賴於剪貼簿/暫存檔案或其他專案的輸出資料夾。
  • 恢復時,執行 film status --project PROJECT 並閱讀當前的 brief.md。技術狀態存在於 film.json 中;核准狀態不能從檔案是否存在來推斷。
  • 對於新畫作,請在設計關鍵影格或生成影片前先閱讀 workflow.md。它包含了經過測試的配方以及「Living Cafe Painting」中的具體失敗案例。
  • 重複使用使用者提供的格式、時長、音效和鏡頭選擇。先前影片的 5 秒推進 + 10 秒動畫 + 5 秒後退只是一個範例,並非每幅畫作的自動選擇。

將房間運動與畫作動畫分開

  1. 設計一個房間參考,使裱框畫作正面朝前,並在周圍留有足夠空間以實現預期的推進效果。將原始高解析度藝術品作為單獨的來源保存。
  2. 當使用者希望在推進過程中保持藝術品靜止時,將該原始藝術品合成到畫面中,並以確定性方式動畫化均勻的平面裁切/縮放。不要要求 H3 憑空創造房間到街景的移動:在經過測試的專案中,它改變了內部透視。不要放大房間影像中微小且已內嵌的畫作:這會導致模糊。
  3. 渲染推進過程,使其最終影格完全落在藝術品內部。檢查原始藝術品是否有足夠的像素來應對最緊密的裁切。高解析度的房間畫布有助於合成精度,但不會增加藝術品的細節;在最終輸出取樣之前,請保留原始來源的像素。
  4. 從實際被接受的推進端點開始生成活起來的場景。這是一個刻意的新動作,從靜止姿態開始:使用 I2VA 搭配該靜止畫面,而不是將房間/推進作為移動引導。comfy-film 中的預設引引導仍適用於延續已進行的動作,而非此處的過渡。
  5. 使用簡短的肯定提示,描述固定的街道/風景視點以及描繪場景內的一些小幅度動作。不要描述進入或穿過畫作。請參閱 workflow.md 中的成功提示模式。
  6. 對於靜態藝術品的後退,請凍結已接受的活起來場景中實際選取的最後一個影格,將其註冊到高解析度房間/藝術品合成中,並動畫化反向的平面裁切/縮放。不要在銜接處重置回原始藝術品中較早的角色姿勢。檢查邊緣是否有拼接接縫;僅在合適處使用抑制性的羽化效果。

保持鏡頭運動與描繪場景運動的獨立可控性。當使用者希望改變透視時,可以使用生成式鏡頭移動;平面藝術品方法適用於靜態藝術品概念。

銜接到活起來的作品時,眼睛最容易察覺跳躍

H3 不會複製其條件化靜止畫面:它會重新渲染其前幾個影格,這些影格看起來更平坦、亮度低幾個點,並且天空被重繪。相較於清晰的合成推進影格,即使縮放和偏移完全匹配,這在剪接點處也會表現為亮度階梯。在「Living Tulip Balloons」中,剪接點承載了影片中最大的單影格亮度階梯(-2.04),而銜接處的偏移為 0,縮放為 1.000。

進行測量,不要猜測:解碼一次組裝好的剪接點,並列印每個影格的平均亮度;銜接處不應是影片中最大的階梯。如果確實如此,則用一個確定性的溶解取代該作品的前 12 個影格,從推進的實際最後一個影格開始,收斂到作品自身的影格(權重 k/12)。不重新計時,不憑空創造,並且作品顯示的第一個影格正好是攝影機停止的畫面。配方和數字:workflow.md。

審查與完成

  • 遵循 comfy-film 的影格、片段和最終審查關卡。已核准來源的確定性擬合和端點提取繼承其來源的核准狀態;新的生成式房間或藝術品重繪需要其自身的審查。
  • 在展示動畫候選版本之前,檢查其完整時間軸是否有前景手部、開啟的面板/窗戶、不必要的鏡頭移動、佈局漂移、角色偽影和細節損失。僅成功解碼不等於視覺審查通過。如果發現問題,請公開說明並遵循 comfy-film 授權的重試規則。
  • 使用實際修剪後的端點進行拼接。H3 會對時長進行四捨五入;僅移除滿足所選計畫所需的多餘影格。保留已核准的來源片段和版本。
  • 如果提供了音樂,在可能的情況下保持影片不變;儲存一個新的最終版本。根據提供的音軌設定音樂/環境音的平衡和淡入淡出,而不是盲目重複第一部影片的混音。
  • 最終放大是可選的:除非明確要求,否則使用 finalize_delivery.py --no-upscale。生成 H.264 yuv420p/AAC,並啟用 faststart,然後驗證解碼。提供可點擊的本地 MP4 連結;在經過測試的對話中,僅有內嵌影片對使用者是不可見的。
  • 將選定的幾何參數、來源版本、提示、接受的作品、修剪、混音和最終審查狀態保存在 brief.md 中。僅當某個經驗教訓會改變未來的決策時,才在此記錄一個新的可重複使用的課程;將一次性座標保留在專案中。

現有範例

$Paintings/Living Cafe Painting 是經過測試的範例。其 brief.md 保留了決策和被拒絕的變體;clips/ 包含已接受的片段;.pipeline/drafts/prompts/part2-v4.txt 是成功的活起來場景提示。最終版本 v2 包含了使用者的音樂,仍在等待明確的最終影片核准。這些事實並不認可未來的影片或授權發布。

相關技能