抖动、抗锯齿与色彩
抖动
抖动通过像素图案混合两种颜色,伪造出第三种颜色或渐变效果。
何时使用:
- 大面积平坦区域,48px 及以上,例如天空、大块阴影和背景。
- 有限调色板,4–16 种颜色,需要更多色调时。
- 纹理: 石材、砂石、织物。
何时避免:
- 小于 32px 的精灵。 它会变成噪点。
- 角色的面部或任何会移动的部分。 它会在帧之间闪烁。
- 原本可以用第三个调色板颜色更好表现的位置。 优先使用斜坡步进而非抖动。
工具:
| 需求 | 工具 |
|---|---|
| 两种颜色之间的渐变 | apply_dither_gradient(..., color_start, color_end, horizontal)。此为有序拜耳 4×4。 |
| 均匀纹理或混合 | apply_dither_pattern(..., color_a, color_b, density)。密度 0.5 为棋盘格;0.25 和 0.75 为稀疏点阵。 |
| 手动放置图案 | draw_rows 配合拼写出来的图案。参见图案参考。 |
规则:
- 仅在相邻斜坡色之间进行抖动。 两种相距较远的颜色看起来像网格,而非混合。
- 过渡带保持狭窄, 2–6 像素。实色区域承载形状。
- 绝不在轮廓线或剪影边缘上抖动。
抗锯齿 (AA)
抗锯齿在曲线或对角的锯齿步进处放置中间色,以柔化锯齿边缘。
- 仅在 32px 及以上的内部线条和大曲线上使用。 让外部剪影在透明背景上保持硬边。经过抗锯齿的边缘在其他背景上会呈现光晕。
- 在每个步进的内角放置一个抗锯齿像素,颜色介于线条与填充色之间。对于长步进,使用 2 像素:较浅和较深各一个。
- 使用
view_sprite(区域缩放)检查结果。 如果抗锯齿导致线条看起来变粗,那就是错误的,应将其移除。
着色与色彩
- 为每种材质构建斜坡,使用
generate_color_ramp(base, steps=3-5, hue_shift_degrees=15-30)。阴影偏向蓝色或紫色,高光偏向黄色或橙色。 - 通过明度(而非仅靠色相)拉开材质间的对比度。 快速检查方法:对副本执行
adjust_hsl(saturation_shift=-1)可观察作品在灰度模式下是否仍能阅读。 - 实现氛围变化(夜晚、中毒、受击闪烁),在图层上使用
adjust_hsl,或在跨帧范围中使用replace_color/remap_colors_in_cel_range。 - 适配复古调色板: 先使用
apply_palette_preset应用,再调用quantize_to_palette。然后从同一斜坡中选取颜色,手动修复变得浑浊的区域。
材质
| 材质 | 表现方式 |
|---|---|
| 金属 | 高对比度。硬朗锐利的高光紧邻深色阴影。阴影边缘有反射光。 |
| 石材 | 低对比度。聚集的纹理,稀疏抖动或 2–3 像素的团块,边缘有缺口。 |
| 木材 | 沿着木板的纹理线,以较暗的步进呈现。节疤为小椭圆。 |
| 织物 | 柔和的渐变,褶皱表现为弯曲的深色带,竖线纹理模拟编织。 |
| 玻璃 / 水 | 大部分透过背景显示。明亮的镜面点、边缘高光、少量色调。 |
| 皮肤 | 3–4 步的暖色调斜坡,阴影偏红。不使用抖动。 |
在任何润色处理之后,调用 get_color_stats 保持调色板紧凑,并调用 lint_sprite 捕捉杂散像素。