Manim
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
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 | 追踪返回点的路径。 | |
相机
命令行和配置
场景
资源
官网
- Manim 3b1b版官网:https://github.com/3b1b/manim
- Manim 3b1b版文档:https://3b1b.github.io/manim/
- Manim 3b1b版中文文档:https://docs.manim.org.cn/development/about.html
- Manim 社区版官网: https://www.manim.community/
- Manim 社区版文档:https://docs.manim.community/
- Manim 社区版源代码:https://github.com/ManimCommunity/manim