Manim:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第426行: | 第426行: | ||
===文章=== | ===文章=== | ||
*[https://github.com/cai-hust/manim-tutorial-CN cai-hust/manim-tutorial-CN:manim中文入门教程] |
2022年8月9日 (二) 16:48的最新版本
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 文档:changing
显示或移除
名称 | 描述 | 示例 |
---|---|---|
Create | 增量显示一个 VMobject | Create(Square())
|
Uncreate | 移除一个 VMobject动画 | Uncreate(Square())
|
Write | 模拟手写一个Text或VMobject | Text("Hello", font_size=120)
|
Unwrite | 模拟手动擦除一个Text或VMobject | |
AddTextLetterByLetter | 逐个字母显示文本 | AddTextLetterByLetter(>Text("Hello"))
|
AddTextWordByWord | 逐个单词显示文本 | AddTextWordByWord(>Text("Hello, World"))
|
ShowIncreasingSubsets | 逐个显示VGroup的元素VMobject,之前显示子对象不消失。 | ShowIncreasingSubsets( VGroup(Dot(), Square(), Triangle()) )
|
ShowSubmobjectsOneByOne | 逐个显示VGroup的元素VMobject,之前显示子对象不显示。 | ShowIncreasingSubsets( VGroup(Dot(), Square(), Triangle()) )
|
DrawBorderThenFill | 首先绘制边框,然后显示填充。 | DrawBorderThenFill(Square(fill_opacity=1, fill_color=ORANGE))
|
SpiralIn | 螺旋飞入动画 | |
ShowPartial |
了解更多 >> Manim 文档:creation
淡入淡出
名称 | 描述 | 示例 |
---|---|---|
FadeIn | 淡入 参数: mobjects – 要淡入的 mobjects。 shift – mobject 在淡入时移动的向量。 target_position – mobject 在淡入时开始的位置。如果另一个 mobject 被指定为目标位置,则使用它的中心。 scale – mobject 在淡入时重新缩放到其原始大小之前最初缩放的因子。 |
FadeIn(Text("hello")) FadeIn(Text("hello"), shift=DOWN)
|
FadeOut | 淡出 参数同淡入 | FadeOut(Text("hello")) FadeIn(Text("hello"), scale=0.5)
|
了解更多 >> Manim 文档:fading
生长
名称 | 描述 | 示例 |
---|---|---|
GrowFromCenter | 从中心生长 参数: mobject – 要引入的 mobjects。 point_color – mobject 生长完成前的颜色。 |
GrowFromCenter(Square()) GrowFromCenter(Square(), point_color=RED)
|
GrowFromPoint | 从一个点生长 参数:mobject – 要引入的 mobjects。 point – mobject 增长的起点。 oint_color –生长完成前的颜色 |
GrowFromPoint(Square(), ORIGIN))
|
GrowFromEdge | 从一个边生长 | GrowFromEdge(Square(), RIGHT)
|
SpinInFromNothing | 从中心旋转生长 参数: angle – mobject 达到其完整大小之前的旋转量。。例如 2*PI 表示一次完整旋转 |
SpinInFromNothing(Square()) SpinInFromNothing(Square(), angle=2 * PI)
|
GrowArrow | 箭头生长 | GrowArrow(Arrow())
|
了解更多 >> Manim 文档:growing
吸引注意力
名称 | 描述 | 示例 |
---|---|---|
Wiggle | 摇摆 | Wiggle(Text("Wiggle"))
|
ApplyWave | 波浪 | |
Circumscribe | 周围画线 | |
Flash | 闪光 | |
FocusOn | 专注于 | |
Indicate | 注明,通过临时调整大小和颜色来突出。 | |
ShowPassingFlash | 每帧只显示 VMobject 的一小部分。 | |
了解更多 >> Manim 文档:indication
变换
运动
相机
命令行和配置
场景
资源
官网
- 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