场景
合格名称:manim.scene.scene.Scene
Python | |
---|---|
Bases: object
场景是动画的画布。
主要作用Scene
是为用户提供管理对象和动画的工具。一般来说,manim 脚本由一个派生类组成,该类的Scene
方法Scene.construct()
被用户的代码覆盖。
Mobjects 通过调用显示在屏幕上Scene.add()
,并通过调用从屏幕上删除Scene.remove()
。当前屏幕上的所有 mobject 都保存在Scene.mobjects
. 动画是通过调用来播放的Scene.play()
。
AScene
通过调用在内部呈现Scene.render()
。这依次按顺序调用Scene.setup()
、Scene.construct()
、 和 Scene.tear_down()
。
不建议__init__
在用户场景中重写该方法。对于应该在渲染场景之前运行的代码,请改用Scene.setup()
。
例子
用您的代码覆盖该Scene.construct()
方法。
方法
add |
Mobject 将按照添加顺序从背景到前景显示。 |
add_foreground_mobject |
将单个 mobject 添加到前台,并在内部添加到列表 foreground_mobjects 和 mobjects。 |
add_foreground_mobjects |
将 mobject 添加到前台,并在内部添加到列表 foreground_mobjects 和 mobjects。 |
add_mobjects_from_animations |
|
add_sound |
该方法用于为动画添加声音。 |
add_subcaption |
在当前时间戳的相应子字幕文件中添加一个条目。 |
add_updater |
为场景添加更新功能。 |
begin_animations |
启动场景的动画。 |
bring_to_back |
从场景中移除 mobject 并将其添加到场景的后面。 |
bring_to_front |
将传递的对象再次添加到场景中,将它们推到场景的前面。 |
check_interactive_embed_is_valid |
|
clear |
从场景中移除 self.mobjects 和 self.foreground_mobjects 中存在的所有 mobject。 |
compile_animation_data |
给定动画列表,编译相应的静态和移动对象,并收集动画持续时间。 |
compile_animations |
从任何 _AnimationBuilders 创建 _MethodAnimations 并使用传递给 play() 的 kwargs 更新动画 kwargs。 |
construct |
将内容添加到场景中。 |
embed |
|
get_attrs |
给定属性的标识符/名称,获取场景的属性。 |
get_mobject_family_members |
返回场景中所有对象的家庭成员列表。 |
get_moving_and_static_mobjects |
|
get_moving_mobjects |
获取传递的动画中的所有移动对象。 |
get_restructured_mobject_list |
给定一个 mobject 列表和一个要删除的 mobject 列表,这会从 mobject 列表中过滤掉可删除的 mobject。 |
get_run_time |
获取动画列表的总运行时间。 |
get_time_progression |
当你制作自己的动画时,你几乎不会使用它。 |
get_top_level_mobjects |
返回所有不是子对象的对象。 |
interact |
|
interactive_embed |
与 embed() 类似,但允许屏幕交互。 |
is_current_animation_frozen_frame |
返回当前动画是否产生静态帧(通常是 Wait)。 |
mouse_drag_orbit_controls |
|
mouse_scroll_orbit_controls |
|
next_section |
在这里创建分离;最后一部分完成并创建一个新部分。 |
on_key_press |
|
on_key_release |
|
on_mouse_drag |
|
on_mouse_motion |
|
on_mouse_press |
|
on_mouse_scroll |
|
pause |
暂停场景(即显示冻结的帧)。 |
play |
在此场景中播放动画。 |
play_internal |
此方法用于准备要渲染的动画、应用动画所需的参数和参数、渲染它们并将它们写入视频文件。 |
remove |
通过从“mobjects”和“foreground_mobjects”中删除 mobjects,从场景和前景中删除传递的 mobjects 列表中的 mobjects |
remove_foreground_mobject |
从前台删除单个 mobject,并在内部从 foreground_mobjects 列表中删除。 |
remove_foreground_mobjects |
从前台删除 mobject,并在内部从 foreground_mobjects 列表中删除。 |
remove_updater |
从场景中删除更新功能。 |
render |
渲染此场景。 |
replace |
将场景中的一个 mobject 替换为另一个 mobject,保留绘制顺序。 |
restructure_mobjects |
TL:WR |
set_key_function |
|
setup |
这意味着由通常子类化的任何场景来实现,并且在调用构造方法之前涉及一些常见的设置。 |
should_update_mobjects |
如果该场景的 mobject 应该更新,则返回 True。 |
tear_down |
这意味着由通常子类化的任何场景来实现,并且在场景结束之前具有要调用的一些通用方法。 |
update_meshes |
|
update_mobjects |
开始更新场景中的所有 mobject。 |
update_self |
运行所有场景更新程序功能。update_to_time |
wait |
播放“无操作”动画。 |
wait_until |
等待直到满足条件,直至达到给定的最大持续时间。 |
属性
camera
add(*mobjects)
Mobject 将按照添加顺序从背景到前景显示。
参数
*mobjects ( Mobject ) – 要添加的 Mobjects。
返回
添加 Mobjects 后的相同场景。
返回类型
add_foreground_mobject(mobject)
将单个 mobject 添加到前台,并在内部添加到列表 foreground_mobjects 和 mobjects。
参数
mobject ( Mobject ) – 要添加到前台的 Mobject。
返回
添加了前景 mobject 的场景。
返回类型
add_foreground_mobjects(*mobjects)
将 mobject 添加到前台,并在内部添加到列表 foreground_mobjects 和 mobjects。
参数
*mobjects ( Mobject ) – 要添加到前台的 Mobject。
返回
添加了前景对象的场景。
返回类型
add_sound(sound_file, time_offset=0, gain=None, **kwargs)
该方法用于为动画添加声音。
参数
- sound_file ( str ) – 声音文件的路径。
- time_offset ( float ) – 声音文件中的偏移量,在此之后可以播放声音。
- gain( float | None ) – 声音的放大。
例子
示例:声音示例
在此处下载上一个示例的资源。
add_subcaption(content, duration=1, offset=0)
在当前时间戳的相应子字幕文件中添加一个条目。
当前时间戳是从 获得的Scene.renderer.time
。
参数
- content ( str ) – 子标题内容。
- duration( float ) – 显示子标题的持续时间(以秒为单位)。
- offset ( float ) – 此偏移量(以秒为单位)将添加到子标题的开始时间戳中。
返回类型
None
例子
此示例说明了向动画添加子标题的两种可能性:
add_updater(func)
为场景添加更新功能。
场景更新器函数每帧运行,它们是最后运行的更新器类型。
警告
使用 Cairo 渲染器时,不会以与 mobject 更新程序相同的方式检测修改 mobject 的场景更新程序。更具体地说,仅通过场景更新器修改的移动对象不一定会添加到移动移动对象列表中,因此可能不会每帧都更新。
TL;DR:使用 mobject 更新程序来更新 mobject。
参数
func ( Callable [ [ float ] , None ] ) – 更新函数。它需要一个浮点数,即自上次更新以来的时间差(通常等于帧速率)。
返回类型
None
也可以看看
begin_animations()
启动场景的动画。
返回类型
None
bring_to_back(*mobjects)
从场景中移除 mobject 并将其添加到场景的后面。
参数
*mobjects ( Mobject ) – 要推到场景后面的 mobject。
返回
场景,mobject 被推到场景的后面。
返回类型
bring_to_front(*mobjects)
将传递的对象再次添加到场景中,将它们推到场景的前面。
参数
*mobjects ( Mobject ) – 带到场景前面的 mobject。
返回
场景,mobjects 被带到场景的前面。
返回类型
clear()
从场景中移除 self.mobjects 和 self.foreground_mobjects 中存在的所有 mobject。
返回
场景,已删除 self.mobjects 和 self.foreground_mobjects 中的所有 mobject。
返回类型
compile_animation_data(*animations, **play_kwargs)
给定动画列表,编译相应的静态和移动对象,并收集动画持续时间。
这也开始动画。
参数
- animations( Animation ) – 带有 mobject 方法和参数的动画或 mobject
- play_kwargs – 影响传入内容的命名参数
animations
,例如run_time
,lag_ratio
等等。
返回
如果没有什么可玩的,则无,否则为 self。
返回类型
self, None
compile_animations(*args, **kwargs)
从任何 _AnimationBuilders 创建 _MethodAnimations 并使用传递给 play() 的 kwargs 更新动画 kwargs。
参数
- *args ( Animation ) – 要播放的动画。
- **kwargs – 调用 play() 的配置。
返回
要播放的动画。
返回类型
Tuple[ Animation
]
construct()
将内容添加到场景中。
从内部Scene.construct()
,通过调用在屏幕上显示 mobjects Scene.add()
,并通过调用将它们从屏幕上删除Scene.remove()
。当前屏幕上的所有 mobject 都保存在Scene.mobjects
. 通过调用 来播放动画Scene.play()
。
笔记
初始化代码应该放在Scene.setup()
. 终止代码应输入Scene.tear_down()
.
例子
典型的 manim 脚本包含一个派生自Scene
重写Scene.contruct()
方法的类:
也可以看看
get_attrs(*keys)
给定属性的标识符/名称,获取场景的属性。
参数
*keys ( str ) – 要返回其属性的参数的名称。
返回
传递的标识符的属性列表。
返回类型
list
get_mobject_family_members()
返回场景中所有对象的家庭成员列表。如果添加了 Circle() 和 VGroup(Rectangle(),Triangle()),则它不仅返回 Circle()、Rectangle() 和 Triangle(),还返回 VGroup() 对象。
返回
mobject 家族成员列表。
返回类型
list
get_moving_mobjects(*animations)
获取传递的动画中的所有移动对象。
参数
*animations ( Animation ) – 检查移动对象的动画。
返回
可以在动画中移动的 mobject 列表
返回类型
list
get_restructured_mobject_list(mobjects, to_remove)
给定一个 mobject 列表和一个要删除的 mobject 列表,这会从 mobject 列表中过滤掉可删除的 mobject。
参数
- mobjects ( list ) – 要检查的 Mobjects。
- to_remove ( list ) – 要删除的 mobject 列表。
返回
包含要删除的 mobject 的 mobject 列表已删除。
返回类型
list
get_run_time(animations)
获取动画列表的总运行时间。
参数
animations ( list [ Animation ]run_time
) –要计算总数的动画列表 。
返回
run_time
列表中所有动画的总数。
返回类型
float
Python | |
---|---|
当你制作自己的动画时,你几乎不会使用它。该方法供 Manim 内部使用。
返回一个 CommandLine ProgressBar,其fill_time
依赖于run_time
动画的、在该动画中执行的迭代以及指示是否考虑跳过的动画的布尔值。
参数
- run_time ( float ) –
run_time
动画的时间。 - n_iterations ( int | None ) – 动画中的迭代次数。
- override_skip_animations ( bool ) – 是否在进度栏中显示跳过的动画。
返回
命令行进度条。
返回类型
time_progression
get_top_level_mobjects()
返回所有不是子对象的对象。
返回
顶级 mobject 列表。
返回类型
list
interactive_embed()
与 embed() 类似,但允许屏幕交互。
is_current_animation_frozen_frame()
返回当前动画是否产生静态帧(通常是 Wait)。
返回类型
bool
Python | |
---|---|
在这里创建分离;最后一部分完成并创建一个新部分。 skip_animations
跳过本节中所有动画的渲染。请参阅有关如何使用部分的文档。
参数
- name( str ) –
- type( str ) –
- skip_animations( bool ) –
返回类型
None
pause(duration=1.0)
暂停场景(即显示冻结的帧)。
wait()
这是 with frozen_frame
set to 的别名True
。
参数
duration( float ) – 暂停的持续时间。
也可以看看
Python | |
---|---|
在此场景中播放动画。
参数
- args – 要播放的动画。
- subcaption – 应在动画期间添加的外部子标题的内容。
- subcaption_duration – 添加指定子标题的持续时间。如果
None
(默认),则采用动画的运行时间。 - subcaption_offset – 添加的子标题的开始时间的偏移量(以秒为单位)。
- kwargs – 所有其他关键字都会传递给渲染器。
play_internal(skip_rendering=False)
此方法用于准备要渲染的动画、应用动画所需的参数和参数、渲染它们并将它们写入视频文件。
参数
Skip_rendering ( bool ) – 是否应该跳过渲染,默认为 False
remove(*mobjects)
通过从“mobjects”和“foreground_mobjects”中删除 mobjects,从场景和前景中删除传递的 mobjects 列表中的 mobjects
参数
*mobjects ( Mobject ) – 要删除的 mobject。
remove_foreground_mobject(mobject)
从前台删除单个 mobject,并在内部从 foreground_mobjects 列表中删除。
参数
mobject ( Mobject ) – 要从前台删除的 mobject。
返回
场景,删除了前景对象。
返回类型
remove_foreground_mobjects(*to_remove)
从前台删除 mobject,并在内部从 foreground_mobjects 列表中删除。
参数
*to_remove ( Mobject ) – 要从前台删除的 mobject。
返回
场景,前景对象被移除。
返回类型
remove_updater(func)
从场景中删除更新功能。
参数
func ( Callable [ [ float ] , None ] ) – 要删除的更新函数。
返回类型
None
也可以看看
render(preview=False)
渲染此场景。
参数
Preview ( bool ) – 如果为 true,则在文件查看器中打开场景。
replace(old_mobject, new_mobject)
将场景中的一个 mobject 替换为另一个 mobject,保留绘制顺序。
如果old_mobject
是某个其他 Mobject(例如 a Group
)的子对象,则 new_mobject 将在组内替换它,而不更改父对象。
参数
返回类型
None
Python | |
---|---|
TL:WR
如果您的场景有一个 Group(),并且您从 Group 中删除了一个 mobject,则会解散该组并将其余 mobject 直接放入 self.mobjects 或 self.foreground_mobjects 中。
如果场景包含一个组,例如 Group(m1, m2, m3),但其中一个子对象被删除,例如 scene.remove(m1),则 mobject 列表将被编辑为包含其他子对象,但不包含 m1 ,例如,它现在会将 m2 和 m3 插入到该组曾经所在的位置。
参数
- to_remove ( Mobject ) – 要删除的 Mobject。
- mobject_list_name ( str ) – 要从中删除的 mobject(“mobjects”、“foreground_mobjects”等)列表。
- extract_families ( bool ) – 是否应递归提取 mobject 的族。
返回
具有重构 Mobject 的场景 mobject。
返回类型
setup()
这意味着由通常子类化的任何场景来实现,并且在调用构造方法之前涉及一些常见的设置。
should_update_mobjects()
如果该场景的 mobject 应该更新,则返回 True。
特别是,这会检查是否
仅当播放单个等待动画时才会调用此函数。
返回类型
bool
tear_down()
这意味着由通常子类化的任何场景来实现,并且在场景结束之前具有要调用的一些通用方法。
update_mobjects(dt)
开始更新场景中的所有 mobject。
参数
dt ( float ) – 更新之间的时间变化。默认(大部分)为 1/frames_per_second
update_self(dt)
运行所有场景更新程序功能。
在所有类型的更新函数(对象更新器、网格更新器、场景更新器)中,场景更新函数是最后调用的。
参数
dt ( float ) – 自上次更新以来的场景时间。
也可以看看
wait(duration=1.0, stop_condition=None, frozen_frame=None)
播放“无操作”动画。
参数
- duration( float ) – 动画的运行时间。
- stop_condition ( Callable [ [ ] , bool ] | None ) – 没有位置参数的函数,每次渲染帧时都会评估该函数。仅当函数的返回值为 true 或经过指定的时间时动画才会停止
duration
。 - freeze_frame ( bool | None ) – 如果为 True,则不评估更新程序函数,并且动画输出冻结帧。如果为 False,则调用更新程序函数并照常渲染帧。如果“无”(默认值),则场景会尝试确定帧是否自行冻结。
也可以看看
Wait
,should_mobjects_update()
wait_until(stop_condition, max_time=60)
等待直到满足条件,直至达到给定的最大持续时间。
参数
- stop_condition ( Callable [ [ ] , bool ] ) – 一个不带参数的函数,用于确定场景是否应该继续等待。
- max_time ( float ) – 最大等待时间(以秒为单位)。