21 笔刷选型表
✅ 已验证 · 探针 probes/probe_taper.py · probe_markshape.py · probe_glaze.py
选笔要看五个独立的性质,任何一个指标都回答不了另一个的问题。这一章先给表,再讲五次选错。
五个性质
| 性质 | 探针 | 量法 | 回答什么 |
|---|---|---|---|
| 收尖比 | probe_taper | 两端 8% 的平均宽度 ÷ 中段 40% | size 跟不跟 pressure 走 |
| 过渡宽度 W | probe_taper | 边缘 10–90% 过渡的像素数 | 边利不利 |
| aliased% | probe_taper | 过渡 < 1px 的边像素比例 | 有没有硬台阶 |
| 圆度 / 长宽比 | probe_markshape | 一个点盖下去的笔痕 | 圆头还是平头 |
| 笔径系数 | probe_glaze / probe_markshape | 实际宽度 ÷ setBrushSize | 传多大才画出想要的宽 |
| 认不认 opacity | probe_glaze | opacity 0.35 画一笔的峰值 alpha | 能不能半透明 |
表
| preset | 收尖 | W | aliased% | 圆度 | 长宽比 | 系数 | opacity | 用途 |
|---|---|---|---|---|---|---|---|---|
b) Airbrush Soft | 0.68 | 3.0 | 18.8 | 0.975 | 1.01 | 0.93 | 认 | 平涂、柔和过渡 |
c) Pencil-3 Large 4B | 0.18 | 1.25 | 13.0 | 0.916 | 1.10 | 0.90 | — | 细节笔;发丝/线稿的候选 |
c) Pencil 1 Sketch (mypaint) | 0.28 | 3.25 | 0.0 | 画不出点 | — | 0.20 | — | 发丝/线稿(现用,太软) |
d) Ink pen (mypaint) | 0.70 | 1.5 | 0.0 | 画不出点 | — | — | — | 线稿候选 |
i) Wet Bristles | 0.52 | 2.75 | 0.0 | 画不出点 | — | — | — | 湿画 |
f) Bristles-5 Flat | 0.95 | 1.5 | 0.0 | 0.316 | 2.52 | 0.44 | 不认 | 平头,别当圆笔用 |
b) Basic-5 Size | 0.25 | 0.0 | 88.6 | 0.994 | 1.01 | 0.99 | — | 硬边,有台阶 |
b) Basic-1 | 0.90 | 0.0 | 94.0 | — | — | — | — | 同上 |
「画不出点」= mypaint 引擎的 preset 靠笔的移动沉积颜料,setBrushSize(120) 盖一个点什么都不留,画长线正常。
三条规律
- mypaint 引擎 aliased ≈ 0%,Krita 原生
b) Basic-*88–95%。 用 Basic 系列画线稿,边天然是硬台阶。 setPaintingOpacity收 0..1,传 255 饱和成全不透明而不是报错;f) Bristles-5 Flat完全无视它。setBrushSize的值 ≠ 画出来的宽度,差最多 4.7 倍。job_trace.py的KIND表按系数换算:size = 2·R·SCALE / 系数。
五次选错
1. 平头当圆头。 f) Bristles-5 Flat 在 probe_taper 里 aliased 0.0% / K90 0.065,全场最干净,被选为细节笔。但那量的是长直线的边,没回答「一小笔盖下去是什么形状」。它长宽比 2.52,短笔全是带锯齿的矩形,8K 成品五官被一片色块糊掉,p99 从 64.0 掉到 15.8。→ probe_markshape.py 就是为它写的。
2. 系数没换算。 规划器算出「直径 20px」,直接 setBrushSize(20),用 Pencil 1 Sketch 画出 4px——整层等于没画,不报错。
3. opacity 传 255。 旧代码里 set_preset(..., opacity=255),结果碰巧是想要的(饱和成 1.0),参数是错的。probe_glaze 之前没人量过量纲。
4. 最软的笔画最锐的线。 Pencil 1 Sketch 的 W=3.25 是候选里最大的。aliased 0.0% 读成了「干净」,其实是「软到没有台阶」。发丝和线稿因此全是糊的(第 20 章第三轮)。
5. 探针几何不匹配。 更早的一次:在长平滑曲线上量出 path() 比 stroke() 干净,换到短线段上结论反过来。探针的几何要匹配实际用法。
系数能不能从根上消掉
不能。Preset(res).toXML() / fromXML() 能程序化改笔刷,改 brush_definition 里的
diameter 也确实生效(Airbrush Soft 90 → 200,画出 184 px),但系数纹丝不动:
把 hfade / vfade 归零之后 Airbrush Soft 还是 0.91、Bristles-5 Flat 还是 0.44。
系数来自笔尖形状本身。而且对预定义笔尖的 preset 改 diameter 完全无效且不报错,
fromXML(toXML()) 对 mypaint preset 有损(14 px → 442 px)。
细节见第 30 章。这张表得留着。
选笔的顺序
- 先
probe_markshape:圆度 > 0.55 且长宽比 < 1.3,否则规划器的圆核模型不成立 - 再看 W:要锐的边选 W 小的;要柔的过渡选 W 大的
- 需要收尖就看收尖比 < 0.6
- 需要半透明就确认它认 opacity
- 记下系数