VibeManim:用AI生成动画脚本
Manim是一个为创建这种动画风格而构建的Python库,它似乎有一个陡峭的学习曲线才能创建出酷和有趣的东西。直到最近我才再次考虑它:AI能比我做得更好吗?
AI编程/Vibe Coding 遇到问题需要帮助的,联系微信 ezpoda,免费咨询。
这个周末,我决定重新审视几年前的一个旧项目。在生成式AI出现之前,我正在玩Python的Manim库。如果你认不出这个名字,你肯定会认出它产生的视频。
这种解释性视频风格已经在在线数学信息娱乐领域变得标志性。Manim是一个为创建这种动画风格而构建的Python库。Grant有自己的版本,他自己维护,但也创建了一个社区维护的版本(我在这个项目中使用的版本),具有更好的支持和文档。
几年前我试过玩这个库,但对于一个短期的周末项目,它似乎有一个陡峭的学习曲线才能创建出酷和有趣的东西。直到最近我才再次考虑它:AI能比我做得更好吗?嗯,几乎可以肯定是的,但真正的问题可能应该是,我可以用自然语言和最小的努力创建出酷和有趣的东西吗?(我能说什么呢,我懒惰。)
1、让我们开始VibeManim
我用同样的零样本最小指导提示测试了Gemini 3 Flash、GPT 5.2、Claude Sonnet 4.5和全新的Kimi 2.5-Instant模型,只是为了看看它们能做什么开箱即用。
你能用Mainim社区版库写一个Python脚本吗?
我想要一个15-20秒的动画,可视化10个项目的冒泡排序。
每个项目应该是不同高度的垂直条。
使其流畅,在关键时刻暂停,以显示清晰解释正在发生什么以及为什么。
令人惊讶的是,它们都在第一次尝试中产生了无错误的文件(!?)。Claude有点额外,决定生成一个完整的ReadMe文件,包含设置和自定义说明(我问了吗?)。它们都提供了一个正确的命令行函数来实际导出动画。
而且你知道吗?它们实际上并不那么差!
我从最好的开始:Gemini

它几乎坚持了时间约束,在21秒时,很好地说明了概念,添加了一些关于正在发生什么的文本,甚至添加了一些不错的颜色编码来帮助解释。是的,文本不是最好的解释,而且它在动画中有点匆忙,但这可能是因为我设置了短时间限制。所有这些只来自66行代码——还不错!
Chat GPT *(136行代码)在屏幕上弹出文本解释方面做得好得多,但在时间约束方面失败得惨不忍睹,创建了一个3分钟长的视频拖沓。我会让你免于痛苦,但只要知道动画在视频的任何一点都不会加速。

Claude——只是让我难过。(108行和51秒长)

Kimi 2.5(新来的)是最多彩的,产生了最长的脚本(196行和1分钟的视频),但在表现上和Claude一样令人失望。

然而,所有的模型都遵循了冒泡排序算法,并且它们最终都以排序列表结束,即使它们看起来很糟糕(你知道你是谁)。

2、这可能是我最喜欢的新LLM基准测试
对于我的第二次尝试,我决定推动模型和库的限制。它将如何处理无法在Manim中本地构建的抽象对象?我决定进行一个"花式棋盘构造动画"。
模糊的提示似乎上次效果不错,但这是一种根本不同类型的挑战。冒泡排序本质上是一个2D问题;平面上的条,左右移动。一个带有棋子、相机角度和轨道运动的棋盘?这是一个空间推理问题。模型需要理解3D对象如何相互关联,相机视角如何改变可见内容,以及如何以视觉上有意义的方式将对象放置在坐标系中。我在相机角度和序列方面给了它更多的指导,但把大量的设计和动画留给了模型。
用Mainim社区版库写一个Python脚本吗?
我想要480p30的渲染和大约10秒的动画。
我想要一个棋盘被一个一个组装的花式动画。
瓦片应该从屏幕外飞入。
棋子应该以创造性的方式移动/出现在棋盘上。
我想要相机以45度角向下看棋盘,但在整个时间轨道运行棋盘。确保棋盘的布局正确,棋子/瓦片都在正确的位置。
这一次我们遇到了一些错误。Gemini和Kimi都抛出了一个库错误,其中模型假设了一个对象的属性,结果该属性不存在。在快速检查实际文档后,它们修复了它并设法产生了工作输出。
这些渲染花费了很长时间来运行。Gemini和ChatGPT的代码同时运行,这可能无济于事,但Kimi的输出花费了近一个小时。

让我们不要假装这些中的任何一个都是我们要的。然而,Gemini似乎仍然在顶端脱颖而出。
我们也要忽略Kimi的棋盘是一个8x9网格(!?)的事实。但是嘿,至少它设法画了一个。……是的,Claude的动画 确实是 前5秒只是一个空白屏幕。
棋盘是正确的,有不错的动画,Chess.com配色方案是一个不错的点缀。如果你仔细看,棋子有一个粒子效果动画,你几乎可以在最后看到其中一个棋子顶部的轮廓,但是,显然,它们没有完全出现。尽管如此,Gemini是唯一似乎对对象如何在3D空间中排列有任何直觉的模型。其他人甚至无法正确地获得棋盘几何结构,更不用说令人信服地将任何东西放在上面。
而且,再次,Gemini的代码迄今为止最短但整体上效果最好。既然它最接近工作,我认为尝试完善它是最容易的。
棋盘和相机移动都很棒。棋子动画正在发生
有一个粒子效果,但我看不到棋盘上的棋子。
你能修复它吗?
你能修复它吗?……不,不,它不能。
相反,它写了一些代码,花费了51分钟来渲染。(请记住,我只渲染10秒的480p30输出)最后看起来像这样:

如果世界在过去几个月学到了什么关于vibe编码的东西,那就是如果你至少不了解一点你正在编写的代码,你不会走得太远。而且当代码试图描述空间关系时,一点了解就会走很远的路。
是时候进行一些vibe学习了……
3、Manim简介
Manim是一个基于状态的声明式动画引擎。与传统视频编辑器的空间时间线不同,Manim使用程序化时间线,你在其中定义"什么"和"哪里",将插值留给渲染器。
3.1 核心机制
- 精灵。 场景中的所有视觉元素都是'Mobjects'(数学对象)。它本质上是一个定义点云的NumPy数组的包装器。
- 场景。 你在Scene类中构建动画。construct()方法充当入口点,通过self.add()或self.remove()管理对象生命周期。
- 动画。 这些是两个Mobject状态之间的转换。转换可以立即应用,或者通过预先附加
.animate将更改转换为插值动画。(例如.scale()Vs.animate.scale())
3.2 时间和组成
不是在轨道上拖动剪辑,而是通过阻塞执行来管理时间。每个self.play()调用都会推进全局时钟。为了超越简单的线性序列,Manim使用基于逻辑的组成:
- 并行性。 将多个动画传递到一个play()调用中同时执行它们。
- lag_ratio。 在AnimationGroup内,此参数定义时间重叠。0的lag_ratio是完全同时的,而1是严格顺序的。
3.3 实现示例
# 在一个"脉冲"时间中同步多个操作
self.play(
circle.animate.shift(LEFT), # 操作1:平移
square.animate.set_fill(ORANGE), # 操作2:样式更改
Rotate(triangle, angle=PI), # 操作3:旋转变换
run_time=2 # play调用的共享持续时间
)
所有这些都是说,我们不需要担心对象如何变化。只要我们可以指定之前和之后的状态,Manim应该处理中间。在这种情况下,我们只需要指定我们想要什么对象,以及哪些动画组应该在同一时间发生。
显然,我们不会用最小的提示得到任何像样的东西(真是一个惊喜,我知道)所以让我们尝试一些更详细的东西。是时候制作分镜了。
这仍然不意味着我要付出努力;我仍然决心尽可能懒惰。
3.3 尝试次数3
显然,我不打算自己编写这个分镜。我将之前的提示包装在一些额外的指示中,并将其提供给ChatGPT:
我想为我的LLM写一个详细计划,使用Manim库写一些python
代码。你能帮我为下面的文本草拟一个分镜吗?以纯文本形式提供你的回答
我想要480p30的渲染和大约10秒的动画。我想要一个棋盘被一个一个组装的花式动画。瓦片应该从屏幕外飞入。棋子应该以创造性的方式移动/出现在棋盘上。我想要相机以45度角向下看棋盘,但在整个时间轨道运行棋盘。确保棋盘的布局正确,棋子/瓦片都在正确的位置。
1. 分镜与提供的输入文本匹配。2. 场景保持对象持久性。3. 场景可以在给定的时间框架内完成。4. 分镜与Manim-CE文档对齐(https://docs.manim.community/en/stable/)
既然我不是专家编剧,我留下响应格式开放,看看它会自己想出什么。我确实提供了一些检查以确保它的响应是基于现实和可行的。经过一些来回,我有一个听起来像我为这个动画想象的那样计划。
这次我没有冒任何风险。我知道Claude到目前为止表现不佳,但我认为Claude Code肯定能做得不错,特别是现在有一个更详细的计划在位。
Claude给了我一个496行的文件,听起来很全面,但是,正如我们所看到的,这并不意味着它会很好。

虽然让Claude渲染项目可能也不是最好的主意,它一直恐慌什么都没发生,同时试图让我放心这是正常的,一切都在按计划进行。(我知道这种感觉)

……20分钟后,我们最终得到了这个:

我不是100%确定为什么它给了我一个纵向视频。是的,这里真的没什么可说的。我的失望是无法估量的,我的一天被毁了。
但我还没有准备好放弃。鉴于Gemini到目前为止表现如此之好,我想我会再试一次。我上传了与之前相同的计划文档,遇到了4个连续的库错误,但最后……

是的,这不是我预期的,但它是我们迄今为止对这个问题的所有其他尝试的显著改进。
之前的"最小提示"代码似乎将棋子放在了棋盘上,但它们不再可见,而Gemini无法弄清楚如何修复那个错误。这个新的甚至设法以正确的方向获得棋盘(每个玩家左侧的角应该是黑色的),并且所有棋子都在正确的位置。
4、目前的3个要点
其中的许多听起来可能很熟悉,因为它是作为主流vibe编码建议出现的,但它在这里也绝对是相关的(这仍然是vibe编码,所以并不真的令人惊讶)。
4.1 可验证性
任何现代LLM都可以使用你指定的任何工具编写代码。如果它有一种可验证的方式来检查其工作,结果会更好。我认为冒泡排序效果如此之好的原因是大部分逻辑是可验证的;互联网上有成千上万个冒泡排序的例子,输出是一个简单的排序序列。要求模型生成一个带有它没有视觉参考的抽象3D对象的动画是一个根本性的更难问题。如果模型看不到,它如何验证输出看起来正确?
4.2 空间推理差距
这已经成为了整个实验的反复出现的主题。每个模型都可以编写语法正确的Manim代码。但是编写渲染时看起来正确的代码需要一些额外的东西。成功的模型对基于文本的指令如何映射到3D视觉场景有理解。相机应该在哪里?棋子相对于棋盘应该有多大?对象应该如何移动以避免穿过表面的裁剪?
Gemini在这一方面始终优于其他人,我怀疑这不是巧合,它是具有最深层次多模态训练的模型。当你被训练在基本层面上理解图像和语言之间的关系时,你可能会发展出更强的直觉,了解代码如何转换为视觉输出,即使你无法实际渲染和查看的代码。
这显然是我无法从一个周末项目中证明的东西,但模式足够一致,值得注意。每次任务需要空间理解时,Gemini都领先。
4.3 一次性完成或不做
调整脚本似乎不起作用。最好的方法似乎是创建一个详细的计划,并相信模型可以一次性输出并获得你希望的确切方式。
我在图像生成中也看到了这一点,其中Gemini可以在第一次尝试时创建准确的图像,但如果你要求它进行更改,就会失去情节。感觉这些模型在从清晰规范的全面生成方面比在现有输出的手术编辑方面更好。如果你考虑一下,这对于空间任务是有道理的:每次编辑都可以通过文本难以预测的方式级联整个场景。
显然,这完全是轶事,远非科学严谨,但我认为仍然有趣观察。
5、最终测试
我最初对这个项目的目标是用最小的努力看看我能创建什么。所以让我们重新聚焦并尝试完全做到这一点:
1 ) 要求Gemini一个数学解释视频的想法。
2 ) 要求Gemini所述视频的大纲。
3 ) 将计划转换为脚本并使用Elevenlabs生成TTS。
这是迄今为止我使用的最自然的TTS。你可以在下面的链接查看:
https://try.elevenlabs.io/t6vuj6jm5wmb
- 给Gemini计划并要求它使用Manim写一些Python代码来生成动画。
- 调试代码并导出视频文件。
……和一些编辑魔法,我们有了我们的最终产品。
它想出的想法是关于芝诺悖论的视频。如果你不熟悉,我不会解释它,我们将看看视频在教授它方面做得如何。
作为卫冕冠军,我在这次最终测试中使用了Gemini。我也用Gemini 3 Pro(我实际上直到这一点之前都没有使用过)尝试过。
让我们先看看Flash模型的尝试,因为它实际上相当不错。

是的,显然可以通过更详细的提示获得更好的结果,但我的目标是快速和肮脏的,所以我会说它做得相当不错。
然而,我不确定我们到目前为止真的学到了关于芝诺悖论的任何东西。
对于大结局,Gemini 3 Pro的版本。我进行了一些额外的剪辑和编辑,以确保视频和声音在一起,但整个事情花了不超过20分钟(从开始到完成)。
(我提前为缩略图道歉。我发誓我有比这更多的完整性。)
类似于Flash模型的尝试,是的,但更精致和节奏更好。
6、"VibeManim-ing"是一个可行的工作流程吗?
如果你在寻找一键式Pixar替代品,待在床上。Manim仍然是一个挑剔的、高度技术性的动画引擎,当模型对其类属性过于自信时会立即中断。
但令我惊讶的是,地板比我预期的要高,天花板正在到达。芝诺悖论视频从想法到成品花费了大约30分钟。它会赢得任何奖项吗?不。它会作为课堂中的解释者或博客文章的快速视觉效果工作吗?也许。对于一个我在几年前因为学习曲线感觉太陡峭而完全搁置的工具来说,这是一个相当大的转变。
空间推理差距似乎是目前的瓶颈。模型(大部分)在Manim的语法上很流畅;它们很少产生不运行的代码,并且可以快速修复所需的内容。问题是运行的代码与看起来正确的代码不一样。直到模型能够可靠地弥合"我在坐标(2, 3, 0)处放置了一个对象"和"这将从相机的视角可见并正确定位"之间的差距,你将总是需要在循环中有人。
所以不,我不会刚刚就我的YouTube职业生涯押注于完全AI生成的Manim流水线(我会把这个留给3B1B)。但是对于快速的解释器、原型视觉想法,或者只是满足你关于概念在运动中看起来如何的好奇心?我们可能比你想象的更接近。
而且老实说,对于一个懒惰的周末项目,我会接受它。
原文链接: VibeManim, Spatial Reasoning, and Gemini's Secret Superpower
汇智网翻译整理,转载请标明出处