解释数学视频的动画引擎
项目描述
Manim是一个用于解释数学视频的动画引擎。它用于以3Blue1Brown视频(见3Blue1Brown)中所示的方式,以编程方式创建精确的动画。
此存储库包含3Blue1Brown使用的Manim版本。还有一个由社区维护的版本,可在https://github.com/ManimCommunity/manim/找到。要获取帮助或加入开发工作,请加入discord。
安装
Manim在Python 3.6或更高版本上运行。您可以通过pip从PyPI安装它
pip3 install manimlib
系统要求包括cairo、ffmpeg、sox(可选,如果您想运行后播放提示音)、latex(可选,如果您想使用LaTeX)。
您现在可以通过manim
命令使用它。例如
manim my_project.py MyScene
有关更多选项,请参阅下文使用manim部分。
直接
如果您想对manimlib本身进行修改,克隆此存储库,并在该目录中执行
# Install python requirements
python3 -m pip install -r requirements.txt
# Try it out
python3 ./manim.py example_scenes.py SquareToCircle -pl
直接(Windows)
-
安装Cairo。对于大多数用户,
pycairo‑1.18.0‑cp37‑cp37m‑win32.whl
将足够好(您可以从此处下载它或其他版本)。pip3 install C:\path\to\wheel\pycairo‑1.18.0‑cp37‑cp37m‑win32.whl
-
安装LaTeX发行版。MiKTeX推荐。
-
安装剩余的Python包。
git clone https://github.com/3b1b/manim.git cd manim pip3 install -r requirements.txt python3 manim.py example_scenes.py SquareToCircle -pl
Anaconda 安装
- 按照上述步骤安装 sox 和 latex。
- 使用
conda env create -f environment.yml
创建 conda 环境。 - 仅限 Windows 使用
pip install pyreadline
安装pyreadline
。
使用 virtualenv
和 virtualenvwrapper
安装 virtualenv
和 virtualenvwrapper
后
git clone https://github.com/3b1b/manim.git
mkvirtualenv -a manim -r requirements.txt manim
python3 -m manim example_scenes.py SquareToCircle -pl
使用 Docker
由于设置所有依赖项非常复杂,所以在这个仓库中提供了一个 Dockerfile 和 Compose 文件,以及 Docker Hub 上的一个预构建镜像 eulertour/manim。Dockerfile 包含了构建 manim 镜像的说明,而 Compose 文件包含了运行镜像的说明。
预构建的容器镜像包含 manim 仓库。INPUT_PATH
是容器查找场景文件的位置。您必须将 INPUT_PATH
环境变量设置为包含您的场景文件的绝对路径,并将 OUTPUT_PATH
环境变量设置为要写入媒体文件的目录。
INPUT_PATH=/path/to/dir/containing/source/code \
OUTPUT_PATH=/path/to/output/ \
docker-compose run manim example_scenes.py SquareToCircle -l
如果您的用户名不在 docker 组中,则需要以 root 用户运行该命令。
您可以将 example.scenes.py
替换为来自 INPUT_PATH
的任何相对路径。
运行后,输出将显示文件准备就绪在 /tmp/output/
,这指的是容器内的路径。您的 OUTPUT_PATH
将与该 /tmp/output
绑定挂载,因此容器对 /tmp/output
所做的任何更改都将反映在您的 OUTPUT_PATH
上。在 OUTPUT_PATH
中将创建 /media/
。
-p
不会工作,因为 manim 会查找容器系统中的视频播放器,但容器中没有。
第一次执行上述命令时,Docker 将从 Docker Hub 拉取镜像并将其缓存。在镜像被驱逐之前,任何后续运行都将使用缓存镜像。请注意,该镜像没有安装任何开发工具,也无法预览动画。它的目的是仅用于构建和测试。
使用 manim
尝试运行以下命令
python3 -m manim example_scenes.py SquareToCircle -pl
上述命令中的 -p
标志用于预览,这意味着渲染完成后将自动打开视频文件。 -l
标志用于更快的渲染,但质量较低。
其他一些有用的标志包括
-s
跳到末尾并仅显示最终帧。-n <number>
跳转到场景的第n
个动画。-f
在 finder 中显示文件(适用于 OSX)。
将 MEDIA_DIR
环境变量设置为指定图像和动画文件将写入的位置。
查看 old_projects
文件夹以查看以前 3b1b 视频的代码。请注意,通常在考虑向后兼容性时对库进行了开发。要保证旧项目能够运行,您将不得不回到完成该项目的提交。
在开发场景时,-sp
标志有助于只需查看最终效果,而无需生成完整的动画。使用 -n
标志跳过一些动画也可能很有帮助。
文档
文档正在 eulertour.com/docs 上进行中。还有由 @manim-kindergarten 维护的完整文档和教程:manim.ml(中文)。
教程
Todd Zimmerman 制作了一个 教程,介绍如何使用 manim 和 Python 3.7 开始动画,该教程已更新以在 Python 3.7 上运行。
manim-kindergarten 项目在 manim_sandbox 仓库 中编写和收集了一些有用的额外类和一些视频代码。
贡献
仅接受修复错误/修复错别字/改进现有内容的拉取请求(更多信息,请参阅 #1243)。大多数拉取请求应直接提交到 社区版本。
许可协议
目录 from_3b1b
中的所有文件,这些文件主要生成 3b1b 视频的视觉效果,版权归 3Blue1Brown 所有。
另一方面,仓库其余部分中找到的通用动画代码处于 MIT 许可协议之下。
项目详情
manimlib-0.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a4745f1af6e23cf5a5ea1749d24710b108925d7a79fb7b20e80029f6d5ff93b4 |
|
MD5 | 032717cb8cbbf7424d696946a049deb1 |
|
BLAKE2b-256 | b2e1dbc03fab72f236c0c47e1ecb5d37348584c8463ae3a444c2e1a8504dac4f |