动画¶
限定名称: manim.animation.animation.Animation
- class Animation(mobject=None, *args, use_override=True, **kwargs)[来源]¶
基础:
object一个动画。
动画有一个固定的时间跨度。
- Parameters:
mobject – 要动画化的mobject。并非所有类型的动画都需要此参数。
lag_ratio –
定义了动画应用于子对象的延迟时间。这个延迟是相对于动画的持续时间而言的。
这不会影响动画的总运行时间。相反,单个动画的运行时间会被调整,以确保整个动画具有定义的运行时间。
run_time – 动画的持续时间,单位为秒。
rate_func –
定义基于相对运行时间的动画进度的函数(参见
rate_functions)。例如
rate_func(0.5)是在动画运行时间的一半后完成的动画比例。
- Return type:
自我
- reverse_rate_function
反转动画的速率函数。设置
reverse_rate_function对remover或introducer没有任何影响。如果要将引入动画转换为移除动画,反之亦然,则需要明确设置这些。- name
动画的名称。这在渲染动画时会显示。 默认为
( )。 - remover
给定的mobject是否应该在此动画后从场景中移除。
- suspend_mobject_updating
在动画期间是否应暂停mobject的更新器。
注意
在当前这个类的实现中,指定的速率函数在
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))方法
开始动画。
在完成动画后清理
场景。创建动画的副本。
create_starting_mobject完成动画。
get_all_families_zipped获取动画中涉及的所有mobjects。
获取动画期间要更新的所有mobjects。
获取动画的速率函数。
获取动画的运行时间。
获取任何子对象子动画的动画进度。
设置动画进度。
根据alpha值对
Animation的mobject进行插值。interpolate_submobject测试动画是否为介绍者。
测试动画是否为移除器。
设置动画的名称。
设置动画的速率函数。
设置动画的运行时间。
更新诸如starting_mobject之类的内容,以及(对于Transforms)target_mobject。
- clean_up_from_scene(scene)[source]¶
在完成动画后清理
场景。这包括如果动画是移除器,则移除动画的
Mobject。- Parameters:
场景 (场景) – 动画应该从中清理的场景。
- Return type:
无
- get_all_mobjects()[source]¶
获取动画中涉及的所有mobjects。
排序必须与interpolate_submobject参数的顺序匹配
- Returns:
mobjects的序列。
- Return type:
序列[Mobject]
- get_all_mobjects_to_update()[source]¶
获取动画期间要更新的所有mobjects。
- Returns:
动画期间要更新的mobjects列表。
- Return type:
列表[Mobject]
- get_sub_alpha(alpha, index, num_submobjects)[来源]¶
获取任何子对象子动画的动画进度。
- Parameters:
alpha (float) – 整体动画进度
index (int) – 子动画的索引。
num_submobjects (int) – 子动画的总数。
- Returns:
子动画的进度。
- Return type:
浮点数
- interpolate(alpha)[source]¶
设置动画进度。
此方法在动画期间为每一帧调用。
- Parameters:
alpha (float) – 设置动画的相对时间,0表示开始,1表示结束。
- Return type:
无
- interpolate_mobject(alpha)[来源]¶
根据alpha值对
Animation的mobject进行插值。- Parameters:
alpha (float) – 一个介于0和1之间的浮点数,表示动画完成的比例。例如,alpha值为0、0.5和1分别对应动画完成0%、50%和100%。
- Return type:
无
- set_rate_func(rate_func)[source]¶
设置动画的速率函数。
- Parameters:
rate_func (Callable[[float], float]) – 定义基于相对运行时间的动画进度的新函数(参见
rate_functions)。- Returns:
self- Return type: