2 中间产物
✅ 已验证
流程每一步都落一个文件。看懂这些文件,就能在任何一步停下来检查,不用等整条链跑完。
目录布局
work/
input/origin.png 输入
cache/origin/ 读画 (trace_prepare.py) 的产物
plan.json 部件 / 色阶 / 轮廓控制点 / 主体剪影 ← 给 Krita 建矢量层
strokes.jsonl 一行一笔的计划 ← 给 Krita 逐笔画
parts.png 部件伪彩图
cells.png (部件, 色阶) 联合标签的伪彩图
preview_cel.png 只铺色阶的 1x 模拟
preview.png 色阶 + 笔画的 1x 模拟 ← 不起 Krita 就能看
output/trace-origin/ 落笔 (job_trace.py) 的产物, 名字固定, 重跑覆盖
final.png 8192×12288 成品
final.kra 完整分层工程文件 ← 画师接手
layers.json 每层的 path / blend / opacity / clip / label / bounds
strokes.jsonl 作画日志: 实际落下的每一笔 ← 可回放
stages/01-tree.png 只有矢量层时的样子
stages/02-strokes.png 落完笔
archive/ ./paint archive 存的带时间戳历史
两个 strokes.jsonl 不是一回事
| 文件 | 谁写的 | 内容 | 坐标 |
|---|---|---|---|
cache/origin/strokes.jsonl | 规划器 | 计划:kind / pts / R / rgb / op / taper / part / tier | 1x |
output/trace-origin/strokes.jsonl | Krita 会话 | 日志:实际调了什么 API、传了什么 | 8x |
计划是「打算画什么」,日志是「真的画了什么」。规格分别在第 23 章和第 22 章。
各阶段看什么
| 想确认 | 看哪个文件 | 怎么看 |
|---|---|---|
| 部件分对了没 | parts.png | 每个部件一种颜色,眼睛该在脸里、丝带该独立 |
| 色阶切得合不合理 | cells.png / preview_cel.png | 阴影形状是不是嵌套的、眼睛有没有被压成一块 |
| 笔画有没有白画 | preview.png vs preview_cel.png | 差别就是笔画贡献的部分 |
| 边是不是曲线 | stages/01-tree.png 的 1:1 特写 | 这一张的梯度 p99 是判「锯齿修没修掉」的依据 |
| 笔画有没有把结构盖掉 | stages/01-tree.png vs 02-strokes.png 同一块 1:1 | 见第 17 章的坏例 |
| 是不是真画的 | output/.../strokes.jsonl | ./paint replay <名> 数写像素次数,必须 ≤ 2 |
cells.png:每个 (部件, 色阶) 一种颜色。笔画的活动范围是这些格子,不是部件。