五镜 画进来 → 叠厚 → 冲淡 → 剩下 → 落印
唯一强调色 朱红 #c8442a
这部片子
一张暖棉纸上的手卷。一笔一笔画出的一丛灌木,被迭了三层颜色,然后水从上面下来,把它冲回去。
冲淡退去以后,纸上只剩三笔:一截干、一根枝、一片叶。最后落下一枚朱红的印。
水带走的并不是一切——剩下三笔,就还算数。
关键帧 · 复刻对照基线
t 02s 第一笔画进来:干,结构先于细节
t 06s 枝与叶簇成团画上,标题在左上
t 14s 三层叠色 + 手写标注 layer 01/02/03
t 18s 纸色雾从下往上涨,开始冲淡
t 22s 只剩三笔,引线标 3 strokes remain
t 33s 朱红印章落下,still here.
风格不变量 · 水彩纪律
- 纸就是白:绝不画纯白,光 = 未上色的纸;纸色同时是橡皮。
- 只有笔触,没有矢量描边:变宽缎带 + 3–9 道断续鬃痕(飞白),交叠处自然变深。
- 叠色即加深:更深 = 同一形状多画几遍,不是换一支更深的颜料。
- 东西自己画进来:先结构后细节,干 → 枝 → 叶簇。
- 一色只给一样东西:整片只有纸、苔绿、雾蓝、赭石与墨;朱红只出现在最后一枚印上。
- 标注是画者写的手:纸色光晕、左向右写出,引线先长出来。
#f3e6d0 纸
#8ea860 苔绿
#5f7486 雾蓝
#c8a06a 赭
#2b2622 墨
#c8442a 朱红(唯一强调)
怎么做的
画面
- 一个 render(t) 纯函数画出每一帧,所有笔触在固定种子下生成(并行渲染逐帧一致)。
- 笔触引擎:缎带宽度按 profile 变化 + ±22% 噪声 + 断续鬃痕,薄洗三遍形成积色边。
- 纸面单独生成:暖底 + 三层平滑噪声 + 2600 根短纤维 + 细颗粒 + 轻暗角。
- 完成的物件缓存成 sprite,只让正在画的那一团逐笔。
声音
- 颤音琴单音:S2 一拍一音,冲淡段逐拍减音,剩下段只剩三个音——正好对应三笔。
- foley 全合成:带通噪声做笔尖擦纸、水冲纸面,印章是一记低频闷响。
- 终混实测 −14.2 LUFS(ebur128),与上一部 005b 同档。
复刻
# 需要有 lemo-opuscar 库(引擎与渲染管线)
cd <项目>
python3 src/paper.py # → paper.jpg 纸面
python3 src/mix.py # → mix.wav 配乐与 foley
PW=<playwright-core> \
PLAYWRIGHT_CHROME=<chromium> \
FPS=24 WORKERS=3 node src/render.mjs # → out/video.mp4(960 帧)
ffmpeg -i out/video.mp4 -i mix.wav -map 0:v -map 1:a -c:v copy -c:a aac -shortest out/film.mp4
源码在 src/:engine.js(笔触引擎,取自 Lemo-Opuscar 的 MIT demo)、scene.js(本片全部场景与时间线)、
paper.py、mix.py、render.mjs。完整说明见包根 APP.md。