Scene

Scene

class manimlib.scene.scene.Scene(**kwargs)

场景类

  • window_config : 窗口参数

  • camera_config : 相机参数

  • file_writer_config : 文件写入参数

  • start_at_animation_number : 在某个动画开始播放

  • end_at_animation_number : 在某个动画结束播放

  • preview : 是否为预览

add(*new_mobjects: manimlib.mobject.mobject.Mobject)

将 Mobject 添加到场景中,后添加的会覆盖在上层

add_mobjects_among(values: Iterable)

This is meant mostly for quick prototyping, e.g. to add all mobjects defined up to a point, call self.add_mobjects_among(locals().values())

add_sound(sound_file: str, time_offset: float = 0, gain: Optional[float, None] = None, gain_to_background: Optional[float, None] = None)

添加声音

anims_from_play_args(*args, **kwargs) → list[Animation]

每个 arg 可以是一个 动画的实例,也可以是一个 mobject 的方法,后面的 kwargs 即为这个方法所包含的参数,可以以字典的形式给出

这一系列动画会通过参数列表 args 编译

  • 如果是 动画实例,则会直接添加到 动画列表

  • 如果是一个 mobject 的方法,则会将它包装成 MoveToTarget 实例,其中的参数即为后面的字典或参数
    • 直至读取到下一个动画实例,或是下一个 mobject 的方法之前,都是上面一个 MoveToTarget 的参数

  • 或者采用 ManimCommunity 编写的 Mobject.animate 方法,采用链式操作,将一连串方法编译成一个 MoveToTarget,详见 manimlib.mobject.mobject._AnimationBuilder

一般我们采用 Scene.play 方法,而不是这个,因为 play 方法包装得更全面,而 anims_from_play_args 这个方法只是 play 中的一部分

bring_to_back(*mobjects: manimlib.mobject.mobject.Mobject)

移动到下层

bring_to_front(*mobjects: manimlib.mobject.mobject.Mobject)

移动到最上层

clear()

清空场景

construct() → None

在此处写入所有动画,由子类重写

embed(close_scene_on_exit: bool = True) → None

使用 IPython 终端交互

get_animation_time_progression(animations: Iterable[Animation]) → list[float] | np.ndarray | ProgressDisplay

获取动画进度条,在此过程中播放动画

get_mobject_copies() → list

获取场景中物件的拷贝

get_mobjects() → list

获取场景中的物件

get_time() → float

获取当前场景时间

get_wait_time_progression(duration: float, stop_condition: Callable[[], bool] | None = None) → list[float] | np.ndarray | ProgressDisplay

获取等待进度条,在此过程中播放等待动画

interact() → None

交互

on_key_press(symbol: int, modifiers: int) → None

键盘按下事件

on_key_release(symbol: int, modifiers: int) → None

键盘释放事件

on_mouse_drag(point: numpy.ndarray, d_point: numpy.ndarray, buttons: int, modifiers: int) → None

鼠标拖拽事件

on_mouse_motion(point: numpy.ndarray, d_point: numpy.ndarray) → None

鼠标移动事件

on_mouse_press(point: numpy.ndarray, button: int, mods: int) → None

鼠标按下事件

on_mouse_release(point: numpy.ndarray, button: int, mods: int) → None

鼠标弹起事件

on_mouse_scroll(point: numpy.ndarray, offset: numpy.ndarray) → None

鼠标滚轮滚动事件

on_resize(width: int, height: int) → None

窗口缩放事件

play(*args, **kwargs) → None

播放动画

point_to_mobject(point: np.ndarray, search_set: Iterable[Mobject] | None = None, buff: float = 0) → Mobject | None

E.g. if clicking on the scene, this returns the top layer mobject under a given point

remove(*mobjects: manimlib.mobject.mobject.Mobject)

从场景中移除所有给定的 mobject ,如果传入的 mobject 在一个 Group 中,那么这个物件会被移除, 同在该 Group 的其他成员会重新被加载到场景中(但不会重新加载到 Group 中)。

例如我们有 Group(m1, m2, m3) ,当场景调用了 scene.remove(m1) ,那么得到的结果为 场景中剩余的是未组合的 m2m3

run() → None

场景运行

save_state() → None

保存场景当前状态

setup() → None

construct 被调用前执行,在子类中重写

tear_down() → None

销毁场景

wait(duration: float = 1.0, stop_condition: Callable[], bool] = None, note: str = None, ignore_presenter_mode: bool = False)

等待一段时间