前言:一张 diffusion 图为什么不能直接当原画用
✅ 已验证
三个缺陷
一张 diffusion 生成的插画,比如本书通篇用的这张 1024×1536 的 origin.png:
它看起来是一张画,但它不是画出来的,这在三个地方露馅:
1. 不可编辑。 它是一张平面位图。想把裙子换个颜色、把头发调亮一点、把眼睛重画——没有图层,只能重新生成。画师拿到它接不了手。
2. 放大就糊,边缘是像素格子。 1024×1536 拿去印刷差 8 倍。bicubic 放大 8 倍之后,1x 的抗锯齿边被摊成 8px 宽的过渡,1x 的像素格被放大成 8px 的阶梯。实测在同一块 1:1 眼部特写上量梯度 p99(边缘锐度):
| 梯度 p99 | |
|---|---|
| origin 自己(1x) | 124.3 |
| origin bicubic ×8 | 20.2 |
| 人类画的 2508px 插画(同样 1:1 特写) | 69.4 |
放大一次,锐度掉到 1/6。而一次早期尝试——把 origin 分层、逐位无损分解、再 bicubic 升采样写进 8K 图层——输出的 p99 是 23.5,约等于一次放大。它的作画日志里 55 条记录全是 set_pixels,一笔都没落。
3. 没有笔触,没有层次。 人类画的插画靠明确的几档色阶加少量柔和过渡构成层次;diffusion 图是连续糊。放大后一个是笔痕,一个是马赛克。
目标
把它变成可交付的分层原画:
输出的每一个像素,要么来自一条解析曲线,要么来自一笔真的落笔。没有任何一个像素是把源图放大出来的。
具体到交付物:一份 8192×12288 的 Krita .kra,图层树就是作画顺序,画师能接手改任何一层;一份 strokes.jsonl,记录了每一笔的坐标与压感,能回放。
这不是复刻——不要求逐像素对上源图。这是临摹:源图是参考,输出是照着它重新画的一张。所以本书的判据不是 PSNR,而是「边是不是曲线」「有没有放大指纹」「层次像不像人画的」(第八部)。
这本书是怎么来的
它不是从零设计出来的,是一个项目做了五版之后按流程重新组织的。前四版走的是像素复刻路线,第五版推倒重来。每一个数字都是在这台机器(Fedora 44 / Krita 6.0.2.1)上量出来的;每一个坑都是真的栽过。
所以书里有很多「试过,不行,为什么」。这些不是废话——Krita 的大量 API 不校验参数、不报错、静默失效,而「量错了对象」这类错误不会报错、只会给出方向相反的结论。哪些路走不通,和哪些路走得通一样值钱。
状态标记与阅读顺序
每章第一行有状态标记:✅ 已验证(有数据)· 🧪 在做(跑通没收敛)· 📐 设计(只有接口)。
全书按流程分八部。第一部是总览,读完就知道每一步在干什么;第二到第六部是流程本身,按顺序读;第七部是 Krita 无头能力手册,随用随查;第八部是判据,第 34 章的案例集建议先读——它教你怎么不被自己的测量骗。