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