manim安装指引——你该安装什么版本的manim?(windows)

注:本文章最后更新为2022年4月,如果对你来说这篇文章写的时间有点久远,它也许已经不再适用。

随着各种可视化科普视频的出现,\(manim\)这个词语也进入了不少人的视野,初中时看到3Blue1Bown的线性代数本质视频,直观优雅的动画让寻找动画制作软件的我眼前一亮,跃跃欲试,希望能用他尝试制作一些物理动画。

可惜的是,作为一个python库,而不是一个面向一般人的设计软件,它的安装确实难倒了很多人,包括当时的我。我找了许多篇文档,才解决了遇到的问题,成功的运行了example_scene。如今manim的安装教程已经很多了,但是由于manimgl的出现,很多些安装教程已经过时!写这篇文章,是希望给那些想尝试,又不熟悉manim的人一个简单的指引,希望能少走一点弯路。

manim版本

搞不清这个问题的话,你可能会越看安装教程越蒙圈!

从我的角度分类,manim有两个版本:manimgl版本和manim-pycairo版本:

manim-pycairo就是旧版的manim,使用pycairo这个2D图形库来生成动画,然后用ffmpeg生成视频。所以如果你看到的教程是比较久远的(19年之前的),那么大概率是基于manim-pycairo(cairo-backend)的。这个版本的manim兼容性比较好,有些时候生成效果更好,但是相对而言渲染速度较慢,如果你的电脑和我一样在显卡驱动上存在问题而不能使用manimgl,或者是那种破电脑(opengl支持不好的),最好用这个版本。

manimgl就是新版的manim,也是现在正在维护的版本,使用pyopengl等库来渲染动画,opengl的效率更好,而且类似游戏一样,你可以采取python动态语言的特性一边写一边看动画效果。不过有些电脑上可能会有兼容性问题,如果没有兼容性问题的话,最好就用新的。

安装和学习指引

注意:虽然这两个版本运行机理不一样,但是具体的内容,例如场景、动画、物体基本上是相同的(至少在我这篇文章写的时候),所以关于内容的教程上,差别不大,只是在外围运行的时候略有区别,以及新特性(self.embed()等)旧版本不支持。

manim-pycairo版本

请参考github官方页面ManimKindergarten的中文文档
教程还可以参考cai-hust的教程,也是针对旧版的

中文文档里有一些很详细具体的安装指引,不再重复引用,这里只简单说一下我遇到的问题:

  1. 首先你需要安装python(完全不会python的话建议先学习python再考虑学习这个库)。

  2. 除非你是win10且把整个系统编码调至utf-8,不要通过官方readme里pip install manimlib的方式去安装库,这样会出现编码错误!你最好直接把github里的cario-backend库下载下来(code-DownloadZIP),然后直接引用这个目录里的manim.py

  3. 为了编辑文字,你需要安装一个LaTeX环境(如TeXlive或者MikTex)。为了生成动画,你需要下载一个ffmpeg并配置好环境变量。

  4. 你需要安装一些依赖,除了pycario,你都可以通过pip install -r requirements.txt的方式安装,pycario默认没有构建,而一般windows环境上没有构建的环境会失败,需要从这个网站下载一个别人构建好的whl,安装这个whl即可。

  5. 由于中文原因,你需要在文件夹的manimlib里的constants.py中把TEX_USE_CTEX = False改成True。

这些做好了就可以愉快的享用了~看起来复杂,其实就是下载几个东西,安装几个东西,只要不出错最多一个小时就能搞定。

manimgl版本

请参考github官方页面ManimKindergarten的中文文档,这两个是新版的界面。

新版的安装相对事就少一点:

  1. 首先你需要安装python(完全不会python的话建议先学习python再考虑学习这个库)。

  2. 可以通过pip install manimgl来安装新版的manim库,我的安装中没有出错,不考虑修改代码的话,就不用下载原代码库再安装了。

  3. 为了编辑文字,你需要安装一个LaTeX环境(如TeXlive或者MikTex)(注:新版有两种文字形式,text文字形式使用opengl渲染,而tex文字需要由LaTeX编译器渲染)。为了生成动画,你需要下载一个ffmpeg并配置好环境变量(你如果不保存视频的话似乎也可以不安装)。

  4. 如果也遇到中文原因,你需要找到安装目录里的manimlib文件夹,在里面的constants.py中把TEX_USE_CTEX = False改成True。(注:Text文本没有中文问题,所以也许你不需要用Tex文本来生成中文)

学习注意

虽然manim库是在不断更新的,但是动画代码的编写上变化不太大,如果你使用新版,尽可能看官网和中文文档来了解新的特性和功能,如果用老版,那么大多数网上的教程都是合适你的(因为大部分都是基于cairo版本的)。推荐一个B站的manim教程,还是不错的(因为是核心动画内容,两个版本应该都可以)

另外,国内有ManimKindergarden这个组织,你可以关注一下,他们也许能帮你解决一些深度使用上的问题。


希望这篇文章对你有帮助,你都看到这了,那就祝你学习顺利吧!

每个伟大的梦想,都源于一个微不足道的开始

posted @ 2022-04-05 11:36  fmq03  阅读(125)  评论(0)    收藏  举报