跳转到主要内容

解释数学视频的动画引擎

项目描述

logo

Build Status Documentation MIT License Manim Subreddit Manim Discord

Manim是一个用于解释数学视频的动画引擎。它用于以3Blue1Brown视频(见3Blue1Brown)中所示的方式,以编程方式创建精确的动画。

此存储库包含3Blue1Brown使用的Manim版本。还有一个由社区维护的版本,可在https://github.com/ManimCommunity/manim/找到。要获取帮助或加入开发工作,请加入discord

安装

Manim在Python 3.6或更高版本上运行。您可以通过pip从PyPI安装它

pip3 install manimlib

系统要求包括cairoffmpegsox(可选,如果您想运行后播放提示音)、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)

  1. 安装FFmpeg.

  2. 安装Cairo。对于大多数用户,pycairo‑1.18.0‑cp37‑cp37m‑win32.whl将足够好(您可以从此处下载它或其他版本)。

    pip3 install C:\path\to\wheel\pycairo‑1.18.0‑cp37‑cp37m‑win32.whl
    
  3. 安装LaTeX发行版。MiKTeX推荐。

  4. 安装SoX.

  5. 安装剩余的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

使用 virtualenvvirtualenvwrapper

安装 virtualenvvirtualenvwrapper

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 环境变量设置为要写入媒体文件的目录。

  1. 安装 Docker
  2. 安装 Docker Compose
  3. 渲染动画
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 的任何相对路径。

docker diagram

运行后,输出将显示文件准备就绪在 /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 (4.8 MB 查看哈希值)

上传时间