动画¶
完全限定名: manim.animation.animation.Animation
- class Animation(mobject=None, *args, use_override=True, **kwargs)[source]¶
基类:
object
一个动画。
动画具有固定的时间跨度。
- 参数:
mobject – 要进行动画处理的 Mobject。并非所有类型的动画都必需此参数。
lag_ratio –
定义动画应用于子对象(submobjects)的延迟。此延迟与动画的持续时间相关。
这不影响动画的总运行时长。相反,单个动画的运行时长会被调整,以使整个动画具有定义的运行时长。
run_time – 动画的持续时间(秒)。
rate_func –
定义动画进度基于相对运行时长的函数(参见
rate_functions
)。例如,
rate_func(0.5)
表示动画运行时长过半时已完成的动画比例。
- 返回类型:
自身
- reverse_rate_function
反转动画的速率函数。设置
reverse_rate_function
对remover
或introducer
没有影响。如果引入动画(introducer-animation)需要变为移除动画(remover one),反之亦然,则需要明确设置这些参数。- name
动画的名称。在渲染动画时会显示此名称。默认为 <类名>(<Mobject 名>)。
- remover
此动画结束后,给定的 mobject 是否应该从场景中移除。
- suspend_mobject_updating
在动画期间是否应暂停 mobject 的更新器(updaters)。
注意
在此类的当前实现中,指定的速率函数在
Animation.interpolate_mobject()
调用中应用,作为Animation.interpolate_submobject()
调用的一部分。对于通过重写interpolate_mobject()
实现的Animation
子类,速率函数必须手动应用(例如,通过传递self.rate_func(alpha)
而不是仅仅alpha
)。示例
示例: LagRatios ¶
from manim import * class LagRatios(Scene): def construct(self): ratios = [0, 0.1, 0.5, 1, 2] # demonstrated lag_ratios # Create dot groups group = VGroup(*[Dot() for _ in range(4)]).arrange_submobjects() groups = VGroup(*[group.copy() for _ in ratios]).arrange_submobjects(buff=1) self.add(groups) # Label groups self.add(Text("lag_ratio = ", font_size=36).next_to(groups, UP, buff=1.5)) for group, ratio in zip(groups, ratios): self.add(Text(str(ratio), font_size=36).next_to(group, UP)) #Animate groups with different lag_ratios self.play(AnimationGroup(*[ group.animate(lag_ratio=ratio, run_time=1.5).shift(DOWN * 2) for group, ratio in zip(groups, ratios) ])) # lag_ratio also works recursively on nested submobjects: self.play(groups.animate(run_time=1, lag_ratio=0.1).shift(UP * 2))
class LagRatios(Scene): def construct(self): ratios = [0, 0.1, 0.5, 1, 2] # demonstrated lag_ratios # Create dot groups group = VGroup(*[Dot() for _ in range(4)]).arrange_submobjects() groups = VGroup(*[group.copy() for _ in ratios]).arrange_submobjects(buff=1) self.add(groups) # Label groups self.add(Text("lag_ratio = ", font_size=36).next_to(groups, UP, buff=1.5)) for group, ratio in zip(groups, ratios): self.add(Text(str(ratio), font_size=36).next_to(group, UP)) #Animate groups with different lag_ratios self.play(AnimationGroup(*[ group.animate(lag_ratio=ratio, run_time=1.5).shift(DOWN * 2) for group, ratio in zip(groups, ratios) ])) # lag_ratio also works recursively on nested submobjects: self.play(groups.animate(run_time=1, lag_ratio=0.1).shift(UP * 2))
方法
开始动画。
动画完成后清理
Scene
。创建动画的副本。
创建起始 Mobject 对象
完成动画。
get_all_families_zipped
获取动画中涉及的所有 mobject。
获取动画期间要更新的所有 mobject。
获取动画的速率函数。
获取动画的运行时长。
获取任何子对象(submobjects)子动画的动画进度。
设置动画进度。
根据 alpha 值插值
Animation
的 mobject。interpolate_submobject
测试动画是否为引入动画(introducer)。
测试动画是否为移除动画(remover)。
设置关键字参数的默认值。
设置动画的名称。
设置动画的速率函数。
设置动画的运行时长。
更新诸如 starting_mobject 和 (对于 Transforms) target_mobject 等内容。
属性
run_time
- _setup_scene(scene)[source]¶
在开始动画前设置
Scene
。如果动画是引入动画(introducer),这包括
add()
动画的Mobject
。- 参数:
scene (场景) – 动画应从中清理的场景。
- 返回类型:
无
- clean_up_from_scene(scene)[source]¶
动画完成后清理
Scene
。如果动画是移除动画(remover),这包括
remove()
动画的Mobject
。- 参数:
scene (场景) – 动画应从中清理的场景。
- 返回类型:
无
- get_all_mobjects()[source]¶
获取动画中涉及的所有 mobject。
顺序必须与 interpolate_submobject 的参数顺序匹配
- 返回:
mobject 序列。
- 返回类型:
Sequence[Mobject]
- get_all_mobjects_to_update()[source]¶
获取动画期间要更新的所有 mobject。
- 返回:
动画期间要更新的 mobject 列表。
- 返回类型:
List[Mobject]
- get_sub_alpha(alpha, index, num_submobjects)[source]¶
获取任何子对象(submobjects)子动画的动画进度。
- 参数:
alpha (float) – 整体动画进度
index (int) – 子动画的索引。
num_submobjects (int) – 子动画的总数。
- 返回:
子动画的进度。
- 返回类型:
浮点数
- interpolate(alpha)[source]¶
设置动画进度。
此方法在动画期间的每一帧都会调用。
- 参数:
alpha (float) – 设置动画的相对时间,0表示开始,1表示结束。
- 返回类型:
无
- interpolate_mobject(alpha)[source]¶
根据 alpha 值插值
Animation
的 mobject。- 参数:
alpha (float) – 一个介于0到1之间的浮点数,表示动画完成的比例。例如,alpha值为0、0.5和1分别对应动画完成0%、50%和100%。
- 返回类型:
无
- is_introducer()[source]¶
测试动画是否为引入动画(introducer)。
- 返回:
如果动画是引入动画(introducer),则为
True
,否则为False
。- 返回类型:
bool
- classmethod set_default(**kwargs)[source]¶
设置关键字参数的默认值。
如果此方法在没有额外关键字参数的情况下调用,则会恢复此类的初始化方法的原始默认值。
- 参数:
kwargs – 传递任何关键字参数将更新此类的初始化函数的关键字参数的默认值。
- 返回类型:
无
示例
示例: ChangeDefaultAnimation ¶
from manim import * class ChangeDefaultAnimation(Scene): def construct(self): Rotate.set_default(run_time=2, rate_func=rate_functions.linear) Indicate.set_default(color=None) S = Square(color=BLUE, fill_color=BLUE, fill_opacity=0.25) self.add(S) self.play(Rotate(S, PI)) self.play(Indicate(S)) Rotate.set_default() Indicate.set_default()
class ChangeDefaultAnimation(Scene): def construct(self): Rotate.set_default(run_time=2, rate_func=rate_functions.linear) Indicate.set_default(color=None) S = Square(color=BLUE, fill_color=BLUE, fill_opacity=0.25) self.add(S) self.play(Rotate(S, PI)) self.play(Indicate(S)) Rotate.set_default() Indicate.set_default()
- set_rate_func(rate_func)[source]¶
设置动画的速率函数。
- 参数:
rate_func (Callable[[float], float]) – 定义动画进度基于相对运行时长的新函数(参见
rate_functions
)。- 返回:
self
- 返回类型: