我靠!B站上那些炫酷的数学动画,原来是这个Python库搞定的?!

嘿,兄弟们!老铁们!

不知道你们有没有刷B站或者油管的时候,看到过一种视频。就是那种讲数学、讲物理的,但画面干净得一批,动画效果丝滑得不像话。什么函数曲线"duang"地一下就画出来了,一个几何图形"唰"地一下就变成了另一个,还有各种粒子飞来飞去,简直酷到没朋友!

我说的就是 3Blue1Brown 那种风格的视频。

每次看到这种视频,我心里就犯嘀咕:这特么是用啥做的?AE?C4D?得是什么样的大神才能做出这种效果?感觉门槛高到天上去了吧?

直到有一天,我发现了这个项目的源码......我整个人都傻了。

兄dei,你敢信?这玩意儿,居然是用 Python 写的!

一个叫 Manim 的动画引擎,专门就是干这个的!

今天,我就带兄弟们来揭开这个神器的神秘面纱。别怕,一点都不难,保证你看完就能上手,以后不管你是想做个技术分享的视频装个逼,还是给女朋友解释个啥叫"心形线",都能信手拈来。从此,你不再是那个只会写 print("Hello World") 的小趴菜,你,就是导演!

别搞错了!有两个Manim,咱得选对"服务器"

在你摩拳擦掌准备开干之前,有个事我必须得先给你说清楚,免得你掉坑里。

这个 Manim 啊,它有两个版本。

  • 一个是祖师爷版 (3b1b/manim):就是 3Blue1Brown 的作者 Grant Sanderson 自己写的那个版本。原汁原味,你可以把它想象成"官服",大佬自己用着顺手,但可能对新手不太友好,更新也比较佛系。
  • 另一个是社区版 (ManimCE) :一群热爱这个项目的大佬,在祖师爷版本的基础上,搞出来的一个分支。你可以把它想象成一个"魔改BT服"。这个版本有啥好处呢?文档更全、功能更多、安装更方便,社区也更活跃,一堆人帮着你踩坑!

咱们这种就图一乐、想快速上手的"屌丝玩家",选哪个不用我多说了吧?无脑冲社区版 (ManimCE) 就对了! 这篇文章里我讲的所有东西,也都是基于这个社区版的。

"Hello World"级别的上手体验,三分钟让你高潮!

"道理我都懂,赶紧上代码!"

别急,马上就来。装环境这事儿我就不细说了,毕竟每个人的系统都不一样。这玩意儿需要先装几个它的小弟(依赖),比如 FFmpeg 什么的。你直接去它的官方文档看一眼,对着你的操作系统(Windows/Mac/Linux)复制粘贴几行命令,分分钟搞定。

官方文档地址:docs.manim.community/

环境装好了?来,让我们用一个最最简单的例子,感受一下用代码"导演"一部动画片是什么感觉。

新建一个 Python 文件,叫它 cool_animation.py 吧,然后把下面这段代码粘进去:

python 复制代码
# 引入 Manim 的所有家伙事儿
from manim import *

# 定义一个"场景",你可以把它想象成一个电影的片段
class SquareToCircle(Scene):
    # 这个 construct 方法就是你的"剧本"
    def construct(self):
        # 演员登场:先创建一个圆形
        circle = Circle()
        # 再创建一个方形
        square = Square()

        # 给方形来个骚操作:沿着右边翻转一下
        square.flip(RIGHT)
        # 再给它旋转一下(具体角度不用管,就是随便转转)
        square.rotate(-3 * TAU / 8)
        # 给圆形化个妆:填充个粉色,再来点半透明
        circle.set_fill(PINK, opacity=0.5)

        # --- 导演喊 Action! ---

        # 第一幕:创建方形,时长 1 秒
        self.play(Create(square))
        # 暂停一下,让观众看清楚
        self.wait(1)

        # 第二幕:把方形"变身"成圆形,时长 1 秒
        self.play(Transform(square, circle))
        self.wait(1)

        # 第三幕:让方形(现在已经是圆形的形状了)渐渐消失
        self.play(FadeOut(square))
        self.wait(1)

代码看懂没?是不是跟读小说一样简单?

  1. 建个场景 Scene:这就是你的舞台。
  2. 写个剧本 construct:所有的动画都发生在这里。
  3. 创建演员 Circle, Square:想让啥动,就创建啥。
  4. 调用 self.play() :这就是全场最靓的仔!你把它当成导演喊 "Action!"。括号里放的就是具体的动作,比如 Create (创建)、Transform (变形)、FadeOut (消失)。

写完代码了?打开你的黑框框(终端/Terminal),cd 到你保存文件的那个目录,然后敲下这行神奇的咒语:

bash 复制代码
manim -p -ql cool_animation.py SquareToCircle

敲下回车,你会看到终端里开始跑代码,几秒钟后,"duang" 的一下,你电脑里的视频播放器就自动弹出来了!

视频里,一个正方形凭空出现,然后丝滑地变成了一个粉色的半透明圆形,最后又优雅地消失。

卧槽!爽不爽!

就这么几行 Python 代码,你就完成了一个动画的"编、导、演"全过程!这种掌控一切的感觉,简直不要太棒!


等等,上面那行命令是啥意思?

manim -p -ql cool_animation.py SquareToCircle

  • manim: 主命令,召唤 Manim 干活。
  • -p: preview 的缩写,意思是"预览"。视频渲染完了自动给老子打开!
  • -ql: quality low 的缩写,意思是"低画质"。咱就是自己看个乐,没必要整那么高清,低画质渲染得快,几秒钟就出结果,主打一个效率!
  • cool_animation.py: 你的剧本文件名。
  • SquareToCircle: 你要运行的那个"场景"的名字(就是 Class 的名字)。

是不是很简单?Manim 还有很多这种"懒人开关",比如:

  • -s: 只看最后一帧的图片,不想看视频过程。
  • -n 3: 从第3个 self.play() 动画开始渲染,前面的跳过,方便调试。

更多的骚操作,自己去翻文档,这里就不啰嗦了。

工作流是啥样的?一张图给你整明白

说了这么多,你可能还是有点懵。这玩意儿到底是怎么从代码变成视频的?来,我给你画个图,屌丝也能看懂的架构图。

看明白了吧?你就是总指挥,写好 Python 脚本,然后用 manim 命令一回车,剩下的脏活累活它全包了,最后直接把成品视频喂到你嘴边。

这玩意儿跟 AE、PPT 动画比,牛逼在哪?

可能有人会说:"搞个动画而已,我用 PPT、Keynote 也能做啊,要不我用 AE 也行,干嘛非得写代码,多费劲?"

问得好!来,我给你整个表格,让你看看 Manim 的B格到底高在哪里。

特性 Manim (用代码做动画) AE / Keynote / PPT (用GUI做动画)
精确性 王者! 坐标、时间、速度、路径,一切都是数学,精确到像素。想让一个点落在(3.14, 2.71)?直接写就行! 弟弟。 全靠手拖、鼠标点、对齐线。想精确?累死你。
可复用性 极强! 你可以把一个动画封装成函数,到处调用。想做100个类似的动画?一个 for 循环就搞定了。 几乎为零。 每个动画都得手动 K 帧,想做100个?准备加班到天亮吧。
版本控制 天生支持! 代码天然可以用 Git 管理,每次修改都有记录,回滚、协作都极其方便。 噩梦。 你试试用 Git 管理一个 .pptx 或者 .aep 文件?改了一点点,整个文件都变了。
学习成本 对程序员来说,门槛较低。只要你懂点 Python 语法,就能上手。 对非设计人员来说,门槛较高。AE 的界面和概念就能劝退一大批人。
价格 完全免费!开源万岁! 贵。 Adobe 全家桶的订阅费,你懂的。
装逼指数 🚀🚀🚀🚀🚀 (代码就是生产力,代码就是B格!) ⭐⭐⭐ (平平无奇,泯然众人)

简单来说:

  • 如果你想做个数据可视化、算法演示、数学/物理科普,需要精确控制和批量生产,Manim 就是降维打击。
  • 如果你要做的是那种商业广告、酷炫转场、光影特效,那还是专业的 AE 更合适。

但对于我们开发者来说,用自己最熟悉的武器------代码------去开辟一片新的创作领域,这种快感是无可替代的!

好了,不废话了,赶紧去试试!

今天就先吹到这里。我只是给你推开了一扇门,门后的新世界有多精彩,得靠你自己去探索。

想象一下:

  • 下次你做技术分享,别再用干巴巴的 PPT 了。用 Manim 把你的数据结构、算法流程做成动画,台下的同事和领导看你的眼神都会不一样!
  • 给孩子讲个数学题,别再用笔画了。一段代码,一个视频,清晰又直观,你就是孩子眼中最牛逼的极客老爸!
  • 想在B站当个知识区 UP 主?Manim 就是你的入门神器,成本几乎为零,效果直接拉满!

心动不如行动!这玩意儿就是典型的"学了不一定天天用,但关键时刻能秀一脸"的神器。

赶紧把这篇文章点赞、在看、收藏 一波,但千万别光收藏吃灰啊! 打开你的电脑,把环境装上,把那个"方变圆"的例子跑一遍,去真真切切地感受一下那种用代码创造世界的快感!

冲吧,未来的动画大师们!

相关推荐
天天摸鱼的java工程师3 分钟前
在 Spring 框架中,如何自定义一个注解?
后端
&白帝&3 分钟前
CSS Background 相关属性详解 文字镂空效果
前端·css
白总Server8 分钟前
轻量化分布式AGI架构:基于区块链构建终端神经元节点的互联网智脑
分布式·microsoft·中间件·架构·区块链·github·agi
m0_634865409 分钟前
sa-token:我将代替你,Spring Security
java·后端·spring
我的心巴12 分钟前
Vue2 ElementUI Tree 拖动目标节点能否被放置及获取放置位置
前端·vue.js·elementui
IT_102413 分钟前
springboot企业级项目开发之项目测试——集成测试!
spring boot·后端·spring·集成测试
ze_juejin25 分钟前
Subject、BehaviorSubject、ReplaySubject、AsyncSubject、VoidSubject比较
前端·angular.js
每天吃饭的羊29 分钟前
面试-TypeScript 场景类面试题
前端
CRMEB定制开发42 分钟前
CRMEB 注释规范:多端适配下的代码可读性提升之道
前端