九月二十七日的百校天则,北京交通大学的东方摊位上会摆一台 27 寸 4K 显示器,全天无声循环播放一部 140 秒的短片。这部片子是我做的,隙间月影的四幅艺术微喷也在里面占了一段。

画面里的木刻墨块、刮痕白线、手写字和镜头运动,全部是 JavaScript 在 Canvas 上逐帧画出来的,没有用图像生成模型。实拍素材只有制品照片、封面、头像和二维码。代码和成片都开源在 fish2lab/bjtu-touhou-booth。
路人只看几秒,所以每一段都要单独看得懂
漫展上路过摊位的人,一般只会看几秒到几十秒。所以这部片子不讲一个贯穿始终的故事,而是照穆索尔斯基的《图画展览会》来编排:摊位上的每件制品、每个活动各是一幅「画」,画法和节奏各不相同,中间靠转场接起来,首尾接成一个循环。只看到一段的人,也能知道那一段在卖什么、能玩什么。
| # | 段 | 时长 | 讲什么 |
|---|---|---|---|
| 1 | 三眼的幻恋 | 28s | 钢笔滴墨成为觉之瞳,一路吃书长大;本子的售卖信息和封面 |
| 2 | 隙间月影 | 28s | 画廊墙上四幅名画 × 东方的艺术微喷,隙间扫过把原作换成东方版 |
| 3 | 帕秋莉的炼金工坊 | 16s | 现场调饮料、猜是哪些角色 |
| 4 | 雏 祭 | 19s | 做一个雏人偶、写上祝福、摆上台、放进河里流走 |
| 5 | 会赢的 | 12s | 黑白漫画分格的默片包袱,亚克力挂件 |
| 6 | 东方二创红黑榜 | 12s | 用小红点和小黑点给二创作品填表 |
| 7 | 北交东方笑话集 发布 | 24s | WASTED 淘汰赛,最后觉之瞳闭眼,墨收回钢笔,回到第 1 段 |
七段用同一套规矩统一起来:底色只有暖白纸和近黑墨,每段最多再加一种压暗的颜色;墨块边缘像木刻刀口一样毛糙;屏上所有的字都用霞鹜文楷手写体,连价格和笑话正文也不例外;线条每秒换 8 次形,就是手绘动画那种「抖」。
段与段之间的交接也是设计过的:第 1 段结尾紧闭的眼皮线拉成一道隙间,裂开就是隙间月影的画廊墙;炼金工坊剩下的魔药从台沿流下来,摊成雏祭的小溪;「会赢的」黑底白字的「赢」缩成一个黑点,镜头拉远,原来是红黑榜上的一张黑点贴纸;片尾觉之瞳闭上眼,满屏的黑收回桌上成一团墨,被钢笔吸走,正好是片头的空桌面。
隙间月影这一段:画廊里的一道隙间
第 2 段拍的是一面画廊墙。镜头沿墙横移,走到一幅画前停下:画的上沿撕开一道扁长的隙间,缝里有眼睛,整道缝从上往下扫过,扫过的地方原作已经变成了东方版——维米尔的《戴珍珠耳环的少女》变成八云紫,施皮茨韦格的《书虫》变成帕秋莉。旁边的展签翻出来,手写出作品名、原作、画师、规格和价格。最后一道满屏的隙间撕开,露出 QQ 群二维码和四幅作品的价格。
这其实就是隙间月影一直在做的事:名画与东方的邂逅。这次终于能让它在屏幕上「动」起来。
一天多做完,大部分代码是 Claude Code 写的
这部片子从 9 月 23 日下午开工,到 24 日中午出 4K 成片,前后一天多一点。大部分代码由 Claude Code 写成,我负责定目的、画风和取舍。
- 第一版被推翻了。 最开始做的是一部电车串起九站的彩色剪纸片,还带了一个弹幕小游戏。做出来以后发现风格不统一、太儿童、电车撑不起主线,于是整个归档,重新来过。
- 先做一段样板。 第 1 段三眼先做完,定下木刻黑白、低饱和、手写楷体、每秒抖 8 次这套画风,写成施工文档。
- 再并行施工。 其余几段按文件拆包,每包一个 git worktree、一个 agent 同时开工。段与段交接的那一帧由主会话先写好,各段只管自己的首尾。第一轮有几个 agent 被限流中途停下,由 MiMo 接力收尾。
- 审片返修。 逐段抽帧审片,写成一份审查报告:觉之瞳前 5 秒几乎不长、隙间月影换作品是一帧硬切、雏人偶的头只有肩宽的三成像颗纽扣……按文件再分五包并行返修,合并后逐像素比对七处交接帧。
- 出片。 Playwright 打开页面逐帧取图,分段并行交给 ffmpeg,编码成 3840×2160、24fps 的 MP4。
整个过程里最花心思的其实不是代码,而是「取舍」:每一条都是用 X 换 Y。比如红黑榜的实体表是一张高饱和的彩色海报,放在开头会显得这一段不属于这部片,所以先用木刻风格重画一张表,最后才亮出实物照片;再比如 WASTED 印章没有用 GTA 原版字体,因为它的许可不允许放进网页,而断网时的备用播放方式恰恰就是网页。
来摊位看看吧
九月二十七日,百校天则,北京交通大学摊位。《三眼的幻恋》作者包子会 cos 恋恋现场签售,还能调魔药、做雏人偶、给二创贴红点黑点——以及,站在屏幕前看完这 140 秒。
没法到现场的话:
- 4K 成片 在仓库的 Releases。
- 浏览器直接放: 克隆仓库后双击
animation/index.html,地址后面加?booth会全屏自动循环,不需要网络。 - 代码是 MIT 协议,欢迎拿去改。美术素材版权归各自作者,不在 MIT 范围内。
东方Project 的角色和世界观版权归上海爱丽丝幻乐团(ZUN)。本片为同人作品。
Sincerely,
苏心贤
PhD Student, Beijing Jiaotong University

文章评论
欢迎分享你的想法和见解