Manim:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
Manim是一个用于创建数学动画的Python库。最初由[https://www.3blue1brown.com/ 3Blue1Brown] | Manim是一个用于创建数学动画的Python库。最初由[https://www.3blue1brown.com/ 3Blue1Brown]作者为个人项目而开发。目前由两个版本,一个是3b1b版,一个是manim社区版。 | ||
==简介== | ==简介== | ||
第7行: | 第7行: | ||
{| class="wikitable" | {| class="wikitable" | ||
! 名称 | ! 名称 | ||
! 描述 | ! 描述 | ||
! 官网 | ! 官网 | ||
|- | |||
|manim 社区版 | |||
| 由 Manim Community 开发团队维护,目标是更稳定易使用。<br />安装:<code>pip install manim</code> | |||
| https://github.com/ManimCommunity/manim | |||
|- | |- | ||
| manim 3b1b版 | | manim 3b1b版 | ||
| 也称ManimGL,通过OpenGL渲染。由 3Blue1Brown 的 Grant Sanderson 维护。<br />安装:<code>pip install manimgl</code> | |||
| 也称ManimGL,通过OpenGL渲染。由 3Blue1Brown 的 Grant Sanderson 维护。 | |||
| https://github.com/3b1b/manim | | https://github.com/3b1b/manim | ||
|} | |} | ||
第32行: | 第29行: | ||
|[https://docs.manim.community/en/stable/installation/windows.html Manim 社区版文档:安装/Windows] | |[https://docs.manim.community/en/stable/installation/windows.html Manim 社区版文档:安装/Windows] | ||
}} | }} | ||
== | |||
==快速入门== | |||
新建一个目录project。新建一个文件<code>scene.py</code>,输入如下代码: | |||
<syntaxhighlight lang="python" > | |||
from manim import * | |||
class CreateCircle(Scene): | |||
def construct(self): | |||
circle = Circle() # 创建一个圆形 | |||
circle.set_fill(PINK, opacity=0.5) # 填充颜色和透明度 | |||
self.play(Create(circle)) # 显示在屏幕上 | |||
</syntaxhighlight> | |||
打开命令行,进入project目录,执行如下命令: | |||
manim -pql scene.py CreateCircle | |||
Manim 将输出渲染信息,然后创建一个 MP4 文件。 | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/tutorials/quickstart.html Manim 文档:快速开始] | |||
}} | |||
==对象== | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference_index/mobjects.html Manim 文档:Mobjects] | |||
}} | |||
===几何图形=== | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.html#module-manim.mobject.geometry.arc Manim 文档:几何图形/弧形的] | |||
}} | |||
====弧形的==== | |||
都位于manim.mobject.geometry.arc模块 | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Circle.html#manim.mobject.geometry.arc.Circle Circle] | |||
| 圆形 | |||
|<code>Circle()</code> <br /><code>Circle(radius=2.0, color=BLUE_B, fill_opacity=1)</code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html Dot] | |||
| 点 | |||
| <code>Dot()</code> <br /><code>Dot(point=LEFT, radius=0.1)</code><br /><code>Dot(color='#FF00FF')</code> | |||
|- | |||
| | |||
| | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html Manim 文档:Arc] | |||
}} | |||
====线==== | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line Line] | |||
| 线段 <br />常用函数:<br /><code>put_start_and_end_on(start, end)</code> 设置线的开始和结束坐标 | |||
| <code>Line()</code> <br /><code>Line([1,1,0], [2,2,0])</code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html Arrow] | |||
| 箭头 | |||
| <code>Arrow(start=LEFT, end=RIGHT)</code> <br /><code>Arrow([1,1,0], [2,2,0])</code> | |||
|- | |||
| | |||
| | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.html Manim 文档:line] | |||
}} | |||
====多边形==== | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#manim.mobject.geometry.polygram.Square Square] | |||
| 正方形 | |||
| <code>Square(side_length=2.0)</code> <br /><code>Square(0.6)</code> | |||
|- | |||
| | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.html Manim 文档:polygram] | |||
}} | |||
===文本=== | |||
使用[LaTeX]渲染的类:MathTex、SingleStringMathTex、Tex、TexSymbol、Title。 | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#module-manim.mobject.text.text_mobject Text] | |||
| 文本对象。 | |||
| <code>Text('Hello world')</code> <br /><code>Text('你好').set_color(WHITE)</code></code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText MarkupText] | |||
| 标记文本。可以使用[https://pango.gnome.org/ Pango]布局库(类似html)渲染 | |||
| <code><nowiki>MarkupText('<span foreground="red" size="x-large">你</span>好,<i>世界</i>!')</nowiki></code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html Paragraph] | |||
| 段落。 | |||
| | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#manim.mobject.text.tex_mobject.Title Title] | |||
| 标题。基于Tex类 | |||
| <code>Title("我是标题")</code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex MathTex] | |||
| 使用LaTeX渲染文本,数学模式。基于SingleStringMathTex类 | |||
|<code>MathTex(r"\int_a^b f'(x) dx = f(b)- f(a)")</code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex Tex] | |||
| 使用LaTeX渲染文本,普通模式。基于MathTex类 | |||
| <code>Tex('世界')</code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html Code] | |||
| 高亮显示源代码 | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/guides/using_text.html Manim 文档:主题指南/渲染文本和公式] | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.text.html Manim 文档:text] | |||
}} | |||
=== 表格 === | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.table.html Manim 文档:table] | |||
}} | |||
=== 图像 === | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html ImageMobject] | |||
| 显示图像,通过文件或numpy数组。可以是相对路径或绝对路径 | |||
| <code>ImageMobject('picture.jpg')</code> <br /><code>ImageMobject(np.uint8([[0, 100, 30, 200],[255, 0, 5, 33]]))</code> | |||
|- | |||
| AbstractImageMobject | |||
| | |||
| | |||
|- | |||
|ImageMobjectFromCamera | |||
| | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.html Manim 文档:image_mobject] | |||
}} | |||
=== 矢量化 === | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html VGroup] | |||
| 组合多个实例,以便一起操作,如缩放、移动等。 <br /> 添加元素可以使用<code>add()</code>、<code>+</code>和<code>+=</code>,删除元素使用<code>remove()</code>、<code>-</code>和<code>-=</code> <br />常用方法:<br /><code>arrange()</code> 对齐。<code>VGroup(t1, t2).arrange(direction=DOWN, aligned_edge=LEFT)</code> | |||
| <code>VGroup(c1, c2, c3)</code> | |||
|- | |||
| | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.html Manim 文档:vectorized_mobject] | |||
}} | |||
==动画== | |||
=== 动画 === | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html animation] | |||
| 动画。 | |||
| <code>circle_1.animate(run_time=1, lag_ratio=0.1).shift(UP * 2)</code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.animation.animation.Wait.html Wait] | |||
| 等待动画,无操作。 | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://docs.manim.community/en/stable/reference/manim.animation.animation.html Manim 文档:animation] | |||
}} | |||
===改变=== | |||
{| class="wikitable" | |||
! 名称 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.animation.changing.AnimatedBoundary.html#manim.animation.changing.AnimatedBoundary AnimatedBoundary] | |||
| 边框颜色变化动画。 | |||
| <code>AnimatedBoundary(Text("闪耀!"), colors=[RED, GREEN, BLUE], cycle_rate=3)</code> | |||
|- | |||
| [https://docs.manim.community/en/stable/reference/manim.animation.changing.TracedPath.html TracedPath] | |||
| 追踪返回点的路径。 | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
|} | |||
==相机== | |||
==命令行和配置== | |||
==场景== | |||
==资源== | ==资源== | ||
===官网=== | ===官网=== | ||
* Manim | * Manim 3b1b版官网:https://github.com/3b1b/manim | ||
* 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://www.manim.community/ | ||
* Manim 社区版文档:https://docs.manim.community/ | |||
* Manim 社区版源代码:https://github.com/ManimCommunity/manim | * Manim 社区版源代码:https://github.com/ManimCommunity/manim | ||
===文章=== | ===文章=== |
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
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