本文全文转载自知乎:https://zhuanlan.zhihu.com/p/70243739
作者:李狗嗨(英属哥伦比亚大学(UBC) 机械工程博士在读)
他的专栏:直观の数学
相信很多人都知道3Blue1Brown,这是一个由斯坦福大学的数学系学生Grant Sanderson 创建的YouTube 频道。该频道从独特的视觉角度解说高等数学,内容包括线性代数、微积分、神经网络、黎曼猜想、傅里叶变换以及四元数等等。
![](https://pic3.zhimg.com/80/v2-4ec471b40714a7225e923506381bfc06_hd.jpg)
本人通过该视频频道获得了很多启发,同时也对其精良的视频制作技术产生了浓厚的兴趣。
偶然的机会,得知其在Github上有专门开设了一个动画制作引擎:manim。
![](https://pic1.zhimg.com/80/v2-0df6e863c49b4e704a2899ffda07b140_hd.jpg)
所以,突然想尝试用一下该基于Python的可视化引擎,如果可以实现功能,以后就可以根据自己的需要利用该引擎进行动画演示。
网上找了一些相关的文章,有的写得很好,但是因为该开源代码库更新频繁,所以以前的配置教程往往会有过时的情况。现在最新的版本是基于Python 3的,以前的基于Python 2.7的教程已经不再适用于当前代码。所以在安装过程中,遇到了不少新问题,在解决的过程中记录了这些新问题的解决方法。并形成此文。(测试于2019年6月)
在配置前首先得安装Python 3,这个安装过程在此处不再赘述。建议通过Anaconda进行安装,而不是直接安装Python。这里的演示也是基于Windows 10 系统,在安装Anaconda的基础上完成的。Anaconda的下载地址为:
https://www.anaconda.com/distribution/#download-section 建议选择安装Python 3.7 version,具体安装步骤网上有很多。
![](https://pic1.zhimg.com/80/v2-7c41d415b28f6d3c388beb684b83dfe4_hd.jpg)
除此之外,还要下载:
- manim:https://github.com/3b1b/manim,选择clone or download,然后Download ZIP,解压后到一个合适的位置(路径中不要包含中文!),即可使用(此为manim动画引擎所包含的全部文件);
- miktex:https://miktex.org/download,直接安装即可,(安装路径中不要包含中文!)(此为windows平台下的Tex套件,TeX 是一种排版语言,主要用于处理视频中包含的文字信息);
- ffmpeg:Builds – Zeranoe FFmpeg,下载好后,放到一个合适的路径下(路径中不要包含中文!),解压后将../bin/目录添加进用户环境变量(见后图)(此为音视频流处理软件)
- dvisvgm:https://dvisvgm.de/Downloads/ ,64位的用户请注意选择64位的安装包,,下载好后,放到一个合适的路径下(路径中不要包含中文!),解压后将../dvisvgm/目录添加进用户环境变量(见后图)(此为可以将dvi转换为高质量svg的软件)。
添加进用户环境变量的方法:
右击“我的电脑”图标-“属性”-左边的”高级系统设置”
![](https://pic3.zhimg.com/80/v2-43d4bae3c5e57839c2ea1112a38e15c2_hd.jpg)
选择”环境变量”-“用户变量”中的”Path”-“编辑”-“新建”。
![](https://pic1.zhimg.com/80/v2-0a1b106710ac3247f517d9b869e42310_hd.jpg)
然后把解压后的FFmpeg的bin文件夹的路径和dvisvgm的dvisvgm文件夹路径添加进去,并选择确定。然后进行环境测试,看各个依赖环境是否都配置妥当(注意:按照个人安装的实际路径进行添加,图中只是一个参考)。
在Anaconda Prompt 中通过命令行配置并测试
具体方法是:右击”Anaconda Prompt”-“更多”-“以管理员身份运行”
![](https://pic1.zhimg.com/80/v2-7829bc5c6b5d7ed525c0ee121dd807f8_hd.jpg)
这一步很重要,因为如果不以管理员身份运行很可能带来权限不够的情况,妨碍后期的各个程序包的安装。
在命令行中分别输入下列命令,并回车运行(注意并不需要版本号完全与下面图中所示的完全一致,因为随着时间推移会有版本的更新):
1 |
<span class="n">python</span> <span class="o">--</span><span class="n">version</span> |
![](https://pic2.zhimg.com/80/v2-a10abbb4c848ab433321c265ea6a6725_hd.jpg)
1 |
latex --version |
![](https://pic3.zhimg.com/80/v2-40305c05eea78692c9a167584eb6e8be_hd.jpg)
1 |
xelatex --version |
![](https://pic2.zhimg.com/80/v2-de9a1d9b929c1a4cdee8f9e39420921d_hd.jpg)
1 |
ffmpeg -version |
![](https://pic4.zhimg.com/80/v2-67e76d4320abd8115f53de2a2f53fecf_hd.jpg)
1 |
dvisvgm --version |
![](https://pic1.zhimg.com/80/v2-b39d9455466e32af5277c7fcb1657d9c_hd.jpg)
如果都有类似于上面的版本提示,则说明依赖的软件安装成功,否则,回去检查安装或用户路径的添加是否正确。
打开前面下载并解压后的 manim 文件夹,该文件夹的路径就称为 manim的根目录(注意,由于manim的更新,文件夹中的内容可能会和下图中所示的有些许不一致,但可以放心这些细微的差别一般不会影响后面使用),在该根目录中新建一个空白文件夹“media”,并在该根目录中新建一个名字为“MEDIA_DIR.txt”的.txt文件。
![](https://pic2.zhimg.com/80/v2-12bc24c9accc7856910b4d1371c0b235_hd.jpg)
打开”MEDIA_DIR.txt”,输入刚刚新建的”media”文件夹所在的路径并保存,注意最后的“\”别漏了。
![](https://pic4.zhimg.com/80/v2-225bfc6d70c5e8d23eec8cffdbf78947_hd.jpg)
回到 Anaconda Prompt 中,输入:
1 |
<span class="n">cd</span> <span class="o"><</span><span class="n">manim</span> <span class="n">的根目录</span><span class="o">></span> |
该命令的意思是:跳转 (cd, Change Directory) 到 manim 的根目录中(注意:按照个人安装的实际路径进行跳转,图中只是一个参考)。
![](https://pic2.zhimg.com/80/v2-8606767d43d3f69ad875a336a45faea9_hd.jpg)
然后输入(手机上如果看不到此处的全部代码,请在代码处左右滑动或在电脑上打开该文章):
1 |
<span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">-</span><span class="n">r</span> <span class="n">requirements</span><span class="o">.</span><span class="n">txt</span> |
这个安装过程中常见的问题是“pycairo”这个包安装异常。
![](https://pic2.zhimg.com/80/v2-a419693074ead3995ae06aacf5f5fdd1_hd.jpg)
解决方法是先输入并运行:
1 |
conda install vs2015_runtime |
![](https://pic3.zhimg.com/80/v2-c0f5b619229769447d1e4fb87ea55ff2_hd.jpg)
然后再单独安装“pycairo”这个包,输入并运行:
1 |
conda install pycairo |
![](https://pic4.zhimg.com/80/v2-df8c23948f75d62be299580aeb8aaf23_hd.jpg)
现在,基本的东西都安装好了。尝试着运行一下测试命令:
1 |
python -m manim example_scenes.py SquareToCircle -pl |
在运行的时候可能会有形如:ModuleNotFoundError: No module named <pack name>的错误提示,这说明还缺少程序包。请运行命令(注意:<pack name>改为对应缺失的程序包的名字,命令中不含括号或引号):
1 |
pip install <pack name> |
一个特例是readline包,如果提示“ModuleNotFoundError: No module named ‘readline’”,则需要输入的是:
1 |
pip install pyreadline |
安装好提示缺少的包后再输入并运行:
1 |
python -m manim example_scenes.py SquareToCircle -pl |
缺什么程序包就按照上面的方法添加该程序包,直到命令可以通过:
![](https://pic4.zhimg.com/80/v2-f10c5cd6cfd34a605c8c789ec3ecf27b_hd.jpg)
此时打开media文件夹将找到生成的视频,表示的是正方形变成圆形的动画演示:
![](https://pic3.zhimg.com/v2-63d0ae9d8ced8fc6d8f3f9d396d3dfb2_b.jpg)
同理,输入命令:
1 |
python -m manim example_scenes.py WarpSquare -pl |
![](https://pic2.zhimg.com/80/v2-4ede8722cfef45be88f99b3bdc243201_hd.jpg)
得到一个向复平面映射的动画:
![](https://pic3.zhimg.com/v2-094cce96e48d16744962c34911bb92de_b.jpg)
输入命令:
1 |
python -m manim example_scenes.py WriteStuff -pl |
![](https://pic1.zhimg.com/80/v2-477d5fc8de06fd9f13a45d66eda22608_hd.jpg)
此过程中会提示安装一些程序包,为了加快编译进度,可以点击去掉那个复选框的勾选,默认安装所有需要的程序包。得到的是具有3b1b经典风格的文字动画:
![](https://pic2.zhimg.com/v2-cc250beb178ea39fcd3b052186c2eb1d_b.jpg)
输入命令:
1 |
python -m manim example_scenes.py UpdatersExample -pl |
![](https://pic1.zhimg.com/80/v2-51616bd46b7e24f121f2f4583ddc1d80_hd.jpg)
将得到一个数据随图形位置变化的动画:
![](https://pic4.zhimg.com/v2-b0c95b4a45bbc9b77b8f82cb057325bf_b.jpg)
是不是手痒了?23333。
如果安装成功,感谢点赞支持,如果配置遇到什么问题,欢迎在评论区留言~
<本教程仅针对Windows 10 64位系统>
3B1B 动画制作教程持续更新中…
更多内容请关注知乎专栏:
再次感谢作者李狗嗨(英属哥伦比亚大学(UBC) 机械工程博士在读)。