01
画面全部由代码绘制Every frame is drawn by code
只用浏览器自带的 Canvas2D:陶瓶的刻线、壁画的矿物色、绢本的青绿、手稿的镜像字、木版画的套色、厚涂的笔触、胶片的划痕、剪纸的镂空、像素与扫描线,全都是一笔一笔算出来的。
一部程序生成的艺术史短片A Procedural Short Film
THE JETT TEST
人类自古以来就痴迷于画一架小红飞机。
——早在飞机被发明之前。Since time immemorial, humankind has been obsessed with drawing a little red aeroplane — long before the aeroplane was invented.
TWELVE ERAS
序幕是一本艺术史书的书页:「图一 小红飞机(摹本)」。插图里的小飞机发动引擎、滑跑、收起落架,飞出了插图——然后,每穿过一道画框,世界就换一种画法,乐迪自己也跟着变成那个时代的样子。
正在播放01约公元前 530 年
太阳一亮,伊卡洛斯的蜡翅膀炸开了;乐迪俯身接住他,把他送回父亲代达罗斯的怀里。
The sun flares, Icarus's wax wings burst — Jett dives, catches him and flies him home to Daedalus.
正在播放02约 700 年 · 唐
飞天反弹琵琶,乐迪回她一个滚转,倒挂着从她身边飞过;散花的飞天倾下花盘,花雨落了他一身。
An apsara plays her pipa behind her back; Jett answers with a barrel roll — and gets showered with flowers.
正在播放031113 年 · 北宋
一头扎进千里江山的深处,变成远山间的一点朱红,又飞了回来,贴着江面溅起一道水花。
He flies deep into a thousand li of mountains, shrinks to a dot of vermilion, and swoops back over the river.
正在播放04约 1490 年
停在纸页正中,圆规画圆、直尺画方,被画成「维特鲁威乐迪」;旁边一行镜像手写:「大鸟将开始它的第一次飞行……」
Compass and ruler measure him into the Vitruvian Jett, beside a note in mirror script: «Piglierà il primo volo il grande uccello…»
正在播放051831 年
「乐迪冲浪里」:慢镜头里从巨浪的浪管下穿过,浪爪在背后追他,浪头在他身后轰然砸下。
In slow motion he threads the tube of the Great Wave, its claws reaching after him, as the crest crashes behind.
正在播放061889 年
被夜空里最大的漩涡卷住,绕着漩涡眼翻了一个筋斗;每一拍亮起一颗星,他的尾迹留在天上,成了画里新的一圈。
The great swirl catches him and loops him once round its eye; a star flares on every beat, and his trail stays in the sky as a new ring.
正在播放071903 年
从莱特兄弟的飞行者号头顶超了过去。字幕卡:「1903 年 12 月 17 日 · 人类首次动力飞行」——然后是「……第二架。」
He overtakes the Wright Flyer. Intertitle: “December 17, 1903 — the first powered flight.” Then: “…the second one.”
正在播放081930 年代
他摆出海报主角的姿势,「环球」「快递」「航空」一拍一块砸进画面,标语「每时每刻 · 准时送达」随后喷印上去。
He strikes a poster pose as WORLD · EXPRESS · AIRWAYS slams in on the beat, then the tagline: on time, every time.
正在播放091950 年代
一把大剪刀踩着八分音符,绕着乐迪剪了一圈,把他剪成一张红纸;一只喜鹊跳上他的背,「福」字转了几圈,倒了过来——福到了。
Scissors snip round him on the eighth notes until he is one red sheet; a magpie hops on, and 福 spins upside down — luck has arrived.
正在播放101980 年代
踩着拍子吃到三个包裹(+100),金包裹弹出 1UP;巡逻的紫色小鸟发现了他,他一个翻滚躲了过去。
Three parcels on the beat (+100 each), a golden one for a 1UP — then a barrel roll past the grumpy violet bird.
正在播放111990 年代
鼠标点下「渲染」,线框、白模、高洛德着色、光线追踪,一拍换一遍;他对着镀铬球里的倒影看了又看。
A click on Render: wireframe, clay, Gouraud, ray-traced, one pass per beat — and he admires himself in the chrome sphere.
正在播放122020 年代 · 大模型时代
提示词「画一架小红飞机」;模型一拍一行写出 jett.svg,右边的乐迪一部分一部分地画好。他转过来,状态栏写着「✓ 已送达」,他眨了眨眼。
“Draw a little red aeroplane.” A model writes jett.svg one line per beat, and he is drawn part by part. ✓ Delivered — and a wink.
EPILOGUE
截至目前,人类共交出了 12 份答卷。
乐迪本人没空评论——他还有包裹要送。
To date, humankind has handed in 12 answers. Jett has no time to comment — he has packages to deliver.
HOW IT WAS MADE
01
只用浏览器自带的 Canvas2D:陶瓶的刻线、壁画的矿物色、绢本的青绿、手稿的镜像字、木版画的套色、厚涂的笔触、胶片的划痕、剪纸的镂空、像素与扫描线,全都是一笔一笔算出来的。
02
给出任意一个时刻 t,程序就能画出那一刻;同一时刻画多少次都逐像素一致。所以可以开几个浏览器同时渲染,再拼成 60 fps 的成片。
03
所有时代共用同一副参数化的三维骨架,每个部位都带着标签和锚点,每个时代只负责用自己的画法把它画出来。过画框的那一刻,前后两个时代的乐迪严丝合缝。
04
没有采样,没有录音。每个时代用自己的乐器——里拉琴、琵琶、古琴、手风琴、唢呐、芯片音乐、电钢琴……——演奏同一段原创的 F 大调主旋律;每次过画框,响一声机舱提示音「叮——咚」。
05
和参考项目一样:先写风格总纲和每幅画的美术简报,交给几个 AI 子代理分头去画,用接触表和接缝检查自查;导演统一审片、返修、配乐和合成。
06
十二幅画都是向公有领域作品与风格的致敬,构图和笑点都是原创的;片中的航空公司、游戏和软件全部是虚构的。
// 整部片子就是一个循环:给出时刻 t,画出那一帧
for (let n = 0; n < 5340; n++) {
const t = n / 60; // 0 → 89 秒
await renderAt(t); // 画面:时间的纯函数
}
const music = await renderScore(); // 配乐:Web Audio 离线合成
THANKS
本片从结构到做法,都是照着 Royce Bella 的开源短片项目 The Pelican Test(鹈鹕测试) 学着做的:一条连续的路穿过一格格时代画、画面是时间的纯函数、一副共享骨架让每个时代各画各的、程序合成的配乐、序幕与尾声展墙、无头浏览器逐帧渲染——这一整套方法都来自这个项目,音频合成的部分代码也改编自它(MIT 协议)。画面、构图、笑点和音乐都是新做的。衷心感谢作者的开源分享!
This film imitates the structure and whole working method of Royce Bella's open-source short The Pelican Test, from which part of the audio code is adapted (MIT). Thank you for sharing it.
NOTICE
《超级飞侠》(Super Wings)与角色乐迪(Jett)的相关权利归其权利人所有。本片是非商业的同人致敬作品,与权利人无关;片中的乐迪由代码按参数重新绘制,没有使用任何官方图片、标志、配乐或音效。
Super Wings and Jett belong to their rights holders. This is a non-commercial fan homage using no official artwork, logos, music or sound effects.