Manim简介(0):环境搭建

最初了解到3Blue1Brown,是在Essence of linear algebra,以及后来一系列的数学科普视频中,诸如Neural networksDifferential equations等等。

最近在浏览Github时,发现3B1B居然开源了其动画引擎Manim,要知道动画可是3B1B的一大特色。浏览过Manim的实例代码,发现框架封装的很好,就突然来了兴趣。不管怎么样,先挖个坑,有时间也做做这方面的视频~

一番折腾之后,终于在CentOS系统下配置好开发环境,当然,本篇中的所有操作也就都基于CentOS7环境。

配置需求

如上面所说的,操作系统默认为CentOS7,下面是Manim所需的运行环境:

Tex Live

由于CentOS主机并未安装Tex套件,正好借这个机会安装Tex Live。之前在Win10主机上安装的是MikTex,虽然体积较小,但是Package的下载和更新比较麻烦。

首先清除默认安装的Tex Live套件:

1
2
3
rm -rf /usr/local/texlive/2019
rm -rf ~/.texlive2019
yum remove texlive*

由于本地网络环境较好,所以选择了在线安装TeX Live,下载install-tl-unx.tar.gz

1
2
3
4
mkdir ~/texlive && cd ~/texlive
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar xvzf install-tl-unx.tar.gz
cd install-tl-20190806

运行 ./install-tl,并输入参数 i 进行默认安装(大概需要2Gb空间):

1
2
3
4
./install-tl
[... messages omitted ...]
Enter command: i
[... when done, see below for post-install ...]

网络不佳的情况下也可以下载封装好的 .iso 镜像文件,挂载到主机进行安装,国内推荐从清华Tex Live源进行下载。

ffmpeg

ffmpeg是跨平台的开源多媒体处理工具,在CentOS7中,无法用 yum 命令直接安装,需要启用epel库,具体方法如下:

1
2
3
4
5
yum install epel-release
yum update
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install ffmpeg ffmpeg-devel

Cairo

Cairo是开源的二维图形库,Linux发行版一般都将其包含在内,只需要使用 pip 安装Python链接库即可:

1
pip install pycairo

pip 下载速度过慢或本机无网络,建议更换pip源或直接下载pycairo.whl 文件进行安装。

Sox

Sox是开源的跨平台音频处理应用,直接用 yum 命令安装即可:

1
yum install sox sox-devel

安装Manim

Manim运行在Python3.7环境下,由于涉及到 f 语句的问题,所以不向下兼容。

Tip: 本地的 python 命令默认为 python3pip 命令默认为 pip3

首先使用 pip 命令安装 manimlib 库:

1
pip install manimlib

其次使用 git 命令克隆manim项目库:

1
2
git clone https://github.com/3b1b/manim.git
cd manim && pip install -r requirements.txt

最后运行测试用例:

1
python manim.py example_scenes.py SquareToCircle -pl

其中 -p 参数意为渲染完成后自动打开视频,而 -l 参数则意为以低画质快速渲染视频,多用于调试,正式渲染时可去除 -l 参数以获取高画质结果。

查看 example_scenes.py 文件可以发现,有 OpeningManimExample, SquareToCircle, WarpSquare, WriteStuff, UpdatersExample 等示例,展示了manim的一些特性。另外,3Blue1Borwn的项目代码也都在 old_projectsactive_projects 中,可以参考学习。

最后附上官方文档 Manim Doucuments,当然,目前官方公布的文档还不是很详细,所以具体的细节还有待自己探索:)

其他问题

1. 播放器解码问题

CentOS7默认的播放器未安装H.264解码器,动画渲染完播放时会提示错误,则需要:

1
yum -y install gstreamer-ffmpeg gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer1-libav

2. SSH连接中X11转发

本地使用XShell远程连接CentOS主机,为即使预览渲染结果,可使用X11来实现Linux服务器图形界面转发功能。

首先下载安装xming,其次在XShell的连接属性中,连接>SSH>隧道 中勾选 转发X11连接到,并选择 X DISPLAY,参数保持为 localhost:0.0

3. 链接manim指令

python manim.py 来运行manim未免有些繁琐,可创建软链接:

1
ln -s /usr/local/python3/bin/manim /usr/bin/manim

则测试用例即可写为:

1
manim example_scenes.py SquareToCircle -pl
坚持数学知识分享,您的支持将鼓励我继续创作
0%