用于解释数学视频的动画引擎

manimlib的Python项目详细描述


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=================="BuiBuild StatuStatuStatuStatuStatuStatuStatuStatuStatuStatuStatuStatus" src "src" src "src" src "src src src src src src src src src src src src ========2e7376673f6272616e63683d6d6173746572" /><麻省理工学院许可证manim subreddit马尼姆不和谐3blue1brown

安装

manim运行在python 3.7上。您可以通过pip从pypi安装它

啊!

系统要求是cairoffmpegsoxlatex(可选,如果您想使用乳胶)。

现在可以通过manim命令使用它。例如:

啊!

有关更多选项,请进一步查看下面的"使用manim"部分。

直接

如果您想破解manimlib本身,请克隆此存储库并在该目录中执行:

啊!

直接(Windows)

  1. 安装ffmpeg

  2. 安装cairo。从http://www.lfd.uci.edu/%7egohlke/pythonlibs/'35;pycairo" rel="nofollow">https://www.lfd.uci.edu/~gohlke/pythonlibs/'35;pycairo下载控制盘。对于大多数用户来说,pycairo-1.18.0-cp37cp37m-win32.whl会很好。

    啊!
  3. 安装和乳胶分配。建议使用miktex

  4. 安装sox

  5. 安装其余的python包。确保requirements.txt中的pycairo==1.17.1更改为pycairo==1.18.0

    啊!

水蟒安装

  • 如上所述安装SOX和乳胶。
  • 使用conda env create-f environment.yml创建conda环境
  • 仅限Windows通过pip install pyreadline安装pyreadline

使用virtualenv和virtualenvwrapper

在安装了virtualenv和virtualenvwrapper之后 啊!

使用Docker

因为要正确设置所有依赖关系有点困难,所以是本回购协议中提供的docker file和compose文件,以及docker hub上的预先制作图像。dockerfile包含有关如何构建manim图像的说明,而compose文件包含有关如何运行图像的说明。

预构建的容器映像包含manin存储库。 input_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组中,则该命令需要以根用户身份运行。

您可以将example.scenes.py替换为输入路径中的任何相对路径

运行输出后,将显示文件已在/tmp/output/准备就绪,它指容器中的路径。您的输出路径绑定挂载到此/tmp/output上,因此容器对/tmp/output所做的任何更改都将镜像到您的输出路径上。/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\u dir环境变量以指定图像和动画文件的写入位置。

查看old_projects文件夹以查看之前3b1b视频的代码。但是,请注意,通常在不考虑与那些旧项目的向后兼容性的情况下对库进行开发。要运行一个旧项目并保证它能正常工作,您必须返回完成该项目的提交。

在开发场景时,-sp标志有助于在不必生成完整动画的情况下查看结尾的内容。使用-n标志跳过一些动画也很有帮助。

文档

文档正在manim.readthedocs.io上进行

演练

Todd Zimmerman编写了一个关于Manim入门的教程,该教程已更新为在Python3.7上运行。

直播

要实时播放动画,只需使用--live stream选项运行manim即可。

> python -m manim --livestream
Writing to media/videos/scene/scene/1080p30/LiveStreamTemp.mp4

Manim is now running in streaming mode. Stream animations by passing
them to manim.play(), e.g.
>>> c= Circle()
>>> manim.play(ShowCreation(c))

>>>

也可以直接流到抽搐。做那件事很简单 --livestream和--to-twitch to manim并用指定流密钥 --带钥匙。然后,当您按照上面的示例操作时,流将直接 从抽搐频道开始(无音频支持)。

贡献

总是受欢迎的。尤其是,迫切需要测试和文档。

许可证

活动项目和旧项目目录中的所有文件(大体上为3b1b视频生成视觉效果)都是3blue1brown版权所有。

另一方面,在存储库的其余部分中找到的通用动画代码在麻省理工学院的许可证下。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何创建Restful服务并将其部署到OSGi容器?   java如何获取用户在EditText中输入的时间并从中扣除5小时30分钟?   java用户无法注销firebase 安卓   java Undertow始终将字符集添加到ContentType头,即使它不是文本MIME类型   java LocalBroadcastManager未正确接收消息   foreach在Java中有没有比For循环更好的方法可以灵活地遍历集合?   java如何在安卓上移动球   在OSGi下的Log4j中使所有记录器异步时,java ClassNotFoundException   java未知输入字节长度转换为int   java测试工厂在使用前缀命名时抛出NPE   对象的副本(JAVA)   java SP20310:无法打开文件。sql   java Spring安全性仅为一条路径添加安全性   java在idea中获取菱形运算符的编译错误