Manim

Eric讨论 | 贡献2022年8月9日 (二) 10:04的版本

Manim是一个用于创建数学动画的Python库。最初由3Blue1Brown作者为个人项目而开发。目前由两个版本,一个是3b1b版,一个是manim社区版。

简介

时间轴

版本

名称 描述 官网
manim 社区版 由 Manim Community 开发团队维护,目标是更稳定易使用。
安装:pip install manim
https://github.com/ManimCommunity/manim
manim 3b1b版 也称ManimGL,通过OpenGL渲染。由 3Blue1Brown 的 Grant Sanderson 维护。
安装:pip install manimgl
https://github.com/3b1b/manim

安装

Windows

  • 安装好FFmpeg,命令行输入ffmpeg --version检验。
  • 安装好LaTeX,如果需要用到LaTeX则安装。命令行输入latex --version检验。
  • 使用如下命令安装
pip install manim

了解更多 >> Manim 社区版文档:安装/Windows


快速入门

新建一个目录project。新建一个文件scene.py,输入如下代码:

from manim import *

class CreateCircle(Scene):
    def construct(self):
        circle = Circle()  # 创建一个圆形
        circle.set_fill(PINK, opacity=0.5)  # 填充颜色和透明度
        self.play(Create(circle))  # 显示在屏幕上

打开命令行,进入project目录,执行如下命令:

manim -pql scene.py CreateCircle

Manim 将输出渲染信息,然后创建一个 MP4 文件。

了解更多 >> Manim 文档:快速开始



对象

了解更多 >> Manim 文档:Mobjects


几何图形

了解更多 >> Manim 文档:几何图形/弧形的


弧形的

都位于manim.mobject.geometry.arc模块

名称 描述 示例
Circle 圆形 Circle()
Circle(radius=2.0, color=BLUE_B, fill_opacity=1)
Dot Dot()
Dot(point=LEFT, radius=0.1)
Dot(color='#FF00FF')

了解更多 >> Manim 文档:Arc


线

名称 描述 示例
Line 线段
常用函数:
put_start_and_end_on(start, end) 设置线的开始和结束坐标
Line()
Line([1,1,0], [2,2,0])
Arrow 箭头 Arrow(start=LEFT, end=RIGHT)
Arrow([1,1,0], [2,2,0])

了解更多 >> Manim 文档:line


多边形

名称 描述 示例
Square 正方形 Square(side_length=2.0)
Square(0.6)

了解更多 >> Manim 文档:polygram


文本

使用[LaTeX]渲染的类:MathTex、SingleStringMathTex、Tex、TexSymbol、Title。

名称 描述 示例
Text 文本对象。 Text('Hello world')
Text('你好').set_color(WHITE)
MarkupText 标记文本。可以使用Pango布局库(类似html)渲染 MarkupText('<span foreground="red" size="x-large">你</span>好,<i>世界</i>!')
Paragraph 段落。
Title 标题。基于Tex类 Title("我是标题")
MathTex 使用LaTeX渲染文本,数学模式。基于SingleStringMathTex类 MathTex(r"\int_a^b f'(x) dx = f(b)- f(a)")
Tex 使用LaTeX渲染文本,普通模式。基于MathTex类 Tex('世界')
Code 高亮显示源代码

了解更多 >> Manim 文档:主题指南/渲染文本和公式 Manim 文档:text


表格

了解更多 >> Manim 文档:table


图像

名称 描述 示例
ImageMobject 显示图像,通过文件或numpy数组。可以是相对路径或绝对路径 ImageMobject('picture.jpg')
ImageMobject(np.uint8([[0, 100, 30, 200],[255, 0, 5, 33]]))
AbstractImageMobject
ImageMobjectFromCamera

了解更多 >> Manim 文档:image_mobject


矢量化

名称 描述 示例
VGroup 组合多个实例,以便一起操作,如缩放、移动等。
添加元素可以使用add()++=,删除元素使用remove()--=
常用方法:
arrange() 对齐。VGroup(t1, t2).arrange(direction=DOWN, aligned_edge=LEFT)
VGroup(c1, c2, c3)

了解更多 >> Manim 文档:vectorized_mobject


动画

动画

名称 描述 示例
animation 动画。 circle_1.animate(run_time=1, lag_ratio=0.1).shift(UP * 2)
Wait 等待动画,无操作。

了解更多 >> Manim 文档:animation


改变

名称 描述 示例
AnimatedBoundary 边框颜色变化动画。 AnimatedBoundary(Text("闪耀!"), colors=[RED, GREEN, BLUE], cycle_rate=3)
TracedPath 追踪返回点的路径。


相机

命令行和配置

场景

资源

官网

文章