本文档解释了 ManimGL 中基本的动画系统,涵盖了用于创建、变换和淡化数学对象(mobjects)的最常见动画类型。有关高级动画技术,请参阅 自定义动画 和 更新器和连续动画。
在 ManimGL 中,动画定义了 mobjects(数学对象)如何随时间变化。每个动画都涉及在指定时间内将一个 mobject 从起始状态插值到结束状态。动画在场景中使用 scene.play() 方法播放。
来源: manimlib/animation/animation.py23-204
所有动画都继承自基类 Animation,它提供了核心接口和功能。
Animation 类关键参数
| 参数 | 描述 | 默认 |
|---|---|---|
mobject | 要动画化的对象 | 必填 |
run_time | 时长(秒) | 1.0 |
rate_func | 控制动画节奏的函数 | smooth |
lag_ratio | 子对象动画之间的延迟 | 0 |
remover | 动画后是否移除 mobject | 否 |
来源: manimlib/animation/animation.py23-70
创建动画通过逐渐显示 mobjects 来将它们引入场景。
常见的创建动画
| 动画 | 描述 | 关键参数 |
|---|---|---|
ShowCreation | 通过“绘制”来显示 mobject | lag_ratio |
Uncreate | 与 ShowCreation 相反 | remover (默认值:True) |
写入 | 为文本创建书写效果 | run_time, lag_ratio |
DrawBorderThenFill | 绘制轮廓,然后填充内部 | stroke_width, stroke_color |
ShowIncreasingSubsets | 逐渐显示更多子对象 | int_func |
使用示例
来源: manimlib/animation/creation.py25-244
变换动画将一个 mobject 变为另一个。
常见的变换动画
| 动画 | 描述 | 关键参数 |
|---|---|---|
Transform | 基础变换类 | target_mobject, path_arc |
ReplacementTransform | 在场景中变换并替换 | target_mobject |
TransformFromCopy | 创建副本并进行变换 | target_mobject |
MoveToTarget | 动画到 mobject 的 .target 属性 | (需要设置 mobject.target) |
ApplyMethod | 将方法应用于 mobject | method, *args |
FadeToColor | 改变 mobject 的颜色 | color |
ScaleInPlace | 在保持中心固定的情况下缩放 mobject | scale_factor |
使用示例
来源: manimlib/animation/transform.py24-331
淡化动画控制 mobjects 的不透明度。
常见的淡化动画
| 动画 | 描述 | 关键参数 |
|---|---|---|
FadeIn | 将不透明度从 0 增加到 1 | shift, scale |
FadeOut | 将不透明度从 1 降低到 0 | shift, remover (默认值:True) |
FadeInFromPoint | 从特定点淡入 | point |
FadeOutToPoint | 淡出到特定点 | point |
FadeTransform | 一个 mobject 淡出的同时另一个 mobject 淡入 | target_mobject |
VFadeIn/VFadeOut | VMobject 的矢量特定淡化 |
使用示例
来源: manimlib/animation/fading.py21-213
指示动画用于吸引观众注意场景的某些部分,而不会永久性地改变它们。
常见的指示动画
| 动画 | 描述 | 关键参数 |
|---|---|---|
Indicate | 短暂地缩放和改变颜色 | scale_factor, color |
Flash | 在某个点创建闪光效果 | point, color, num_lines |
CircleIndicate | 用圆圈包围 | stroke_color, stroke_width |
FlashAround | 围绕 mobject 闪烁 | stroke_width, color |
ShowPassingFlash | 沿着路径显示移动的脉冲 | time_width |
WiggleOutThenIn | 使 mobject 抖动 | scale_value, rotation_angle |
使用示例
来源: manimlib/animation/indication.py41-425
生长动画使 mobjects 从特定点生长。
| 动画 | 描述 | 关键参数 |
|---|---|---|
GrowFromPoint | 从特定点生长 | point, point_color |
GrowFromCenter | 从中心生长 | |
GrowFromEdge | 从边缘生长 | edge |
GrowArrow | 专门用于生长箭头 |
使用示例
来源: manimlib/animation/growing.py15-54
ManimGL 提供了类来将多个动画组合在一起。
| 类 | 描述 | 关键参数 |
|---|---|---|
AnimationGroup | 一起播放多个动画 | *animations, lag_ratio |
Succession | 按顺序播放动画 | *animations |
LaggedStart | 延迟开始播放动画 | *animations, lag_ratio |
LaggedStartMap | 对组应用相同动画并延迟 | anim_func, group, lag_ratio |
使用示例
来源: manimlib/animation/composition.py27-182
参数 run_time 设置动画的持续时间(秒)
速率函数控制动画的节奏。常见的包括:
| 速率函数 | 描述 |
|---|---|
linear | 恒定速度 |
smooth | 缓入缓出(默认) |
there_and_back | 前进然后后退 |
rush_into | 慢速开始,快速结束 |
rush_from | 快速开始,慢速结束 |
来源: manimlib/utils/rate_functions.py
参数 lag_ratio 控制子对象动画之间的延迟
Mobjects 提供了一个方便的 .animate 属性来创建动画
这会创建动画,按顺序将方法应用于 mobject。
来源: manimlib/mobject/mobject.py manimlib/animation/transform.py161-195
动画通常使用 play 方法在场景中播放