FilmForge Painter
你将镜头表转化为属于同一部电影的画作。每个提示由锁定的部分(风格锁定、台账、镜头表)组装而成,从不即兴创作,因此同一角色在每个镜头中都用相同的词语描述。在资金流动前,lint 会验证这一点。
路径:scripts/、templates/ 和 config/ 以下是本技能内的文件夹(其加载时显示的基本目录),由 ./install.sh 放置。从克隆仓库工作时,它们位于根目录的 tools/、templates/ 和 config/。
输入
shotlist.yaml(重定时)、style-lock.yaml、continuity.yaml,以及 art/sheets/ 中的清单和板子。
步骤 1. 台账,逐镜头
为每个镜头,在 continuity.yaml 中写入其条目:哪些角色在画框中,哪些道具(及其持有者),哪些状态(伤口、烟灰、腕带)。道具和状态带有跨度(from、until)。
python3 scripts/ledger.py check continuity.yaml --shotlist shotlist.yaml
它会在以下情况失败:道具在其跨度内且持有者在画框中却缺失;道具或状态超出其跨度;未知 ID;与镜头表不一致的角色列表。在编写提示前修复台账。
步骤 2. 编写每个提示(prompts/<id>.md)
遵循风格锁定的语法,逐槽填充(forge-style-lock、references/prompt-grammar.md):
- 外观:此镜头的外观(镜头表中的
look:,否则为默认值),逐字照搬。 - 参考:每个附加资产的子句,按附加顺序来自
style-lock.yaml references:;重光子句。 - 镜头:镜头表的构图、摄像机高度、镜头感觉、三分法位置。
- 主体与比例:每个角色的手柄 + 锚点 + 来自台账的比例锁定;数量。
- 时刻:镜头的情感节拍作为一个瞬间。
- 场景:地点、天气、时间、背景。
- 光线:方向、质量、色温及其世界中的光源。
- 色彩:场景的色彩剧本用词。
- 文本区域,当镜头有
text_area或旁白覆盖时。 - 连续性:此镜头的台账道具和状态,逐字照搬。
- 锁定:覆盖此镜头的每个
forbid子句,逐字照搬;镜头特定的否定。 - 避免:尾部,逐字照搬。
文件格式,精确如下:
# s02:最后一根火柴
模型:gpt-image-2.5,高,2K,16:9。附加:sheet_girl,sheet_moth。
```
<提示,第 1 至 12 槽作为段落>
```
第一个围栏块是提示;其余是给人看的笔记。
步骤 3. 花钱前进行 Lint
python3 scripts/ledger.py prompts continuity.yaml --prompts prompts --style style-lock.yaml --shotlist shotlist.yaml
它会在以下情况失败:提示不以外观开头;不以避免尾部结尾;缺少角色的手柄或比例锁定;缺少道具或状态锚点;缺少禁止颜色子句;或包含角色名称。production.py spend 在 lint 失败时拒绝支付绘画阶段费用。在引擎的示例中,lint 捕获了 s03 缺少比例锁定;根据该提示绘制的画作将飞蛾画成了它真实大小的六分之一。
步骤 4. 以四幅一批进行绘画
- 顺序: 清单和样张(风格阶段),然后是主角帧,接着按场景顺序处理其余部分。重用镜头和代码镜头不花费任何东西;永远不要绘制它们。
- 批次: 四个提示,每个提示按 REFERENCES 槽命名的顺序附加其参考。首先记录支出:
production.py spend 11.0 --item "s05-s08 batch 2"。 - 文件:
art/film/<id>_<slug>.png(s07a_child_reaches.png风格:id 在前,然后是 slug)。重绘为<id>_<slug>_v2.png;修正渐变代码为<id>_<slug>_g.png。工具按名称选择最新版本。 - 每批之后: 在绘制下一批之前,forge-frame-qa 会以全尺寸读取每幅画作。第一批中发现的问题在第二批的提示中修复,然后再重复。
步骤 5. 重绘
重绘来自 forge-frame-qa,附带其原因和修正后的提示。将修正后的提示放入 prompts/<id>.md,进行 lint,记录支出,绘制 _v2,并将其送回 QA。如果原因出在台账或风格锁定中(缺少对所有人的锁定),则在其中修复并重新对每个提示进行 lint。
特殊情况
- 绘本页面: 在每个提示中命名布局(展开 3:2、页面 3:4、透明背景上的小插图 1:1)和文本区域。所有文字设置在书中,从不绘制。
- 视频关键帧: 通过相同的语法绘制第一帧(以及当移动必须精确结束时的最后一帧);运动提示是单独的步骤,仅在关键帧通过 QA 后运行。
- 关键姿势(
poses: 2):每个姿势一个提示,除了 MOMENT 槽外完全相同,以便干净对齐。 - 板子: 空位置,没有角色,跨镜头重用;它们携带场景设置,因此提示保持简短。
输出
- 每个已绘制镜头的
prompts/<id>.md,全部通过 lint。 - 包含每个镜头条目的
continuity.yaml,通过ledger.py check。 art/film/画作,按 id 命名,准备 QA。
每批前的检查清单
-
ledger.py check通过 - 此批次的
ledger.py prompts通过 - 参考按 REFERENCES 顺序附加;正确的清单版本
- 支出已记录;批次不超过四个
- 上一批次有其 QA 裁决
修复表
| Lint 或 QA 发现 | 要修复的槽 |
|---|---|
| 不以风格锁定开头 | 1:粘贴外观,未经编辑 |
| 缺少手柄或比例锁定 | 4:从台账粘贴;添加与画框中某物的比例 |
| 缺少道具或状态锚点 | 10:从台账粘贴 |
| 缺少禁止颜色子句 | 11:粘贴规则的 prompt |
| 使用了名称 | 4 及其他所有地方:替换为手柄 |
| 绘画中尺寸错误或数量错误 | 4:比例锁定和精确数量;然后是清单的比例尺 |
| 主体照明平淡 | 2:重光子句;7:带光源的光线 |
| 绘出文字或字母 | 9 和 12:文本区域用于代码;避免尾部中的“文字” |
参考
references/batching.md:批次规划、命名、版本以及来自真实电影的已处理批次