本来只是想做个片头。
就是那种,每期视频开头放一下,有个自己的形象,配上音乐,观众看几次就知道是我。听起来是不是挺简单的?我一开始也觉得,手里正好有一套 DeepSeek 萌化的图,再加一点动画,应该就差不多了。
结果从几张图开始,一路做到了七十多秒。人物、替身、祖师爷、梗图、运镜、背景、日文标题,最后连能力面板和 120fps 都补上了。
前面两天把主要的东西折腾出来,后面又陆续收尾。现在终于可以说,这个项目算完结了。开心,给 AI 圈整了这么个活,哈哈哈哈。

最后定下来的名字:《AGIへの奇妙な冒険》,通往 AGI 的奇妙冒险。封面也顺手做了。
全片约 75 秒,网页播放版本为 1080p、60fps;这次也另外导出了 120fps 版本,后面会聊到。
起因:先来点可爱的
最开始的素材真的很可爱。蓝头发的 DeepSeek 萌化形象,有困困的、开心的、生气的,做成贴纸没有任何问题。但是做成片头之后,总感觉差点意思。
我想要的是动漫 OP,最好有 JOJO 那种张力。人物一出来,就有点“这人不太好惹”的感觉,而不是在屏幕上蹦跶的可爱表情包。
所以又补了 GPT、Claude、Grok、Meta AI 等等。也不一定非得全部画成女生,有男有女,各自有自己的配色和特点。做着做着,突然发现一个设定特别合适:AI 是替身,那这些 CEO 不就是替身使者吗?
梁文峰和 DeepSeek,奥特曼和 GPT,达里奥和 Claude,马斯克和 Grok,扎克伯格和 Meta AI。往舞台上一放,替身慢慢从身后显现出来,好像还真有那么个味了。

左边是最初的萌化贴图,右边是后来用到的替身立绘。画风和目标,已经不是一回事了。
人越来越多,事情越来越大
只有这五家,好像又少了点什么。
Ada、图灵,这些祖师爷肯定也能安排进来。Linus 也得有。他提需求,开源社区去实现,这不就是一个“最早开始 vibe coding”的老梗吗。当然这里只是玩梗,不是严肃地给计算机史下定义。
于是后半段的出场顺序变成了 Ada → 图灵 → Linus → 扎克伯格 → 奥特曼 → 达里奥 → 马斯克 → 梁文峰。前面从计算机先驱和开源人物开始,后面接到现在的 AI 公司,每个人再带上自己的替身。
中间还想过做一个更完整的历史场景,让镜头沿着引导线往前走,人物按时间先后出场。这个想法我到现在都觉得挺好,但是当时做出来的东西确实不太行。尤其有一版开始往 3D 场景和建模那边走,看完之后,停停停,不要再建了。
后来还是回退,回到现在这套二维方案。想法可以先留着,没必要这次就把所有东西塞进去。
第一遍:怎么一股 PPT 味
这次用的是 Remotion,简单理解就是用 React 写画面,再按时间把画面渲染出来。文字、图片、SVG、Canvas,还有 shader,都可以一起往里面放。对写前端的人来说,至少不是一个完全陌生的地方。
但熟悉技术栈,和能做出好看的动画,真的是两码事。
最开始的人物基本都是立绘。图片进来,移动一下,放大一下,镜头抖两下,再切到下一个人物。东西是动了,但是看着很生硬。后半段尤其明显,一张图接着一张图,看久了就是一个做得比较用力的 PPT。
人物动作也挺抽象的。头要摆,就把那块裁开再挪位置;手要动,就让对应的部分转一下。画风是对了,但是整个人像是各个零件在分别上班。这种东西我看一眼就知道不行,再检查多少次也不会突然变好。
后面专门做了一个动作测试:梁文峰从右边跳进镜头,落地,召唤替身,再从右往左跑。这个片段我反而是认可的。因为它有针对动作准备的完整姿态,落地和跑动也有自己的节奏,不是拿一张站姿图硬挪。

这是独立的动作试验,不是整部正片突然都变成了这种动作强度。它让我更直观地看到了,一张立绘能做到哪里。
最后主片选了比较克制的处理。人物保持一个认可的 pose,身体、手臂和衣服在连续的二维表面上做一些变化,让出手、蓄力和回弹能接起来。没有为了显得“动画很多”,把每个人都改成来回切姿态。
这期间我还拿过视频模型做的素材来试。单看还行,但是 720p 的画面往整片里一放,清晰度和风格都不太协调。奥特曼和梁文峰那两段最后又换回了贴图。素材好不好,放进同一支片子里看一下,比单独夸它半天管用。
背景要铺满,是真的铺满
这几天说得最多的一句话,可能就是“背景没有铺满”。
不是只要没露黑边就算铺满了啊。中间一小块有图案,旁边全靠纯色补着,镜头稍微往外拉一点,就能看出背景到这里结束了。人物还在认认真真摆 pose,后面像是只装修了一半。
有些背景图颗粒太多,人物和图案都在抢眼睛。后来干脆让几个角色用自己的程序背景。Linus 是绿色电路,奥特曼是绿色的交织环,达里奥偏暖色,马斯克黑红,梁文峰蓝青。扎克伯格那边保留几何纹样,各自有自己的主色和图形。
这样至少镜头动起来的时候,不用一直跟一张有限大小的背景图较劲了。图案该重复就重复,边缘该多画一点就多画一点,整个画面要能接得上。

左边是 SVG 几何纹样,中间和右边是 shader 背景。配色跟着角色走,画面也能更统一。
预览卡顿也折腾过。我电脑明明有 5060 Ti、16GB 显存,怎么做点这样的动作还这么卡。后面把一些复杂绘制缓存成图片,再交给 WebGL 处理连续的表演和程序背景,才没有一直在这些地方耗着。显卡能帮忙,但也得把合适的活交给它。
运镜总得有个去处
后半段的问题,后来想明白了一些。光是切得快、晃得猛,不能解决镜头为什么要动的问题。
Ada 那幕,我想让纸片绕着人物转,不要毫无目的地乱飘。图灵则是一条连续的纸带。那是不是可以让这两样东西接起来?
于是 Ada 快结束的时候,镜头盯住一张写着 0 的纸片,推近,画面里只剩下这个 0。下一幕再拉出来,它就成了图灵纸带上的一格。图灵的纸带里又放着一个小场景,里面是 Linus 和他的替身,镜头再进去,接着就是 Linus 那一幕。
这个思路我挺喜欢的。人物、场景和转场之间,总算有东西把它们串起来了。

上面是成片中的三个场景,下面是我用图画出来的转场关系。镜头先找到纸片,再找到纸带,最后找到下一幕。
不过实现的时候还是有坑。纸带里的小场景,如果先画得很小,再让浏览器把它放大,最后就会糊。后面把那些变换合到屏幕坐标里,让它按最终要显示的大小去画,才好一些。两个镜头里那个“0”的字形和位置,也得对得上,稍微不一样,切过去就会跳。
五家 CEO 之间又用了另一种处理。萌化的五个 AI 拉着画面走,第一次从右往左,第二次再从左往右,来回交替。这里反而可以可爱一点,没必要每一秒都在认真摆狠脸。

小人整体往上放,再缩小一点。它们负责拉幕,但别把主角的脸挡了。
梗也不能少
前面十二个 AI 的登场,原本是横向掠过,后来改成了沿五角星的笔画移动。拖影可以色化得明显一点,人物走过去,要有点速度和冲击感。
但是后面再做一段差不多的横移,就重复了。索性换成 AI 梗图,让这支 OP 稍微松一口气。
豆包的“我将用最直白最直接不绕弯子的方式和你一次性说清”,Gemini 的“不许再叫我北美大豆包”,DeepSeek 注意到 Projects 里有 dsh,还有 GLM 的“代码仓库已打包上传”、Grok 的“禁止生成 18+ 内容”。越看越觉得,这些东西确实得有一个位置。

片内玩梗,别拿它当产品的真实声明。代码仓库那个梗,也不代表我真的把自己的仓库传出去了,哈哈哈哈。
“滑动变祖器”也试着塞过,最后还是删了。有些东西很好笑,但放进去影响前后的节奏,该舍还是得舍。不然最后不是 OP,是我的素材收藏夹在自动播放。
最后补一块面板,结果又开始调字距
都快做完了,又想加 JOJO 那样的替身能力面板。六条轴,中间一个能力多边形,这个用代码画确实挺合适。
但是 AI 总不能还在比什么破坏力、射程距离吧。最后定成推理、构筑、表达、共情、固执、混沌,能力和性格混着来。有的角色认真干活,有的负责把局面搞乱,轮廓也会不一样。
这些数值是这支片子自己的角色设定,不是模型跑分,也不是给现实中的人打性格分。祖师爷三位同样有自己的面板,凑齐八位。

面板放在留白里,先避开脸和手势。标题、圆盘、能力说明之间,也不能全挤在一起。
然后就又到了熟悉的环节:字太近了,挪。说明文字别强行拉伸。小标题别贴着主标题。底下这行离上面再远一点。
署名那段我还觉得不够清楚,试着加字号、垫暗底,结果一看,不对,还是原来的顺眼。换回来。该说不说,“回退”也是这次制作里面一个使用频率很高的功能。
这些都不是什么惊天动地的大改动,但是一个地方挡点脸,一个地方裁点头,另一个地方排版再挤一点,放在一起就会显得特别糙。最后几轮,基本都是在磨这些东西。
120fps 也折腾了一下
原工程是 1920×1080、60fps,一共 4472 帧。后来我又想导出一个高码率的 120fps 版本。
一开始还以为,把帧率从 60 改成 120 就行了。结果不是这么回事。总帧数不变,帧率翻倍,片子就只剩下一半长。之前对好的音乐卡点,也得跟着出问题。
最后做了一个时间换算层。原来的动画还是按 60 帧的刻度写,120fps 输出的时候,在中间多计算一次:
1 | // frame 是实际输出帧号,fps 是输出帧率 |
场景的开始和结束、转场、冻结帧、音频淡出,也一起换算。这样总帧数变成 8944,时长仍然约 74.53 秒,音乐照常播放。连续的运镜、人物形变和 shader,会算出那些半帧时刻的状态。

绿色的点是新增的采样时刻。静止画面和离散姿态仍可能连续几帧一样,不会因为导出 120fps 就突然长出新的原画。
导出用了本地 Remotion 和 NVIDIA 硬件编码,依赖、浏览器和素材准备好之后可以离线跑。也不是显卡一开,所有工作就都自动跑到 GPU 上了,布局和一部分绘制还是会用 CPU。至少最后这个 1080p、120fps 的版本是真的导出来了,工程里也保留了原来的 60fps 合成。
片尾,以及终于收工
片尾又改过几次。先是夕阳和城市,后来觉得背景噪点太多,就往代码绘制的方向试。最后换成了宇宙,有星链一样的轨迹,远处的星星慢慢构成 AGI。
几位使者背对镜头,替身在他们身后显现,镜头慢慢拉开。我觉得这个结尾还挺适合这个名字的:通往 AGI 的奇妙冒险。

程序绘制的宇宙背景。没有再往场景里塞模型,主要靠颜色、轨迹和分层运镜来做。
最后把片头碎掉的字标重新拼回来,再慢慢放大。这里用的是同一个标题,开头碎开,结尾合上,至少让这七十多秒有个收尾。

片尾截图。字可以慢慢挡住后面的人物,这次是我同意的,不是又没注意遮挡关系。
工程后来整理了一份到 E 盘,文档、素材说明、启动和离线导出命令也都写了。这之后又在原工程补过面板和 120fps,版本这件事也得记着,免得下次打开旧副本还以为自己改丢了。
开源是有这个打算的,等合适的时候再来。代码和音乐、字体、人物素材要分开处理,来源和能不能随仓库一起发,也得说清楚。目前还没有公开仓库,就先不在这里放一个不存在的链接了。
回头看,这次最有意思的地方,反而是不断地看预览、提要求、改东西的过程。AI 能写代码,也能很快把一个想法摆到屏幕上,但从“能动”到“看着舒服”,中间还有好多事情得一点点磨。哪里挡住了,哪里不好看,哪个方案该放弃,这些判断我全程都在做。
片子里有前期准备的图,有生成过的素材,也有代码画出来的人物和程序背景。具体哪种办法合适,就在那个镜头里试。最终能接在一起,看着顺眼,比非得证明某一种工具能包办全部事情有用。
这几天整了这么个活,挺开心的。也谢谢陪我一起折腾到最后的 AI,虽然中间确实没少被我喊停,哈哈哈哈。
至于它一开始只是一个“每期视频都能用的小片头”这件事……七十多秒,正片还没开始,观众可能先看完一集 OP 了。
先这样吧,这次真的收工了。