样式¶
影片代码
import manimgx as m
class StyleHero(m.Scene):
def construct(self) -> None:
stroked = m.Circle(color=m.BLUE, stroke_width=8)
filled = m.Circle(color=m.GREEN, fill_opacity=0.6)
gradient = m.Circle(fill_opacity=1, stroke_width=0).set_color(
[m.BLUE, m.YELLOW]
)
faint = m.Circle(color=m.RED, fill_opacity=1).fade(0.7)
circles = m.VGroup(stroked, filled, gradient, faint).arrange(buff=0.8)
names = m.VGroup(
m.Text("stroke", font="monospace", font_size=24),
m.Text("fill", font="monospace", font_size=24),
m.Text("gradient", font="monospace", font_size=24),
m.Text("fade", font="monospace", font_size=24),
)
for circle, name in zip(circles, names, strict=True):
name.next_to(circle, m.DOWN, buff=0.5)
self.play(
m.LaggedStart(*[m.Create(circle) for circle in circles], lag_ratio=0.2)
)
self.play(m.FadeIn(names))
self.wait()
形状有描边(其轮廓)和填充(其内部)。各自都有颜色和不透明度,取值从 0(不可见)到
1(完全不透明),描边还有宽度,以单位的百分之一为单位。大多数形状默认有描边无填充:设置
fill_opacity 来填充它们。
创建时每个 mobject 都接受相同的样式关键字,每种类型有自己的默认值(圆为红色,点为填充)。 以下方法在之后更改样式,作用于 mobject 及其所有组成部分。
Style
¶
样式关键字:每个 mobject 与每个组共用的统一词汇。
每个 mobject 接收这些关键字,各类为其设置各自的默认值
(Circle 为红色,Dot 为填充)。颜色可为
ManimColor 可解析的任何形式:命名颜色如 BLUE、
十六进制字符串或 RGB 值。
color填充与描边共用的颜色(默认白色);None 表示该类的默认值。
fill_color填充的颜色;未给出时为
color。多个颜色沿sheen_direction构成渐变。fill_opacity填充的不透明度,取值从 0 到 1(默认 0:无填充)。
stroke_color描边的颜色;未给出时为
color。多个颜色构成渐变。stroke_opacity描边的不透明度,取值从 0 到 1(默认 1)。
stroke_width描边的宽度,以场景单位的百分之一计(默认 4;0:无描边)。
background_stroke_color绘制于填充之后的轮廓颜色(默认黑色)。
background_stroke_opacity轮廓的不透明度,取值从 0 到 1(默认 1)。
background_stroke_width轮廓的宽度,以场景单位的百分之一计(默认 0:无)。
sheen_factor颜色朝
sheen_direction变亮的程度,取值从 -1 到 1(默认 0); 负值变暗。sheen_direction颜色变亮的方向(默认
UL)。joint_type描边在路径转折处的连接方式:圆角、斜切或斜接,按二维场景的绘制方式 (参见 LineJointType;默认 AUTO:斜接)。
cap_style描边在其显示的每一端的端点样式(开放路径的端点、虚线的端点):圆头、平头 或方头,按二维场景的绘制方式(参见 CapStyleType;默认 AUTO:平头)。
shade_in_3d三维场景的光是否对该 mobject 着色。
material其表面在三维场景中如何反射场景的光(参见 Material);None:Manim 的着色(默认)。
namemobject 的名称;未给出时为其类名。
z_index其在绘制顺序中的位置:索引较高者绘制于较低者之上 (默认 0)。
targetMoveToTarget将 mobject 移动至的状态。
color
¶
填充与描边共用的颜色(默认白色);None 表示该类的默认值。
fill_color
¶
填充的颜色;未给出时为 color。多个颜色沿 sheen_direction 构成渐变。
fill_opacity
¶
填充的不透明度,取值从 0 到 1(默认 0:无填充)。
stroke_color
¶
描边的颜色;未给出时为 color。多个颜色构成渐变。
stroke_opacity
¶
描边的不透明度,取值从 0 到 1(默认 1)。
stroke_width
¶
描边的宽度,以场景单位的百分之一计(默认 4;0:无描边)。
background_stroke_color
¶
绘制于填充之后的轮廓颜色(默认黑色)。
background_stroke_opacity
¶
轮廓的不透明度,取值从 0 到 1(默认 1)。
background_stroke_width
¶
轮廓的宽度,以场景单位的百分之一计(默认 0:无)。
sheen_factor
¶
颜色朝 sheen_direction 变亮的程度,取值从 -1 到 1(默认 0);
负值变暗。
joint_type
¶
描边在路径转折处的连接方式:圆角、斜切或斜接,按二维场景的绘制方式 (参见 LineJointType;默认 AUTO:斜接)。
cap_style
¶
描边在其显示的每一端的端点样式(开放路径的端点、虚线的端点):圆头、平头 或方头,按二维场景的绘制方式(参见 CapStyleType;默认 AUTO:平头)。
shade_in_3d
¶
三维场景的光是否对该 mobject 着色。
z_index
¶
其在绘制顺序中的位置:索引较高者绘制于较低者之上 (默认 0)。
name
¶
mobject 的名称;未给出时为其类名。
target
¶
MoveToTarget 将 mobject 移动至的状态。
颜色与不透明度¶
set_color
¶
代码
import manimgx as m
class MobjectSetColorExample(m.Scene):
def construct(self) -> None:
circle = m.Circle(radius=1.5)
square = m.Square(side_length=3, fill_opacity=0.5)
shapes = m.VGroup(circle, square).arrange(buff=2)
self.add(shapes)
self.play(shapes.animate.set_color(m.YELLOW))
self.play(square.animate.set_color([m.BLUE, m.GREEN]))
为 mobject 着色:其填充和描边,保持各自的不透明度(未填充的 形状保持未填充)。
color颜色;多个颜色在 mobject 上形成渐变,从第一个 到最后一个沿其光泽方向(除非设置否则为 UL)。
family其整个家族是否被着色,还是仅 mobject 本身。
源码
manimgx\mobject.py
set_fill
¶

代码
设置 mobject 的填充:其颜色、不透明度,或两者。
color颜色;多个颜色在 mobject 上形成渐变,从第一个 到最后一个沿其光泽方向(除非设置否则为 UL)。None 保持 当前值。
opacity不透明度,从 0(无填充)到 1(不透明);多个值形成 不透明度渐变。None 保持当前值。
family其整个家族是否被填充,还是仅 mobject 本身。
源码
manimgx\mobject.py
set_stroke
¶

代码
import manimgx as m
class MobjectSetStrokeExample(m.Scene):
def construct(self) -> None:
a = m.Circle(radius=1.5, color=m.BLUE, fill_opacity=0.3)
b, c = a.copy(), a.copy()
m.VGroup(a, b, c).arrange(buff=1)
a.set_stroke(m.YELLOW, width=2)
b.set_stroke(m.YELLOW, width=16)
c.set_stroke(m.YELLOW, width=16, opacity=0.3)
self.add(a, b, c)
设置 mobject 的描边,即其轮廓:其颜色、宽度和不透明度,任意 组合。
color颜色;多个颜色形成渐变,从第一个到最后一个沿 mobject 的光泽方向(除非设置否则为 UL)。None 保持 当前值。
width宽度,以场景单位的百分之一表示(除非已设置否则为 4;0:无 描边);None 保持当前值。
opacity不透明度,从 0 到 1;多个值形成不透明度渐变。 None 保持当前值。
background是否改为设置背景描边:即在 填充之后绘制的轮廓。
family其整个家族是否被描边,还是仅 mobject 本身。
源码
manimgx\mobject.py
set_opacity
¶
代码
import manimgx as m
class MobjectSetOpacityExample(m.Scene):
def construct(self) -> None:
square = m.Square(side_length=3, color=m.BLUE, fill_opacity=1)
circle = m.Circle(radius=1.5, color=m.YELLOW, fill_opacity=1)
square.shift(m.LEFT)
circle.shift(m.RIGHT)
self.add(square, circle)
self.play(circle.animate.set_opacity(0.3))
统一设置 mobject 填充、描边和背景描边的不透明度—— 因此未填充的形状获得该不透明度的填充。
opacity不透明度,从 0(不可见)到 1(不透明)。
family其整个家族是否都获得它,还是仅 mobject 本身。
源码
manimgx\mobject.py
fade
¶
使 mobject 更淡:其填充、描边和背景描边的
不透明度各乘以 1 − darkness。
darkness变淡程度,从 0(原样)到 1(不可见)。
family其整个家族是否变淡,还是仅 mobject 本身。
源码
manimgx\mobject.py
fade_to
¶
将 mobject 的颜色向另一种混合:每个绘制成员自身的颜色,
混合到 color 的 alpha 处。
color要混合到的目标颜色。
alpha混合程度,从 0(原样)到 1(
color)。family其整个家族是否混合,还是仅 mobject 本身。
源码
manimgx\mobject.py
set_style
¶
一次性设置 mobject 的任意样式:为 None 的保持不变。
参见 set_fill、
set_stroke 和
set_sheen;光泽仅在 sheen_factor
非零时改变。
fill_color填充的颜色;多个颜色形成渐变。
fill_opacity填充的不透明度,从 0 到 1。
stroke_color描边的颜色;多个颜色形成渐变。
stroke_width描边的宽度,以场景单位的百分之一表示。
stroke_opacity描边的不透明度,从 0 到 1。
background_stroke_color在填充之后绘制的轮廓的颜色。
background_stroke_width该轮廓的宽度,以场景单位的 百分之一表示。
background_stroke_opacity该轮廓的不透明度,从 0 到 1。
sheen_factor颜色向
sheen_direction变亮的程度,从 -1 到 1;None 或 0 使光泽保持不变。sheen_direction它们变亮的方向,与
sheen_factor一起设置。family其整个家族是否被设置样式,还是仅 mobject 本身。
源码
manimgx\mobject.py
match_style
¶
将另一个的样式赋予 mobject:其颜色、不透明度、描边宽度、光泽 及其余外观,但不包括揭示动画显示多少。
mobject要取其样式的 mobject。
family子 mobject 是否也按顺序取另一个的样式: 当数量不同时均匀配对,各自取另一个 mobject 自身的样式(若无子 mobject)。
源码
manimgx\mobject.py
color
¶
fill_opacity
¶
mobject 自身填充的不透明度,从 0 到 1。设置它可设置整个 家族的。
stroke_color
¶
mobject 自身的描边颜色(对于渐变,为第一个)。设置它可用 一种颜色描边整个家族(参见 set_stroke)。
stroke_opacity
¶
mobject 自身描边的不透明度,从 0 到 1。设置它可设置整个 家族的。
stroke_width
¶
mobject 自身描边的宽度,以场景单位的百分之一表示。设置它可 设置整个家族的。
覆盖源颜色¶
文本和 SVG 绘图自带颜色。以下关键字用于覆盖这些颜色。
Repaint
¶
覆盖 mobject 的源赋予其各部分的画料。
SVG 文件和排版文本为其自身各部分着色;这些关键字每一个在给出时覆盖之, 未给出(或为 None)时保持源的画料。
color填充与描边共用的颜色。
opacity填充与描边共用的不透明度,取值从 0 到 1。
fill_color填充的颜色。
fill_opacity填充的不透明度,取值从 0 到 1。
stroke_color描边的颜色。
stroke_opacity描边的不透明度,取值从 0 到 1。
stroke_width描边的宽度,以场景单位的百分之一计。
渐变与光泽¶
给定一个颜色列表以及某种颜色的位置,即可生成渐变:set_color([m.BLUE,
m.YELLOW]) 在 mobject 上将一种颜色渐变为另一种。
set_color_by_gradient
¶

代码
import manimgx as m
class MobjectSetColorByGradientExample(m.Scene):
def construct(self) -> None:
dots = m.VGroup(*(m.Dot(radius=0.35) for _ in range(9)))
dots.arrange(buff=0.5)
dots.set_color_by_gradient(m.BLUE, m.GREEN, m.YELLOW)
word = m.Text("gradient", font_size=120)
word.set_color_by_gradient(m.RED, m.YELLOW)
self.add(m.VGroup(dots, word).arrange(m.DOWN, buff=1))
沿渐变为家族中绘制的成员着色:按家族顺序,每个 为纯色,从第一个颜色到最后一个。
一个颜色为它们全部着色;无颜色抛出异常。
*colors渐变所经过的颜色,均匀分布。
源码
manimgx\mobject.py
set_colors_by_radial_gradient
¶
按距某点的远近为 mobject 着色:该处为 inner_color,在
radius 及以外混合到 outer_color。
家族中每个绘制的成员为一种纯色,按其中心的距离。
center该点;None 表示 mobject 的中心。
radius颜色为
outer_color时的距离,以场景单位表示。inner_color该点处的颜色。
outer_colorradius及以外的颜色。
源码
manimgx\mobject.py
set_submobject_colors_by_radial_gradient
¶
按家族中绘制成员的中心距某点的远近为它们着色:
该处为 inner_color,在 radius 及以外混合到 outer_color;
每个成员为一种纯色。
center该点;None 表示 mobject 的中心。
radius颜色为
outer_color时的距离,以场景单位表示。inner_color该点处的颜色。
outer_colorradius及以外的颜色。
源码
manimgx\mobject.py
set_sheen
¶
赋予 mobject 光泽:其颜色在其上变亮,朝某方向。
当因子非零时,其填充和描边各自成为从其颜色到该颜色按因子变亮 的渐变。
factor颜色变亮的程度,从 -1 到 1:0 表示无光泽, 负因子使颜色变暗。
direction它们变亮的方向,作为值拷贝;None 保持当前值(除非已设置否则为 UL)。调用者的数组 不变。
family其整个家族是否都获得它,还是仅 mobject 本身。
源码
manimgx\mobject.py
set_sheen_direction
¶
设置 mobject 颜色变亮的方向,其渐变也沿此方向运行。
direction方向,作为值拷贝,不改变 调用者的数组。
family其整个家族是否都获得它,还是仅 mobject 本身。
源码
manimgx\mobject.py
描边的端点与角¶
CapStyleType
¶

代码
import manimgx as m
class CapStyleTypeExample(m.Scene):
def construct(self) -> None:
arcs = m.VGroup()
for cap in m.CapStyleType:
arc = m.Arc(radius=2, color=m.GREEN, stroke_width=40)
arc.set_cap_style(cap)
label = m.Text(cap.name, font_size=36).next_to(arc, m.DOWN, 0.6)
arcs.add(m.VGroup(arc, label))
self.add(arcs.arrange(buff=1))
笔画端点的样式(cap_style):圆形、平头或方形。
笔画所显示的每一个端点都会被加盖:开放路径的端点、显现动画
(Create、Write……)的移动端以及每段
虚线的两端。完整显示的闭合路径没有端点;长度为零的笔画(停留在一点的路径)
在圆形端盖下显示为圆点,在方形端盖下显示为方块。默认值 AUTO 为平头。
二维场景会绘制端盖,对笔画及其背景笔画一视同仁;三维场景则将所有笔画
以平头结束。
LineJointType
¶

代码
import manimgx as m
class LineJointTypeExample(m.Scene):
def construct(self) -> None:
corners = [[-1, -1.5, 0], [0, 1.5, 0], [1, -1.5, 0]]
paths = m.VGroup()
for joint in m.LineJointType:
path = m.VMobject(color=m.YELLOW, stroke_width=40, joint_type=joint)
path.set_points_as_corners(corners)
label = m.Text(joint.name, font_size=36).next_to(path, m.DOWN, 0.6)
paths.add(m.VGroup(path, label))
self.add(paths.arrange(buff=1))
笔画在路径转折处的连接方式(joint_type):圆角、斜角或尖角。
默认值 AUTO 为尖角。二维场景会绘制连接处,对笔画及其背景笔画一视同仁;
三维场景则将所有笔画以尖角连接。
set_cap_style
¶
设置路径及其家族的描边在它们显示的每个端点处如何结束: 开放路径的端点、揭示动画的移动端、每个虚线的端点。
二维场景绘制端帽;三维场景将每条 描边平头结束(参见 CapStyleType)。
cap_style端帽样式:圆头、平头或方头。
源码
manimgx\mobject.py
覆盖关系¶
后添加的 mobject 覆盖先添加的。无论添加顺序如何,z-index 较高者覆盖较低者。
set_z_index
¶

代码
import manimgx as m
class MobjectSetZIndexExample(m.Scene):
def construct(self) -> None:
red = m.Square(3, color=m.RED, fill_opacity=1).shift(m.LEFT + m.UP)
blue = m.Square(3, color=m.BLUE, fill_opacity=1)
green = m.Square(3, color=m.GREEN, fill_opacity=1)
green.shift(m.RIGHT + m.DOWN)
red.set_z_index(1) # added first, drawn on top
self.add(red, blue, green)
设置 mobject 在绘制顺序中的位置:z 索引较高的绘制在较低的之上, 在场景中的任何位置。
z 索引相同的 mobject 按场景的顺序绘制:后添加的绘制在先添加的之上, mobject 的子 mobject 各自绘制在之前的之上。每个 mobject 的 z 索引 除非设置否则为 0。
z_index_valuez 索引。
family其整个家族是否都获得它,还是仅 mobject 本身(仅 排序其自身的点)。
源码
manimgx\mobject.py
z_index
¶
mobject 在绘制顺序中的位置:索引值较高的绘制在索引值较低的之上 (默认 0);参见 set_z_index。
add_background_rectangle
¶

在 mobject 后面放一个矩形,使其与后面的内容区分开来: 一个围绕它的 BackgroundRectangle,作为其 第一个子 mobject 添加。
该矩形随 mobject 移动;它是 mobject 的 background_rectangle。
color矩形的颜色;None 表示场景的背景色。
opacity矩形的不透明度,从 0 到 1(默认 0.75)。
buffmobject 周围的边距,以场景单位表示:两个方向共用一个值,或 (水平, 垂直)(默认 0)。
corner_radius矩形圆角的半径,以场景单位表示(默认 0:直角)。
stroke_width矩形轮廓的宽度,以场景单位的百分之一表示(默认 0:无)。
stroke_opacity轮廓的不透明度,从 0 到 1(默认 0)。
stroke_color轮廓的颜色(默认:矩形的颜色)。
background_stroke_color绘制于填充之后的轮廓颜色(默认黑色)。
background_stroke_opacity轮廓的不透明度,取值从 0 到 1(默认 1)。
background_stroke_width轮廓的宽度,以场景单位的百分之一计(默认 0:无)。
sheen_factor颜色朝
sheen_direction变亮的程度,取值从 -1 到 1(默认 0); 负值变暗。sheen_direction颜色变亮的方向(默认
UL)。joint_type描边在路径转折处的连接方式:圆角、斜切或斜接,按二维场景的绘制方式 (参见 LineJointType;默认 AUTO:斜接)。
cap_style描边在其显示的每一端的端点样式(开放路径的端点、虚线的端点):圆头、平头 或方头,按二维场景的绘制方式(参见 CapStyleType;默认 AUTO:平头)。
shade_in_3d三维场景的光是否对该 mobject 着色。
material其表面在三维场景中如何反射场景的光(参见 Material);None:Manim 的着色(默认)。
namemobject 的名称;未给出时为其类名。
z_index其在绘制顺序中的位置:索引较高者绘制于较低者之上 (默认 0)。
targetMoveToTarget将 mobject 移动至的状态。
源码
manimgx\mobject.py
background_rectangle
¶
最后放在 mobject 后面的矩形(参见 add_background_rectangle);若无则为 None。
类的默认值¶
set_default
¶
更改该类构造器关键字的默认值,对之后创建的该类每个 mobject 生效;不给出参数时恢复默认值。
在 Text.set_default(font_size=100) 之后,Text 为 100 磅,除非
创建时指定了其他尺寸。关键字在创建 mobject 时检查。
更改或恢复默认值会丢弃已记忆的构造。现有的 mobject 保持其状态;后续构造读取当前默认值。
重复调用替换此类的关键字默认值。重置恢复其 原始构造器,或若无自身构造器则恢复正常继承。 默认值在创建 mobject 时应用,使用当时生效的构造器: 类自身的,或所创建 mobject 类顺序中的下一个(因此 父类的后续默认值能到达已配置的子类,已配置的混入调用 子类顺序中其后的类)。
该类构造器的关键字,及其新默认值。
源码
manimgx\mobject.py
BackgroundOptions
¶
背景矩形的关键字,但不包括其颜色和不透明度:即 add_background_rectangle 及其 变体的关键字。
buffmobject 周围的边距,以场景单位表示:两个方向共用一个值,或 (水平, 垂直)(默认 0)。
corner_radius矩形圆角的半径,以场景单位表示(默认 0:直角)。
stroke_width矩形轮廓的宽度,以场景单位的百分之一表示(默认 0:无)。
stroke_opacity轮廓的不透明度,从 0 到 1(默认 0)。
stroke_color轮廓的颜色(默认:矩形的颜色)。
background_stroke_color绘制于填充之后的轮廓颜色(默认黑色)。
background_stroke_opacity轮廓的不透明度,取值从 0 到 1(默认 1)。
background_stroke_width轮廓的宽度,以场景单位的百分之一计(默认 0:无)。
sheen_factor颜色朝
sheen_direction变亮的程度,取值从 -1 到 1(默认 0); 负值变暗。sheen_direction颜色变亮的方向(默认
UL)。joint_type描边在路径转折处的连接方式:圆角、斜切或斜接,按二维场景的绘制方式 (参见 LineJointType;默认 AUTO:斜接)。
cap_style描边在其显示的每一端的端点样式(开放路径的端点、虚线的端点):圆头、平头 或方头,按二维场景的绘制方式(参见 CapStyleType;默认 AUTO:平头)。
shade_in_3d三维场景的光是否对该 mobject 着色。
material其表面在三维场景中如何反射场景的光(参见 Material);None:Manim 的着色(默认)。
namemobject 的名称;未给出时为其类名。
z_index其在绘制顺序中的位置:索引较高者绘制于较低者之上 (默认 0)。
targetMoveToTarget将 mobject 移动至的状态。