FilmForge 风格锁定 (Style Lock)
一部由独立生成画面构成的电影,只有每张图像都以相同方式制作——同一个模型、同一个设置、逐词粘贴的同一句 look 句子、每个角色的角色表附加到每个提示中,且其他所有内容保持固定顺序——看起来才像一部电影。本技能写入 style-lock.yaml、角色表以及 continuity.yaml 的角色部分,然后通过 2 到 4 个验证帧证明锁定,之后才能进入绘画阶段消耗积分。
路径:scripts/、templates/ 和 config/ 是本技能内部的文件夹(显示在加载时的基础目录中),由 ./install.sh 放置。如果从仓库克隆工作,则它们位于仓库根目录的 tools/、templates/ 和 config/。
第 1 步:一个模型,一个设置
在同一部电影中只选择一次,绝不混用。绘画电影的默认设置:GPT Image 2.5,高质量,2K,16:9(每幅画 2.75 积分),在代码中放大到 4K。图画书可以使用中等质量(约 1 积分),因为页面以较小尺寸观看且静止。记录在 model: 下,附带价格表的 model_id。
如果 look 未确定,用两个或三个候选 look 绘制同一验证帧(成本低廉),在 100% 缩放下肉眼选择。不要在缩略图上锁定。
第 2 步:look 句子
一句话,逐词作为每个提示的开头。它指明媒介、线条、颜色、纹理和光线,并指向参考资料:“严格按照所附图表的风格”。来自真实电影的工作 look(更多参考见 references/looks.md):
一部手绘二维动画长片的画面,严格按照所附图像的干净风格:自信的墨线,仅在阴影中交叉排线,平涂赛璐珞色彩,富有表现力的动漫面部。没有绘画质感,没有噪点。
这是 Simorgh 的锁定。Buried Soul 的图画书使用了两个,因为它的绘画承载了故事:一个 LIVING look(类似 Cartoon Saloon 的画笔-墨水轮廓线,带有可见的铅笔结构,平坦的图形形状,分层的透明水彩和树胶水彩,凯尔特结纹,发光的金色歌线)和一个 FROZEN look(同一风格用尺子规范:直的木刻线条,灰色排线,平坦的中世纪透视,石板灰、枯骨色和骨色;只有女孩保留颜色)。只有当绘画的变化是故事的一部分时,才使用第二个 look。
第 3 步:避免词尾
一句话,逐词作为每个提示的结尾:模型会偏移到的元素。基础词尾:
避免:3D 渲染、照片写实、文字、水印、多余手指、扭曲的面部。 只添加此 look 会偏移到的元素(动漫、塑料感、CGI、错误媒介)。属于单个镜头的否定词应放在该镜头的 LOCKS 槽位中。
第 4 步:调色板和颜色规则
在 palette: 中命名色板,在 continuity.yaml 中按场景命名颜色脚本(colour.script)。将故事的每个颜色规则转化为一个带有提示子句的 forbid 规则:该子句放入其覆盖的每个提示中,并且 ledger.py palette 根据该规则测量每幅画。示例:Simorgh 的燃烧天空在镜头 41 之前不允许使用蓝色;其之前的每个提示都包含“绝对没有蓝色”。
第 5 步:镜头与构图语言
对于绘画电影:画面像电影帧一样存在,因此构图完成相机的工作。写下镜头感觉(焦距、机位高度),绝对不出现的情况(无鱼眼、无倾斜),以及构图规则(主体在三分线上,当镜头有文字时为文字预留安静区域)。
第 6 步:角色表 (templates/character-sheet.md)
每个角色一张表,附加到该角色出现的每个提示中。
- 正面、背面、面部正面视角,在平坦的中灰视野中使用无阴影平坦光线,这样就不会有光线细节固化到角色中。针对风格化角色进行面部和手部研究;表情:中性、关键情绪及其对立面。
- 比例尺: 角色与共镜中出现的每个角色或道具按真实相对大小绘制在一起。这是 Simorgh 中一只戴胜鸟在 5 帧中被画得太小的教训:比例必须存在于角色表和分类账中,绝不得指望运气。
- 非人类角色获得材质表:它们由什么构成,错误材质列表(“余烬,不是毛皮,不是玻璃”),它们如何移动。
- 每个镜头提示都应带有重新照明子句:“重新照明到此场景;不要复制角色表的平坦光线”。
第 7 步:句柄、锚点、比例锁
对于每个角色,写入 continuity.yaml:一个句柄(每个提示使用的视觉名称:“穿红色针织兜帽的女孩”),一个锚点(一句话完整描述其外观,逐词粘贴),一个比例锁(与始终附近物品的比率),并将角色名称添加到 names:。名称绝不能进入提示:模型可能将名称画成文字,且名称不携带视觉信息。
第 8 步:提示语法(每幅画,此顺序)
| # | 槽位 | 内容 |
|---|---|---|
| 1 | LOOK | look 句子,逐词 |
| 2 | REFERENCES | 每个附件控制的内容,按附件顺序;重新照明子句 |
| 3 | SHOT | 取景、机位高度、镜头感觉、谁坐在哪个三分线上 |
| 4 | SUBJECT AND SCALE | 每个角色的句柄、锚点和比例锁;按比率表示大小;计数(“正好一只猫头鹰”) |
| 5 | MOMENT | 节拍中的瞬间;面部和身体表现的情感 |
| 6 | SETTING | 地点、天气、时间、背景中的内容 |
| 7 | LIGHT | 方向、质量、色温及其在世界中的光源 |
| 8 | COLOUR | 场景的颜色脚本词语 |
| 9 | TEXT AREA | “保持上方三分之一安静:浅色天空用于文字”(仅当文字放置在那里时) |
| 10 | CONTINUITY | 道具和状态,逐词从分类账 |
| 11 | LOCKS | 禁止颜色子句,逐词;特定镜头的否定词 |
| 12 | AVOID | 避免词尾,逐词 |
ledger.py prompts 在消耗任何积分之前机械检查槽位 1、4、10、11 和 12。详细信息及完整示例:references/prompt-grammar.md。
第 9 步:证明锁定
绘制角色表、空置场景板和 2 到 4 个验证帧(那些必须让人有所感受的镜头)。在 100% 缩放下对其运行 forge-frame-qa。现在重绘一张表比以后更好:每幅画都会继承其缺陷。然后运行 production.py signoff style --by <你> --note "<你读到的内容>"。
输出格式
style-lock.yaml(模板):模型、looks、default_look、avoid、语法、参考资料、镜头、调色板、max_chars。- 每个角色表和场景板一个提示文件在
prompts/中,角色表本身在art/sheets/中。 continuity.yaml:角色(句柄、锚点、比例),名称,颜色脚本和禁止规则。- 验证帧及其 QA 判定。
门控检查清单
- 一个模型和设置,附带其价格表 id 记录
- Look 句子和避免词尾已编写;两者中均无名称
- 每个角色:带比例尺的角色表、句柄、锚点、比例锁;名称在
names:中 - 颜色脚本以及每个颜色规则作为带有提示子句的
forbid - 角色表、场景板和验证帧已以 100% 缩放阅读并接受
- 已签署确认
修复表
| 症状 | 修复 |
|---|---|
| 画作风格漂移 | look 句子未在每句提示中逐词出现,或混合了两个模型 |
| 角色在镜头间变化 | 角色表未附加,或锚点被释义;附加并粘贴 |
| 角色尺寸错误 | 提示中无比例锁,或角色表上无比例尺 |
| 名称或文字出现在画面中 | 提示中有名称或引用文字;使用句柄;文字属于代码 |
| 平坦、演播室光效场景 | 复制了角色表的平坦光线:添加重新照明子句 |
| 禁止颜色偷偷出现 | 子句丢失在 LOCKS 中,或规则的阈值太宽松;用 ledger.py palette 测量 |
参考
references/prompt-grammar.md:每个槽位的规则,附完整注释提示references/looks.md:来自真实制作的工作 look 和角色表提示,以及如何编写新 look