# NPR 手绘动画导演模块 · v1.0

用于固定IP换装、可爱角色叙事、Stylized NPR 3D / Hand-Painted 3D动画。附加在本Skill共用导演流程上，不覆盖写实、武打、水墨等片型。若用户风格已明确，直接沿用，不重新要求选风格。

## 按需读取

- 设计人物、服装或统一画风：[character-and-style.md](character-and-style.md)
- 写故事、情绪、搞笑节奏及跨段接续：[story-and-shots.md](story-and-shots.md)
- 写多参考Prompt、选择模型和实际执行：[prompt-and-models.md](prompt-and-models.md)
- 后期、连续性与验收：[continuity-and-qa.md](continuity-and-qa.md)
- 真实案例及形成依据：[case-study.md](case-study.md)

## 执行顺序

1. 查明最终选定主图、声音和已认可视频，读取实际节点；不默认候选第一张。
2. 目标→障碍→尝试→协作→回报。先让观众理解事故，再给解决方案。
3. 固定身份，单独设计穿搭。先定造型，再统一角色/场景/道具的NPR语言。
4. 资产职责表、对白窗口、镜头表、首尾状态表同时编写。
5. 按模型当前能力编译真实引用，保存提交参数及返回任务ID。
6. 同步镜头可批量提交；依赖上一段真实结尾的镜头先验收再提交。并行不优先于连续性。
7. 检查实际结果，合成后再整片复核。失败按原因局部修复，保留用户认可版本。
8. 将反馈与修改差异写成记录，区分本次已验证经验、待检验建议及下一集设想。

## 本模块限定的节奏规则

镜头时长服从动作和对白，不机械套用共用模板的3–5秒段长。允许短插镜、反应留白和较长动作镜头，但每段必须连续覆盖总时长，明确硬切/匹配剪辑/遮挡等方式。共用旧JSON模板的校验器仍按其3–5秒协议校验；本模块使用独立的 `templates/npr-continuity.example.json` 与 `scripts/validate_npr_continuity.py`，不把两个schema混用。

## 交付

故事梗概与节拍、人物/场景/道具职责表、逐段Prompt、声线表、状态接续表、真实提交记录、成片EDL与检查边界。参考文档只读；只有用户要求写入时才更新外部文档。公开包不含账号、token、签名URL、原始私人对白日志或无关项目素材。


---

# 人物设计与NPR风格转换

## 将参考职责解耦

|参考|继承|不继承|
|身份原图|脸型、眼距、鼻唇比例、标志性痣、年龄感、肤色|旧服装、姿势、布景|
|穿搭图|款式、配色、层次、廓形、配件位置|模特身份、妆容、身体比例、场景|
|风格图|三维体积、色块、边缘、笔触和阴影组织|其中角色、道具和构图|
|场景资产|空间地理、可行走地面、主要地标|资产展示机位的绝对锁死、无关天气|
|声线|音色、发声习惯、语言身份|示范台词全文与背景音乐|

先从用户已确认原图提取具体身份锚点，避免“漂亮大眼睛”等泛化描述。小如意本案例是棕色短波波头、细碎刘海、温和的原有五官关系与面部标志；不能因为新穿搭参考是金发，就改成金发模特的脸。

## 换装Prompt骨架（填写后才能提交）

参考顺序：图一=@身份，图二=@穿搭，图三=@画风（如有）。
以@身份为唯一人物身份依据，保留[五官关系与标志]。重新设计服装：借鉴@穿搭的[具体廓形/层次/配色]，不继承模特脸和头发。将人物重绘为[具体NPR特征]。先输出一个完整造型，检查识别度和穿着逻辑后，再生成角色资产表。

不要同时写“严格继承原图所有服装”和“更换服装”。若旧衣服仍被继承，降低全身原图干扰，使用明确面部参考；若穿搭图的脸污染身份，用遮罩或裁切去除那张图的脸，其他参考仍必须提供完整身份。

本案例后期采用用户已选的“左侧全身去头、右侧近景保脸”资产，职责是分开服装与面部，不是让视频无头。此方法是针对本片干扰的补救，不作为所有人物的必选流程。不可把与身份有关的所有脸都删除。

## 资产表

默认16:9，左36%正面全身、中36%180°背面全身、右28%正面略15°头胸特写；灰色背景、同一主光、无字无框。全身头顶至鞋底完整、左右高度与鞋底基线一致；同一人、同一套衣服。不对称配件依人物左右，背面不错误镜像。未显示背面仅合理补全，不随意添加口袋/绑带。用户指定别的资产格式时沿用其要求。

## 全资产重绘Prompt骨架

以@已选主图为唯一主体与构图参考，保持身份、造型、物体数量、空间拓扑、透视、镜位及主体轮廓。将整张图转为有可信三维体积的NPR手绘动画：沿结构排列的宽阔不透明水粉笔触，大面积低频色块，局部断续炭笔轮廓，明确冷暖图形阴影，哑光干燥表面。前中后景使用同一套材质；远景简化为色面和空气透视。保留原有色彩、时间、天气。禁止照片皮肤、塑料高光、密集毛孔纤维、均匀油画滤镜、随机碎笔触、文字和无故增加角色。

这是“定设计后转画风”。需要重设计时，先另开造型探索，不把强锁构图与大改设计混在一条请求。

## 验收

不是只有配色相同：人物脸部、服装与环境都应有可辨的概括笔触和三维结构。放大看脸手腿鞋；全身轮廓、关节方向、鞋底透视都要成立。静态图有扭曲时先修资产，避免把错误扩散到视频。复杂道具只有反复出现且状态变化影响叙事时才单独建资产；本片甜筒值得做，微小维修零件不必全部建模。


---

# 剧本、镜头与情绪

## 可爱不等于没有冲突

一段可读的故事先有具体愿望，再让事故改变它。每个事件回答：谁想做什么？什么阻碍？角色做了什么？结果如何改变下一步？本片“度假吃第一口→机器事故→被迫加班→伙伴协作→终于吃到”形成可见的情绪回报。

小如意的专业通过识别故障和协调行动表现，不靠旁白夸自己；傲娇通过话和动作的微小反差表现；无奈保留身体反应和停顿。不要一出事故就立刻讲解决方案，先给事故建立镜头和人物理解镜头。

喜剧建立—误判—揭示—反应。嘭仔堵口笑点来自观众看清“障碍是巡检员自己”，不是无因果地把冰激凌塞进机器。啵啵慢是角色特质，需给它真正有用的行动，而非不断重复“慢”。不要照搬参考片的兔熊鲸，只提炼主观视点、尺度变化与触觉镜头等方法，重新设计角色与事件。

## 镜头表最小字段

镜号、起止秒、功能（建立/信息/反应/动作/回报）、景别、机位与视线、主动作、运镜、对白窗口、环境声、切点、起始状态、结束状态、验收点。每镜只突出一个主要信息，短插镜不要塞完整多步动作。

对白先朗读计时，标明语速、重音、句中停顿与说完后的反应。例如：“我才刚到啊。”带一声短叹气，正常语速，最后留半拍眼神；不通过无限拉长字音填满镜头。不用固定每秒字数强行判断所有声线。允许旁白跨切镜连续铺设，画内角色不误做口型。明确“无字幕、无镜号、无提示文字”，但台词不能仅由文字承担。

## 跨段连续性

1. 读取用户选定的上一段版本，不用被弃用重拍。
2. 抽其实际最后稳定帧，登记左右手持物、人物位置、视线、动作阶段、道具状态、光线/风、镜头运动及环境声音。
3. 下一段先继承状态，再发生新动作。不要为重述前情再解一次已经解开的糖丝。
4. 有后续已认可镜头时同时约束下一个接点，避免修好前端破坏后端。
5. 用视线、动作方向、匹配构图、前景遮挡或声音提前进入接续；遮挡必须来自场内物体，不凭空闪白。
6. 自然衔接不是所有镜头都溶解。动作到动作可硬切；喜剧揭示也需要干净切点。

## 物理因果检查

手指→触到机关→机关转动→糖线被带走，顺序明确；嘴→接触糖卷→咬合→糖卷缩小。禁止物体先消失后触碰。机器恢复给一个观众可见的结果与人物松气，再让主角想起未吃甜筒。情绪高潮之后留简短平静回报，不让每一秒都保持最高强度。


---

# Prompt编译与模型分工

## 本案例实际使用（2026-11，模型可更新）

|阶段|记录中的工具/模型|职责与边界|
|创意和执行|Codex / LLM|整理反馈、剧本、Prompt、代码；主图与版本由人选择|
|造型探索|Midjourney|角色、配角、场景候选；实际参数查当前节点/官方规则，未知版本不编造|
|NPR重绘|Lib Image 2.5 Pro|已选图的风格统一和人物资产表|
|视频|Seedance 2.5，多参考mixed2video|影像/音频参考绑定，分段生成；秒级切点不是可靠编辑时间轴|
|声线|Seed Audio 1.0|配角声音参考；主角使用用户提供的新录音|
|生产管理|LibTV CLI|画布节点、上传、提交、查询，遵守其Skill和实际参数schema|
|后期|Python / FFmpeg|抽帧、剪辑、音轨处理、编码与技术检查|

音频生成具体模型以节点为准，不能因为LibTV承载任务就猜BGM由某个未记录模型生成。执行前读取当前工具能力、时长/比例/数量和价格；遵循用户现有付费授权，不重复请求已授权步骤，不把授权扩展到无限重试。

## 每段独立Prompt骨架

```text
素材职责（与实际上传顺序一致）：
图一=@上一段末帧：继承姿态、左右手与道具状态；不是让人物静止。
图二=@人物：仅取身份和服装，排除资产表背景、分格和分身。
图三=@场景：取地理、结构、材质；机位按下表变化。
图四=@道具：取形状颜色；本段初始状态为[状态]。
音频一=@主角声线：取同一音色，不复述示范台词。
音频二=@配角声线：仅供对应配角；禁止声线交换。

视觉：有稳定三维体积的NPR手绘动画；宽水粉笔触，图形明暗，哑光低频材质，人物与环境统一。
开场继承：[上一段实际结束状态]。
本段目标：[观众必须看懂的信息和情绪变化]。
剪辑：本段包含[数量]个独立镜头。按列出的切点和景别切换；不合并成慢速环绕，不生成字幕、片名或镜号。
0–Xs｜镜01｜景别/机位｜主体动作｜运镜｜切点
X–Ys｜镜02｜同上……
对白窗口：角色、原句、起止、语速、停顿、口型/画外声。
近场声音：[由画面动作产生的声音]；BGM后期统一铺设。
段末继承：[为下一段保留的姿态、持物、视线、动作阶段]。
硬约束：[本段最重要的3–5条，如接触后变化、不能重复解线]。
```

`@alias`是撰写层。提交前用当前真实节点ID/工具要求引用格式编译；例如LibTV实际节点可表现为`{{Node 实际ID}}`，但必须查当前CLI规则，不能发送未替换占位符。混合参考序号取自实际上传顺序，不复制别人的Mixed编号。

## 执行与复盘

主图选择后读取当前节点实际主图，不能盲取第一张。图片引用不等同于自动继承全部Prompt。依赖镜头末帧时先等待并验收；独立资产可按用户授权并行提交。保存输入、任务ID、输出、选择理由；轮询原任务至终态，避免超时重新扣费。被用户否决的结果保留但不再作为默认。

生成失败先读错误与能力限制，再缩小一个变量；需要查Midjourney规则时看官方当前要求，不能宣称“Prompt太长”是未经证实的根因。若编辑工具返回成功但画面没变，归类“未落实修改”，勿把成功状态当验收。必要时最小范围重拍，并约束两端接点。


---

# 连续性、后期与检查边界

## 状态账本

每段至少记：人物在场/左右位置、左右手持物、道具新鲜度/缺口/糖线、动作阶段、镜位/光线、声线ID。尾状态必须等于下一段头状态；允许变化须有明确可见转场解释。

运行 `python3 scripts/validate_npr_continuity.py templates/npr-continuity.example.json` 检查时间连续、引用存在、对白窗口和跨段状态。此脚本只验证计划数据，不验证生成画面。实际验收仍须抽帧、观看和听审。

## 分层验收

1. 静态资产：脸手腿鞋、服装正反连续、相同风格。
2. 单段视频：事件可读、动作因果、对白完整、声线稳定、无字幕、局部变形。
3. 接点：对比前段末/本段首、本段末/后段首；看方向、视线、手中物体及运动势能。
4. 全片：解码、黑帧、冻结、音频峰值/响度/声道、完整播放和听审。抽样检查要写抽样数和时点，不声称每帧人工检查。

ASR可发现断句、重复或漏句，不能判断所有音质与情绪。信号峰值正常不能排除噪音；“未识别到台词”不等于没有微弱对白。回放听审未完成时明确保留边界。

## 修复优先级

阻断理解/错误身份 > 肢体与物理因果 > 接点 > 对白与声线 > BGM > 细节装饰。先定位时段、输入版本、问题类型，再决定重绘、重拍、重剪或音轨修复。不要为了细小装饰整体重生已认可片段。

- 声音修复：原句若被截断，恢复完整句及自然呼吸。覆盖前检查是否已有弱对白，不能叠出两句。语音移植只用项目已授权录音。
- BGM：坏尾段须排除；用干净乐段和合适的交叉淡化衔接，重新检查连接点与尾幕，不只是把坏尾巴调小。
- 编辑未落实：保留原始与失败输出，重新描述可观察的变化；若转为重拍，保留上下游参考。
- 导出：保留EDL、片头片尾版本、音频修复来源、实际时长分辨率；完整成片是独立验收对象。

不得虚构观看/听审或完成状态。用户要求直接生成时在授权范围执行；技术限制和真正阻塞才需要说明，不能停在“建议你自己操作”。


---

# 《小如意奇游记》EP01案例与模块形成

本模块于2026-11-09，在《假期借我一下》FILM09完成后，基于实际制作记录沉淀。不是声称此前已有本模块指导全片，也不是将参考创作者的作品/Prompt归为原创。借鉴其素材职责与手绘组织方法，重新设计本片故事、角色和事件。

## 制作中的反馈→方法

|实际反馈/问题|处理与可复用经验|
|太写实|从宽水粉色面、断续边缘与哑光体积统一角色/场景，不只改色或加油画滤镜|
|只固定脸，想换衣服|身份与穿搭参考拆分；避免原图服装硬锁和模特脸干扰|
|主图不是第一张|重新读取当前选定主图，生成前验证引用|
|不要照抄兔熊鲸，拒绝飞蛾|根据糖果小镇设计布丁、爆米花巡检员、汽水蜗牛；尊重否决项|
|剧情平、看不懂|用“第一口”建立愿望和回报，清楚展示事故及行动|
|用冰激凌堵口不合理|保留用户认可的嘭仔卡口喜剧，将障碍变为角色事件|
|衔接比以前更硬|回到用户认可V3.2，使用其真实结尾继续，不自作主张升级|
|片头腿鞋扭曲|重新生成自然站姿并核验道具一致性，不能只贴字挡问题|
|糖卷先消失、收线无施动者|FIX06重拍，要求触碰后变化和角色主动收线|
|FIX05编辑返回成功但未改|保留失败记录，改为定向生成，验证实际输出|
|断句、重复弱对白|恢复完整句，清理原弱对白后再处理；ASR不能替代听审|
|2分十几秒后BGM噪音|排除坏尾段，用干净片段重编并复核成片|

## 当前作品记录

FILM09：162秒，1280×720，24fps，3888帧。整片解码检查与密集抽帧、ASR和音频信号检查有记录；不能据此声称全片逐帧人工看审或完整实际听审。后续发现问题仍需更新版本。

## 形成与优化

- v0.1：从资产/剧本/Prompt记录提取方法，留存初稿。
- v0.2：逐一映射实际失败，加入状态接续、实际输出验收、声音重复与坏尾段边界。
- v1.0：按需路由并入原Skill，提供可执行状态校验器，验证正常样例与故意破坏样例；详细记录随作品展示包保存。

这三步是本次整理的修订阶段，不伪造历史运行次数或成功率。验收通过的是文档/数据与脚本，不等于保证下一次模型生成一定成功。
