Manim:修订间差异

无编辑摘要
无编辑摘要
第1行: 第1行:
Manim是一个用于创建数学动画的Python库。最初由[https://www.3blue1brown.com/ 3Blue1Brown]作者为个人项目而开发。目前由两个版本,一个是3b1b的,一个是manim社区版。
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版
| pip install manimgl
| 也称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
|-
|manim 社区版
| pip install manim
| 由 Manim Community 开发团队维护,目标是更稳定易使用。
| https://github.com/ManimCommunity/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 官网:https://github.com/3b1b/manim
* Manim 3b1b版官网:https://github.com/3b1b/manim
* Manim 中文文档:https://docs.manim.org.cn/development/about.html
* 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

  • 安装好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 追踪返回点的路径。


相机

命令行和配置

场景

资源

官网

文章