Python manim 库
manim
执行文件
manim yourfile.py [className] [-params]
One can also specify the render quality by using the flags -ql
, -qm
, -qh
, or -qk
, for low, medium, high, and 4k quality, respectively.
flag | abbr | function |
---|---|---|
--help | -h | Show the help message and exit |
--output_file OUTPUT_FILE | -o OUTPUT_FILE | Specify the name of the output file |
--preview | -p | Automatically open the saved file once its done |
--show_in_file_browser | -f | Show the output file in the File Browser |
--write_all | -a | Write all the scenes from a file |
--save_last_frame | -s | Save the last frame only (no movie file is generated) |
--save_pngs | -g | Save each frame as a png |
--save_as_gif | -i | Save the video as gif |
--background_color BACKGROUND_COLOR | -c BACKGROUND_COLOR | Specify background color |
--dry_run | Do a dry run (render scenes but generate no output files) | |
--transparent | -t | Render a scene with an alpha channel |
--low_quality | -ql | Render at low quality |
--medium_quality | -qm | Render at medium quality |
--high_quality | -qh | Render at high quality |
--fourk_quality | -qk | Render at 4K quality |
若要在 Jupyter
中使用
|
|
Mobject
Mobject
是屏幕中出现的所有物体的超类
通用方法
所有方法以 Mobject.
开头
移动
to_edge(edge, buff=)
移动到指定方向及其线性组合
- edge:DIRECTION
- buff:两者的边界距离
to_corner(corner, buff=)
移动到四角
- corner:
- buff:两者的边缘的距离
move_to(…)
在当前位置移动到对应的位置
参数可以是
- mobject:另一个 Mobject
- aligned_edge:DIRECTION 的线性组合
- coor_mask:numpy 向量,默认为
np.array([1, 1, 1])
next_to(mobject, direction, buff=)
移动到指定对象的相对位置
- mobject:另一个 Mobject 对象
- direction:DIRECTION
- buff:两者的边界距离,默认为 0.25
- aligned_edge:对齐的方向
align_to(mobject, direction)
与指定对象对齐
- mobject:另一个 Mobject 对象
- direction:DIRECTION
shift(aligned_edge)
向自己的垂直方向平移
- aligned_edge:DIRECTION 的线性组合
center()
放到画面中心
旋转
rotate(angle)
逆时针旋转
- angle:
PI * number
- angle:
flip(direction)
按照指定方向翻转 180 度,方向遵循右手定则
- direction:DIRECTION
变形
become(mobject)
变成其他图形
- mobject:另一个 Mobject 对象
set_color(color)
变色
- color:COLOR
set_color_by_gradient(gradient):
text.set_color_by_gradient(BLUE, GREEN)
text[7:12].set_color_by_gradient(BLUE, GREEN)
scale(scale_factor)
缩放大小
- scale_factor:缩放倍数
fade(drakness=0.5)
变暗
- darkness:暗度
获取信息
get_center()
获取位置信息
get_height()
获取高度
get_width()
获取宽度
组合
arrange(direction, buff=0.25, center=True, **kwargs)
排列子物体,sort mobjects next to each other on screen.
|
|
VMobject 独有方法
VMobject
是 Mobject
的子类,使用贝塞尔曲线来表示物体
set_fill(color,opacity)
在图案中填充颜色
- color:COLOR
- opacity:int 透明度
set_opacity(opacity)
设置
fill
、stroke
和background_stroke
的不透明度setstroke(color, width, opacity, background)
设置
stroke
样式(边框样式)set_style(fill_color=None, fill_opacity=None, stroke_color=None, stroke_width=None, stroke_opacity=None, background_stroke_color=None, background_stroke_width=None, background_stroke_opacity=None, sheen_factor=None, sheen_direction=None, background_image_file=None, family=True)
允许设置全部样式
SVG
Text
Mobjects used for displaying (non-LaTeX) text.
Tex(*text_strings, **kwargs)
可传入多个 text_strings
|
|
Parameters
- color
- 改变全部文字的颜色
- 接收一个
str
,如'#FFFFFF'
- 或者是定义在
constants.py
里的颜色常量,如BLUE
- t2c:
text2color
的缩写,改变指定文字的颜色- 接收一个
dict
,如{'text': color}
- 或者切片模式,如
{'[1:4]': color}
- gradient:
- 渐变色
- 接收一个
tuple
,如(BLUE, GREEN, '#FFFFFF')
- t2g:
text2gradient
的缩写,改变指定文字的渐变色- 接收一个
dict
,如{'text': (BLUE, GREEN, '#FFFFFF')}
- 或者切片模式,如
{'[1:4]': (BLUE, GREEN, '#FFFFFF')}
- font:
- 改变全部文字的字体
- 接收一个
str
,如'Source Han Sans'
- t2f:
text2font
的缩写,改变指定文字的字体- 接收一个
dict
,如{'text': 'Source Han Sans'}
- 或者切片模式,如
{'[1:4]': 'Source Han Sans'}
- slant:
- 斜体选项:
NORMAL
或者ITALIC
- 斜体选项:
- t2s:
text2slant
的缩写,改变指定文字成斜体- 接收一个
dict
,如{'text': ITALIC}
- 或者切片模式,如
{'[1:4]': ITALIC}
- weight:
- 字重(粗细)选项:
NORMAL
或BOLD
- 字重(粗细)选项:
- t2w:
text2weight
的缩写,改变指定文字成粗体- 接收一个
dict
,如{'text': BOLD}
- 或者切片模式,如
{'[1:4]': BOLD}
- 其余
Mobject
属性
Methods
- set_color_by_t2c(self, t2c):
text.set_color_by_t2c({'world':BLUE})
- set_color_by_t2g(self, t2g):
text.set_color_by_t2g({'world':(BLUE, GREEN)})
切片
|
|
Tex
A string compiled with LaTeX in normal mode.
Tex(*tex_strings, **kwargs)
可传入多个 tex_strings
|
|
we are using a raw string (r'---'
) instead of a regular string ('---'
).
MathTex
Whereas in a MathTex mobject everything is math-mode by default.
Code
Code
使用 pygments 给代码生成带语法高亮的 html 文件,然后再转换为物体。
Code(file_name=None, **kwargs)
结构
Code[0]
是代码的背景 (Code.background_mobject
)- 如果
background == "rectangle"
则是一个 Rectangle - 如果
background == "window"
则是一个带有矩形和三个点的 VGroup
- 如果
Code[1]
是行号 (Code.line_numbers
一个 Paragraph),可以使用Code.line_numbers[0]
或者Code[1][0]
来访问行号中的第一个数字Code[2]
是代码 (Code.code
),一个带有颜色的 Paragraph
parameters
- file_name
- Name of the code file to display.
- code
- If
file_name
is not specified, a code string can be passed directly.
- If
- background
- 代码背景块形状
- 默认
'rectangle'
|
|
Brace
大括号
Brace(mobject, direction, **kwargs)
ImageMobject
注意:ImageMobject
不是 VMobject
的子类,所以有很多动画无法使用
ImageMobject(filename, **kwargs)
parameters
- height:插入图片的高度,默认为 2
Methods
- set_opacity(alpha) 设置图片不透明度
Geometry
通用参数
- color:颜色
- fill_opacity:图形内不透明度,默认为 0 (透明)
圆
- Circle(**kwargs)
- 正圆
点
- Dot(point, radius, stroke_width, fill_opacity, color, **kwargs)
- point:np.array 或 DIRECTION,默认为
array([0.0, 0.0, 0.0])
- radius:半径,默认为 0.08
- stroke_width:边框宽度,默认为 0
- fill_opacity:不透明度,默认为 1.0
- color:颜色,默认为
'#FFFFFF'
- point:np.array 或 DIRECTION,默认为
三角形
- Triangle(**kwargs)
- 正三角形
矩形
- Rectangle(**kwargs)
- 矩形
- paramters
height
: 矩形高度width
: 矩形宽度
- Square(**kwargs)
- 正方形
- parameters
side_length
:正方形边长
线
Line(start, end, **kwargs)
start:起点,默认 LEFT 或
array([- 1.0, 0.0, 0.0])
end:终点,默认 RIGHT 或
array([1.0, 0.0, 0.0])
methods
set_length(length)**
缩放到
length
长度
箭头
- Arrow(*args, **kwargs)
- start:起点,默认 LEFT
- end:终点,默认 RIGHT
Animation
通用
所有方法以 self.
开头
wait()
wait(seconds)
等待动画停留时间,如果没有参数则默认等待到将动画播放完为止
add()
add(someObject1, someObject2, …)
无动画添加文字
remove()
remove(someObject1, someObject2, …)
移除
play()
play(SomePlayMethod(someObject), run_time=seconds)
播放某种动画方法
|
|
ApplyMethod()
ApplyMethod(method, *args, **kwargs)
因为 ApplyMethod
是 Transform 的子类,所以每次只能对同一个物体执行一次操作(最后一次)
|
|
PlayMethod
Mobject.animate.method()
Creation
manim.animation.creation
DrawBorderThenFill(mobject)
Draw the border first and then show the fill.
|
|
ShowCreation(mobject)
Incrementally show a VMobject.
|
|
Uncreate(mobject)
Like
ShowCreation
but in reverse.Write(mobject)
Simulate hand-writing a
Text
or hand-drawing aVMobject
.
Fading
manim.animation.fading
- FadeIn(mobject) 淡入
- FadeInFrom(mobject, direction) 从指定方向淡入
- FadeInFromPoint(mobject, point) 从指定位置以点淡入
|
|
- FadOut(mobject) 淡出
- FadeOutAndShift(mobject, direction) 从指定方向淡出
Movement
MoveAlongPath(mobject, path)
Make one mobject move along the path of another mobject
Rotate
Animations related to rotation.
- Rotate(mobject, angle)
Transform
Animations transforming one mobject into another.
- Transform(mobject, target_mobject=None, **kwargs)\
- TransformFromCopy(mobject, target_mobject, **kwargs)
|
|
Restore(mobject, **kwargs)
返回之前保存的状态
|
|
ApplyFunction(function, mobject, **kwargs)
执行函数操作
|
|
Swap(*mobjects, **kwargs)
互换位置
|
|
Grow
GrowArrow(arrow, **kwargs)
GrowFromPoint(mobject, point, **kwargs)
从指定方向由小变大进入
|
|
GrowFromCenter(mobject, **kwargs)
SpinInFromNothing(mobject, **kwargs)
|
|
Indication
- FocusOn(focus_point, **kwargs)
- focus_point:Mobject or point
|
|
- Indicate(mobject, target_mobject=None, **kwargs)
|
|
Flash(point, color, **kwargs)
一闪一闪
|
|
CircleIndicate(mobject, **kwargs)
画圈圈
|
|
ShowCreationThenDestructionAround(mobject, **kwargs)
展示方框
|
|
ApplyWave(mobject, **kwargs)
水波效果
|
|
WiggleOutThenIn(mobject, **kwargs)
扭一扭
|
|
Movement
- MoveAlongPath(mobject, path, **kwargs)
|
|
Numbers
ChangingDecimal(decimal_mob, number_update_func, **kwargs)
计数动画
|
|
- ChangeDecimalToValue(decimal_mob, target_number, **kwargs)
Rotation
Rotate
目前是 Transform
的子类,即带有 path_arc
的 Transform
,所以会有扭曲
Rotating
直接继承自 Animation
,根据角度插值,比较顺滑,推荐使用
- Rotating(mobject, **kwargs)
|
|
Update
UpdateFromFunc()
实时更新
|
|
UpdateFromAlphaFunc(mobject, update_function, **kwargs)
传入的函数含有参数 alpha,表示动画完成度(0~1 之间)
|
|
Composition
AnimationGroup(*animations, **kwargs)
传入一系列动画,一起执行(不能通过下标访问动画)
- lag_ratio:默认为 0(即上一个动画运行到 0%的时候运行下一个动画)
|
|
Camera
Camera
类及其子类用于获取当前屏幕上的画面, 然后作为每帧图像传递给 SceneFileWriter 来生成视频
Constants
Module Attributes
ORIGIN | The center of the coordinate system. |
---|---|
UP | One unit step in the positive Y direction. |
DOWN | One unit step in the negative Y direction. |
RIGHT | One unit step in the positive X direction. |
LEFT | One unit step in the negative X direction. |
IN | One unit step in the negative Z direction. |
OUT | One unit step in the positive Z direction. |
UL | One step up plus one step left. |
UR | One step up plus one step right. |
DL | One step down plus one step left. |
DR | One step down plus one step right. |
PI | The ratio of the circumference of a circle to its diameter. |
TAU | The ratio of the circumference of a circle to its radius. |
DEGREES | The exchange rate between radians and degrees. |
六 其他
- 公式怎么对齐
- 直接在
TexMobject
中使用&
对齐 - 两个
mobject
对齐,使用obj2.next_to(obj1, DOWN, aligned_edge=LEFT)
使obj2
在obj1
下方,并左对齐 VGroup
内对齐,使用group.arrange(DOWN, aligned_edge=LEFT)
使VGroup
中的子元素依次向下排开,并左对齐
- 直接在