从 Python¶
场景从 Python 渲染如同从命令行渲染:MyScene().render() 运行它并记录它的影片。影片保留帧、play、声音、段落和字幕,以写入为视频或在程序中读取。窗口在录制时在屏幕上播放影片。
render
¶
运行场景并记录其影片:setup、construct 与 tear_down,然后
一个闭合帧。
每一帧在生成时即被发送:编码进 video(一个 MP4 文件),并交给
frames(若给定);每次 play 或 wait 结束时,交给 plays(若给定)。
仅在需要视频或当 frames 请求其像素时才绘制帧:二者皆无时,帧仅被
计数而不绘制,可快速检查场景。帧 k = 0, 1, … 在同一浮点时刻的事件
之后采样 k / fps 秒;闭合帧随后在其自身时刻显示场景:若某帧恰落在
场景结束处则为该结束时刻,否则为之后的第一个帧时刻。因此场景的最后一个
动画的落定被看见。
任一函数以及一个 take 都可抛出 Cut 以在
该处结束影片:场景停止,视频写到已发送的最后一帧。若场景失败,视频不
被写入。一个场景只渲染一次:再次渲染需新建一个。
video要写入的 MP4 文件(若有),尺寸与帧率取
config(每秒整帧数,且宽高均为偶数)。presetx264 编码预设;更快的预设产生更大的文件。
crfx264 的恒定速率因子,从 0 到 51;值越低质量越高。
frames一个随每帧发送而被调用的函数(一个
FrameSink):一个Frame,它知道自己在影片中的位置, 并在被请求时绘制其像素。plays一个在每次 play 或 wait 结束时被调用的函数(一个
PlayHook),带有Play及其播放的动画,以及 play 留下的世界。take改为将影片记录为一个 take,供 ManimGX 的播放器绘制:一个随其 字节被记录而调用的函数(一个
Take)。take 没有视频,也没有供frames的帧。
返回 影片:其帧数、play、分段、声音与字幕,以及其视频的生成方式。
源码
manimgx\scene.py
Film
¶
一个场景的影片:它的帧(按发出顺序)、它的播放,以及它的声音、分段 和字幕。
Scene.render 创建并返回一个影片。每一帧只发出一次:
若有视频则编码入视频,若提供了 frames 则交予它;与前一帧相同的帧不会再次
发出,而是延长前者。每一次播放在结束时被保留,若提供了 plays 则交予它。
场景放置的声音在视频写入时混入其音轨。
影片也可改为作为 take 录制:将引擎的工作写下——每个形状一次,随后每帧的
视图与记录,最后是声音与字幕——供 ManimGX 的播放器随时播放:在
Window 中、场景运行时实时播放(manimgx preview),或在
浏览器中(Python 无 GPU,Pyodide 环境)。
video帧到来时编码入的 MP4 文件,若有。
framesplays一个在每次播放结束时被调用的函数(见
PlayHook)。take一个在影片作为 take 录制时被逐帧交给 take 字节的函数,若有 (见
Take)。preset视频编码所用的 x264 预设:越快的预设产生越大的文件。
crf视频的质量,以 x264 的恒定速率因子表示,从 0 到 51: 越低越好,默认值为 18。
源码
manimgx\rendering\film.py
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 | |
fps
¶
影片每秒的帧数:影片开始时配置所定的值。
video
¶
正在写入的视频路径;写入完成后为 None,若无视频 则始终为 None。
frames
¶
每个已绘制的帧被交予的函数,若有。
frame_count
¶
影片迄今为止的帧数,保持帧按其持续的帧数计入。
subcaptions
¶
场景添加的字幕(见
add_subcaption);captions 会并入其语音产生的字幕。
cut
¶
影片结尾所截短的声音:每个片段及其损失的秒数。
源码
manimgx\rendering\film.py
subtitles
¶
影片的 captions 以 SubRip(.srt)
格式表示的字幕:播放器、编辑器与视频站点在视频旁所读的内容。
源码
manimgx\rendering\film.py
captions
¶
影片的字幕,按其开始时刻排序:场景添加的那些,以及其语音 产生的那些——按所说时刻分成每行数词一行。
源码
manimgx\rendering\film.py
Window
¶
ManimGX 的播放器,运行在本机屏幕的窗口中,播放发送给它的片段。
窗口是一个 Take:将其传给
Scene.render 作为 take,它会在录制时播放影片。
一旦窗口关闭,发送给它的影片即被剪切(见 Cut)。
其查看者可请求该文件的其它场景(N 和 P)。
title窗口的标题。
time播放头起始位置,以秒为单位。
源码
manimgx\rendering\window.py
影片所包含的内容¶
Frame
¶
影片的一帧,由影片发出时所示:显示为视频的第 index 到
index + repeat - 1 帧。
世界保持静止的一帧只发出一次,显示 repeat 次。它的像素仅在
被请求时才绘制,由 pixels 完成。
index它在影片中的位置:它作为首帧显示时的帧号。
repeat它显示的帧数。
draw绘制其像素的函数。
key它是否开启影片的一个分段。
源码
manimgx\rendering\film.py
Play
¶
Section
¶
Export
¶
影片视频的制作情况:视频写入完成后 Film.export 所
持有的内容。
Cut
¶
影片的提前结束:由帧接收器、播放钩子或 take 抛出,使场景 在此处停止。
影片按现状关闭:其视频(若有)写入至已发出的最后一帧。
Take
¶
FrameSink
¶
一个函数,影片发出每一帧时将其交给它,参数为一个
Frame(见 Scene.render);其返回值
被忽略。它可以抛出 Cut 以在此处结束影片。
PlayHook
¶
一个函数,在影片的每次播放或等待结束时被调用(见
Scene.render),参数为该 Play 及
其播放的动画、播放结束时世界所处的状态;其返回值被忽略。它可以抛出
Cut 以在此处结束影片。
manimgx.audio.sound.RATE
¶
音轨的采样率:每秒 48,000 个采样点,与视频的声音一致。