配置#

Manim Manim是一个基于Python的动画库,提供了很多配置选项,可以根据不同的使用场景进行配置。 这些配置选项可以在场景渲染过程的不同阶段进行配置,从而更好地适应不同的使用需求和环境。 Manim提供了一个名为the ManimConfig class的类, 可以通过command-line arguments或者the config files配置文件来配置ManimConfig类的属性, 从而更改Manim库的行为和效果。

配置Manim的最常见、最简单和推荐的方法是通过命令行界面(CLI)来进行配置。

命令行()参数#

CLI中最常用的命令是“ render ”命令,它用于将场景渲染到输出文件中。 在使用Manim库时,用户可以使用“render”命令来渲染场景,并将结果输出到指定的文件中。 这个命令需要用以下参数:

Manim Community v0.17.3

Usage: manim render [OPTIONS] FILE [SCENE_NAMES]...

  Render SCENE(S) from the input FILE.

  FILE is the file path of the script or a config file.

  SCENES is an optional list of scenes in the file.
...

由于Manim默认使用“render”命令来进行场景渲染,因此在没有指定具体命令时,默认使用“render”命令的形式更为常见,可以代替其他形式的命令。也就是说,如果用户没有指定具体的命令,Manim会默认使用“render”命令,并使用默认参数来进行场景渲染。因此,使用默认形式的命令更为简洁和方便,也更为常见。

manim [OPTIONS] FILE [SCENES]

下面是一个使用上述默认形式的命令的例子:

manim -qm file.py SceneOne

这个命令让Manim在文件“file.py”中搜索名为“SceneOne”的场景类,并使用中等质量(由-qm参数指定)来进行渲染。

另一个经常使用的标志是“-p”(“preview”),它使Manim在完成渲染后打开渲染的视频文件。 具体来说,当Manim使用“-p”标志时,它会在渲染完成后自动打开视频文件,让用户可以快速预览渲染结果。这个标志通常用于调试和测试,以便用户可以快速检查输出是否正确。.

注意

“-p”标志不会改变全局配置字典的任何属性。该标志只是一个命令行方便的选项。 更具体地说,全局配置字典是Manim的一个配置对象,它包含了许多可以配置的选项,如渲染器、分辨率、渲染质量等。在使用Manim时,用户可以通过修改这些选项来改变渲染结果。 但是,“-p”标志不会改变全局配置字典的任何属性。它只是一个命令行方便的选项,用于在渲染完成后自动打开视频文件。这个标志不会影响其他配置选项,也不会改变全局配置字典的任何属性值。

典型例子#

要以高质量渲染场景,但仅输出场景的最后一帧而不是整个视频,可以执行以下命令:

manim -sqh <file.py> SceneName

以下是一个示例,它使用了“-o”标志指定输出文件名,只渲染前十个动画(使用“-n”标志),并使用白色背景(使用“-c”标志),将动画保存为.gif格式而不是.mp4格式(使用“--format=gif”标志)。它使用默认质量,渲染完成后不尝试打开文件。

manim -o myscene --format=gif -n 0,10 -c WHITE <file.py> SceneName

全部CLI标记列表#

$ manim --help
Manim Community v0.17.3

Usage: manim [OPTIONS] COMMAND [ARGS]...

  Animation engine for explanatory math videos.

Options:
  --version  显示版本信息随后退出.
  --help     显示信息并退出.

Commands:
  cfg      管理Manim配置文件。
  init     创建新项目或插入新场景。
  new      (已弃用) 创建新项目或插入新场景。
  plugins  管理Manim插件。
  render   从输入文件渲染场景。

  如果没有指定其他子命令,则默认调用“manim render”命令。
  如果需要了解“-ql”或“-p”等标志的含义,请运行“manim render --help”命令。


由Manim社区开发者用爱心制作.
$ manim render --help
Manim Community v0.17.3

Usage: manim render [OPTIONS] FILE [SCENE_NAMES]...

  Render SCENE(S) 从 FILE 中输入.

  FILE:表示要渲染的场景所在的文件路径。这个文件可以是一个Python脚本,也可以是一个配置文件。

  SCENES:表示要渲染的场景列表,这是一个可选参数。如果不指定SCENES参数,则默认渲染文件中的所有场景。

Global options:
  -c, --config_file TEXT        选项可以用于指定Manim的配置文件,以定制渲染设置。
                                如果不指定配置文件,则Manim将使用默认的配置设置。
  --custom_folders              选项可以用于在Manim的配置文件中定义自定义文件夹结构,并将其用于输
                                出渲染结果。在配置文件中,用户可以使用“[custom_folders]”部分来定
                                义自定义文件夹结构,然后使用“--custom_folders”选项来启用它。

  --disable_caching             选项可以用于禁用Manim的缓存功能,即使在禁用缓存的情况下,Manim仍
                                会生成缓存文件。Manim的缓存功能是为了提高渲染速度而设计的,它可以
                                缓存已经渲染过的场景,以便在后续的渲染中重用它们。然而,在某些情况
                                下,禁用缓存可能是必要的,例如在进行调试或测试时,或者在场景中使用
                                了动态生成的内容时。

  --flush_cache                 选项可以用于删除Manim生成的部分影片缓存文件。这些缓存文件是在渲染
                                过程中生成的,包含已经渲染的场景的部分结果,可以用于加速后续的渲染
                                过程。然而,有时候需要清除这些缓存文件,例如在重新渲染场景时或者释
                                放磁盘空间时。

  --tex_template TEXT           选项可以用于指定一个自定义的TeX模板文件,以覆盖Manim默认使用的模板
                                文件。TeX模板文件是用于渲染数学公式和符号的文件,Manim使用它们来在
                                场景中呈现数学公式和符号。默认情况下,Manim使用内置的TeX模板文件。
                                但是,用户可以通过指定自定义的TeX模板文件来改变这个行为,以便使用自
                                定义的数学字体、排版或其他渲染选项。

  -v, --verbosity [DEBUG|INFO|WARNING|ERROR|CRITICAL]
                                选项可以用于控制Manim在命令行界面上输出的详细程度。这个选项可以设置
                                为DEBUG、INFO、WARNING、ERROR或CRITICAL,分别对应不同的详细程度。
                                除了控制Manim输出的详细程度外,这个选项还可以控制FFmpeg的日志级别。
                                FFmpeg是一个用于视频编码和解码的开源库,被Manim用于生成视频文件。
                                通过设置“-v”或“--verbosity”选项,用户可以控制FFmpeg的日志级别,并
                                在需要时进行调试。更改 ffmpeg 日志至少 5+版本。
  --notify_outdated_version / --silent
                                选项可以用于在Manim版本过期时显示警告信息。如果Manim安装的版本过期,
                                可能会导致渲染过程中出现问题或错误。
                                通过使用“--notify_outdated_version”选项,用户可以在Manim版本过期时
                                及时得到警告,以便及时更新Manim版本。

  --enable_gui                  选项可以用于启用Manim的图形用户界面(GUI)交互模式。在GUI交互模式下,
                                用户可以通过鼠标和键盘与Manim进行交互,例如暂停、恢复、跳过或重启渲
                                染过程。此外,GUI界面还提供了一些实用的工具,例如视频预览、场景编辑、
                                参数调整等等。启用GUI交互模式可以使Manim的使用更加方便和直观,特别是
                                对于初学者或非编程专业人士来说。然而,GUI交互模式在某些情况下可能会影
                                响渲染性能或稳定性,因此需要慎重使用。

  --gui_location TEXT          选项可以用于指定Manim GUI窗口的启动位置。这个选项的参数是一个字符串,表
                               示GUI窗口的启动位置,可以是以下值之一:

                                    center:将GUI窗口放置在屏幕中央。
                                    topleft:将GUI窗口放置在屏幕左上角。
                                    topright:将GUI窗口放置在屏幕右上角。
                                    bottomleft:将GUI窗口放置在屏幕左下角。
                                    bottomright:将GUI窗口放置在屏幕右下角。

                                通过指定GUI窗口的启动位置,用户可以更好地控制Manim GUI的外观和行为
                                ,以适应不同的使用场景和需求。

  --fullscreen                  选项可以用于将Manim GUI窗口扩展到最大可能的大小。这个选项可以让
                                Manim GUI窗口占据整个屏幕,以便更好地利用屏幕空间,并提供更好的
                                用户体验。

  --enable_wireframe            选项可以用于在Manim使用OpenGL进行渲染时启用线框调试模式。OpenGL
                                是一种跨平台的图形库,被Manim用于渲染3D场景和动画。通过启用线框
                                调试模式,用户可以查看场景中的3D模型的线框边界,并更好地理解和调
                                试它们。启用OpenGL线框调试模式可以帮助用户更好地理解场景和模型的
                                结构,并找到可能的错误和问题。然而,这个选项只在使用OpenGL进行渲
                                染时有效,对于其他渲染引擎无效。

  --force_window               选项可以用于在使用OpenGL渲染引擎时强制打开窗口。在使用OpenGL进行
                               渲染时,Manim默认情况下是不显示窗口的,而是直接将渲染结果输出到视
                               频文件中。然而,通过使用“--show_in_opengl”选项,用户可以强制Manim
                               在使用OpenGL渲染时打开窗口,并在窗口中显示渲染结果。强制打开OpenGL
                               窗口可以帮助用户更好地理解和调试场景和模型,特别是对于3D场景和动画。
                               然而,这个选项可能会影响渲染性能,并且只适用于使用OpenGL进行渲染的
                               情况。

  --dry_run                     选项可以用于在Manim中执行“干运行”,即在不生成任何图像或视频文件的
                                情况下进行渲染。通过使用“--dry_run”选项,用户可以检查场景和动画的
                                语法和结构是否正确,以及调试和测试Manim的代码,而无需生成任何输出结
                                果。同时,“--dry_run”选项还会禁用Manim窗口的显示,以避免不必要的
                                渲染开销和窗口管理开销。

Output options:
  -o, --output_file TEXT        选项可以用于指定渲染场景后生成的视频文件的文件名。通过使用这个选项,
                                用户可以将生成的视频文件保存为指定的文件名,而不是使用Manim默认的
                                命名规则。“-o”或“--output_file”选项的参数可以是一个字符串或一个
                                包含多个字符串的列表。如果参数是一个字符串,Manim将使用它作为渲染
                                后生成的视频文件的文件名。如果参数是一个列表,Manim将使用列表中的
                                每个字符串作为渲染后生成的视频文件的文件名,并生成多个视频文件。
                                
  -0, --zero_pad INTEGER RANGE  可以用于指定生成的PNG图像文件名中数字部分的零填充位数。PNG图像是
                                Manim在渲染场景时生成的一种中间文件格式,可以用于生成最终的视频
                                文件。通过使用“-0”或“--zero_pad”选项,用户可以控制Manim在生成PNG
                                图像文件名时使用的零填充位数,以确保文件名具有一致的格式和顺序。
                                  “-0”或“--zero_pad”选项的参数是一个整数,表示PNG图像文件名中数
                                  字部分的零填充位数。参数的取值范围是0到9之间的整数。例如,如果
                                  参数为2,则Manim将使用两位数字来填充PNG图像文件名中的数字部分,
                                  例如“scene_01.png”。如果参数为0,则Manim将不使用任何零填充。
                                  [0<=x<=9]

  --write_to_movie               选项可以用于将使用OpenGL渲染引擎渲染的视频保存到文件中。默认情
                                  况下,Manim使用OpenGL进行渲染,但不会将渲染结果保存到文件中。
                                  通过使用“--write_to_movie”选项,用户可以将渲染结果保存为视
                                  频文件,以便在其他应用程序中播放、分享或发布。
                                  “--write_to_movie”选项无需参数。当选项被设置时,Manim将在渲
                                  染完成后将视频文件保存到默认的输出目录中。用户可以使用
                                  “-o”或“--output_file”选项来指定视频文件的文件名和保存路径。

  --media_dir PATH              选项可以用于指定Manim渲染过程中生成的视频文件和LaTeX文件的存储
                                路径。当使用Manim渲染场景时,Manim会生成许多中间文件,包括PNG图像
                                文件、视频文件和LaTeX文件。通过使用“-w”或“--media_dir”选项,用户
                                可以将这些文件保存到指定的目录中,而不是默认的目录中。
                                “--media_dir”选项的参数是一个字符串,表示要存储Manim渲染过程中生
                                成的文件的目录路径。如果目录不存在,Manim会尝试创建它。如果未提供
                                此选项,则Manim将使用默认的目录路径来存储文件。

  --log_dir PATH               选项可以用于指定Manim渲染过程中生成的日志文件的存储路径。Manim在
                                渲染场景时会生成各种日志消息,包括渲染进度、错误信息和警告信息。
                                通过使用“-l”或“--log_dir”选项,用户可以将这些日志消息保存到指定的
                                目录中,而不是默认的目录中。“--log_dir”选项的参数是一个字符串,表示
                                要存储Manim渲染过程中生成的日志文件的目录路径。如果目录不存在,
                                Manim会尝试创建它。如果未提供此选项,则Manim将使用默认的目录路径
                                来存储日志文件。

  --log_to_file                选项可以用于将Manim渲染过程中的终端输出记录到文件中。当Manim渲染
                                场景时,它会将进度、错误和警告等信息输出到终端。通过使用
                                “--log_to_file”选项,用户可以将这些输出信息保存到指定的文件中,
                                以便后续查看和分析。“--log_to_file”选项的参数是一个字符串,表示要
                                将终端输出记录到的文件的路径。如果文件不存在,Manim会尝试创建它。
                                如果未提供此选项,则Manim将不会将终端输出记录到文件中。

Render Options:
  -n, --from_animation_number TEXT
                                可以用于指定要从哪个动画序号开始渲染场景。在Manim中,每个场景都由
                                多个动画组成,这些动画按顺序播放以组成完整的场景。通过使用
                                “-n”或“--from_animation_number”选项,用户可以指定从哪个动画序号
                                开始渲染场景,以便跳过前面的动画或重新渲染中间的动画。
                                “-n”或“--from_animation_number”选项的参数是一个整数,表示要从
                                哪个动画序号开始渲染场景。如果只指定了一个参数,Manim将从指定的
                                动画序号开始渲染场景,并渲染所有序号大于等于指定序号的动画。如果
                                同时指定了两个参数,则Manim将渲染从第一个参数指定的动画序号开始,
                                直到第二个参数指定的动画序号结束。

  -a, --write_all               可以用于渲染输入文件中的所有场景。输入文件是一个Python脚本,其中
                                包含定义场景和动画的代码。Manim将查找文件中所有继承自Scene类的类,
                                并将它们视为场景。每个场景都包含一个或多个继承自Animation类的动画。

  --format [png|gif|mp4|webm|mov]
  -s, --save_last_frame
  -q, --quality [l|m|h|p|k]      渲染对应的分辨率: 854x480 15FPS,
                                 1280x720 30FPS, 1920x1080 60FPS, 2560x1440
                                 60FPS, 3840x2160 60FPS

  -r, --resolution TEXT          可以用于指定Manim渲染生成视频的分辨率。在Manim中,视频的分辨率
                                通常是16:9的宽高比。但是,如果指定的场景尺寸不能与16:9的宽高比兼容,
                                Manim将自动调整分辨率以适应场景尺寸。

  --fps, --frame_rate FLOAT    可以用于指定Manim渲染视频的帧率。视频的帧率表示每秒钟播放的帧数,
                                通常以“fps”(frames per second)为单位。较高的帧率会使视频更加
                                流畅,但也会增加文件大小和渲染时间。“--fps”或“--frame_rate”选项
                                的参数是一个浮点数,表示要使用的帧率。例如,如果要将帧率设置为
                                30fps,可以使用“--fps 30”或“--frame_rate 30”选项。默认情况下,
                                Manim使用30fps的帧率进行渲染。可以使用“--fps”或“--frame_rate”
                                选项来覆盖默认值。

  --renderer [cairo|opengl]    用于选择Manim在渲染场景时使用的渲染器。Manim支持两种渲染器
                                :cairo和opengl。cairo渲染器使用2D矢量图形进行渲染,而opengl渲
                                染器使用3D图形进行渲染。默认情况下,Manim使用cairo渲染器进行渲染。
                                “--renderer”选项的参数是一个字符串,表示要使用的渲染器。可以使
                                用“cairo”或“opengl”来选择cairo或opengl渲染器。例如,
                                要使用opengl渲染器进行渲染,可以使用“--renderer opengl”选项。

  -g, --save_pngs              用于在渲染视频时将每个帧保存为单独的PNG图像文件。每个PNG图像文件将
                                保存为视频中对应帧的静态图像。这个选项已经被弃用。

  -i, --save_as_gif            选项可以用于将渲染生成的视频保存为GIF图像文件。这个选项已经被弃用。

  --save_sections              可以用于在生成主要视频文件的同时,将每个场景的视频保存为单独的小节
                                视频文件。小节视频文件将保存在与主要视频文件相同的目录中,并以场
                                景名称和小节序号命名。小节视频文件包含每个场景的单独视频,以及场
                                景之间的过渡动画。这些小节视频文件可以用于快速预览场景和过渡动画,
                                或者用于将视频分解为更小的部分以进行编辑。

  -s, --save_last_frame       可以用于在渲染视频完成后将最后一帧保存为单独的PNG图像文件。
                                这个选项已经被弃用。

  -t, --transparent             可以用于将渲染生成的视频中的背景设置为透明。这个选项通常用于将
                                Manim生成的视频嵌入到其他图像或视频中,以便与其他图像或视频进行
                                混合。使用“-t”或“--transparent”选项时,Manim将使用alpha通道来
                                表示背景的透明度。在渲染过程中,Manim将每个帧的背景设置为完全
                                透明,并将帧保存为支持alpha通道的视频格式(如MOV或PNG)。在将视
                                频与其他图像或视频混合时,可以使用支持alpha通道的视频编辑软件来
                                控制背景的透明度。

  --use_projection_fill_shaders  可以用于在使用OpenGL渲染器时启用投影填充着色器。这个选项通常
                                  用于在OpenGL渲染器中绘制3D对象并使用投影矩阵进行变换时,正确
                                  地填充3D对象。在Manim中,OpenGL渲染器可以用于渲染3D场景和对象
                                  。使用3D对象时,Manim使用投影矩阵将3D对象映射到2D屏幕上。
                                  启用“--use_projection_fill_shaders”选项时,Manim将使用投影
                                  填充着色器来正确地填充3D对象,并将其显示在2D屏幕上。

  --use_projection_stroke_shaders
                                 可以用于在使用OpenGL渲染器时启用投影描边着色器。这个选项通常用于
                                 在OpenGL渲染器中绘制3D对象并使用投影矩阵进行变换时,正确地
                                 渲染3D对象的描边。在Manim中,OpenGL渲染器可以用于渲染3D场景和
                                 对象。使用3D对象时,Manim使用投影矩阵将3D对象映射到2D屏幕上。
                                 启用“--use_projection_stroke_shaders”选项时,Manim将使用投影
                                 描边着色器来正确地渲染3D对象的描边,并将其显示在2D屏幕上。

方便使用的选项:

  --progress_bar [display|leave|none]
                                可以用于控制Manim在运行时是否显示进度条。该选项有三个可选
                                参数:display、leave和none。

  -p, --preview                 可以用于在渲染视频之前预览场景的动画效果。当使用OpenGL渲染
                                器时,Manim将在弹出窗口中实时预览场景的动画。当使用cairo
                                渲染器时,Manim将在系统默认的媒体播放器中打开已渲染的视频文件。

  -f, --show_in_file_browser    用于在Manim生成视频文件后,在文件浏览器中打开输出文件所在的目
                                录并选中生成的视频文件。这个选项对于快速查看和分享生成的视频文
                                件非常有用。

  --jupyter                    使用 jupyter notebook magic.

Other options:
  --help                      显示信息并退出。


  由Manim社区开发者用爱心制作。
$ manim cfg --help
Manim Community v0.17.3

Usage: manim cfg [OPTIONS] COMMAND [ARGS]...

  Manages Manim configuration files.

Options:
  --help  显示信息并退出。

Commands:
  export
  show
  write

  由Manim社区开发者用爱心制作。
$ manim plugins --help
Manim Community v0.17.3

Usage: manim plugins [OPTIONS]

  Manages Manim plugins.

Options:
  -l, --list  显示可选插件。
  --help      显示信息并退出。

  由Manim社区开发者用爱心制作。

ManimConfig 类#

是的,您说的对。Manim提供了一个全局 config 对象ManimConfig,它是配置Manim的最直接的方式之一。 ManimConfig是一个类,它定义了许多用于配置Manim的属性和选项。 您可以通过标准属性语法或类似字典的语法来访问这些属性:

>>> from manim import *
>>> config.background_color = WHITE
>>> config["background_color"] = WHITE

Note

前者是首选;后者提供向后兼容性。

包括 CameraMobjectAnimation 在内的大多数类都从全局配置读取它们的某些默认 config

>>> Camera({}).background_color
<Color white>
>>> config.background_color = RED  # 0xfc6255
>>> Camera({}).background_color
<Color #fc6255>

ManimConfig 的设计目的是保持内部一致性。例如,设置 frame_y_radius 会影响到frame_height: :

>>> config.frame_height
8.0
>>> config.frame_y_radius = 5.0
>>> config.frame_height
10.0

全局配置对象旨在成为所有配置选项的单一可信来源。所有其他设置配置选项的方式最终都会更改全局配置对象的值。 下面的示例说明了用参考帧渲染我们文档中的示例所选的视频分辨率。

Example: ShowScreenResolution

../_images/ShowScreenResolution-1.webp
from manim import *

class ShowScreenResolution(Scene):
    def construct(self):
        pixel_height = config["pixel_height"]  #  1080 is default
        pixel_width = config["pixel_width"]  # 1920 is default
        frame_width = config["frame_width"]
        frame_height = config["frame_height"]
        self.add(Dot())
        d1 = Line(frame_width * LEFT / 2, frame_width * RIGHT / 2).to_edge(DOWN)
        self.add(d1)
        self.add(Text(str(pixel_width)).next_to(d1, UP))
        d2 = Line(frame_height * UP / 2, frame_height * DOWN / 2).to_edge(LEFT)
        self.add(d2)
        self.add(Text(str(pixel_height)).next_to(d2, RIGHT))

The config files#

正如最后一个示例所示,您可以使用命令行选项来配置Manim的各个方面,如渲染器、 分辨率、帧速率等等。但是,如果您需要多次运行同一个脚本,并且需要每次运行时 都使用相同的选项,那么在命令行中重复输入这些选项可能会变得非常繁琐。为了解决 这个问题,Manim还支持使用配置文件来配置Manim。 配置文件是以.cfg为后缀的文件, 它包含了一系列的选项和参数,用于配置Manim的各个方面。 您可以在manim.cfg中指定Manim命令行选项的值,这样每次运行Manim时都会自动应用这些选项。 配置文件可以包含多个选项和参数,这使得配置Manim变得非常灵活和方便。

Warning

配置文件的名称必须为 manim.cfg。目前,Manim 不支持使用其他名称的配置文件。

配置文件必须以 [CLI] 部分标头开头。该标头下的配置选项与 CLI 标志具有相同的名称,并具有相同的作用。例如,以下是一个配置文件的示例:

[CLI]
# my config file
output_file = myscene
save_as_gif = True
background_color = WHITE

配置文件使用标准的 Python 库 configparser 进行解析。特别地,它们将忽略任何以井号符号 # 开始的行。

现在,执行以下命令:

manim -o myscene -i -c WHITE <file.py> SceneName

如果 manim.cfg 与<file.py> 相同目录中,执行以下命令等效于执行以下命令:

manim <file.py> SceneName

提示

配置文件中可接受的配置选项名称与相应命令行标志的长名称完全相同。例如-c--background_color标志是可以互换的,但配置文件只接受background_color作为可接受的选项。

由于配置文件的目的是替换 CLI 标志,因此所有 CLI 标志都可以通过配置文件进行设置。此外,任何配置选项都可以通过配置文件进行设置,无论它是否具有关联的 CLI 标志。有关所有 CLI 标志和配置选项的列表,请参见本文档底部。 manim.cfg配置文件,而不是在执行目录中查找。例如,

Manim 将在要渲染的文件的目录中查找 ,

manim -o myscene -i -c WHITE <path/to/file.py> SceneName

如果存在,将使用路径path/to/file.py中找到的配置文件。即使该配置文件存在也不会使用当前工作目录中找到的配置文件。通过这种方式,用户可以为不同的场景或项目保留不同的配置文件,并从系统的任何位置使用正确配置来执行它们

这里描述的文件称为目录级别的配置文件,因为它会影响到在同一文件夹中找到的所有场景脚本。

用户配置文件#

正如前一节所述,manim.cfg 配置文件仅影响其相同文件夹中的场景脚本。但是,用户也可以创建一个特殊的配置文件,该配置文件将适用于由该用户渲染的所有场景。这称为 user-wide用户级别 的配置文件,无论 Manim 从何处执行,也无论场景脚本存储在何处,它都将应用。

用户级别的配置文件位于特殊文件夹中,具体取决于操作系统。

  • Windows: UserDirectory/AppData/Roaming/Manim/manim.cfg

  • MacOS: UserDirectory/.config/manim/manim.cfg

  • Linux: UserDirectory/.config/manim/manim.cfg

这里,UserDirectory 是用户的主文件夹。

提示

用户可能有多个按文件夹分别适用的folder-wide的配置文件, 但只能有一个适用于所有场景脚本的user-wide 的配置文件。 同一台计算机上的不同用户可能分别拥有自己的用户级别的配置文件。

警告

不要将场景脚本存储在与用户级别的配置文件相同的文件夹中。在这种情况下,行为未定义。

每当您从系统的任何地方使用 Manim 时,Manim 将查找用户级别的配置文件并读取其配置。

级联配置文件#

如果执行 Manim 时找到目录级别的配置文件和用户级别的配置文件会发生什么?Manim 将读取两个文件,但如果它们不兼容,则以目录级别的文件为优先。

例如,考虑以下用户级别的配置文件:

# user-wide
[CLI]
output_file = myscene
save_as_gif = True
background_color = WHITE

和以下目录级别的配置文件:

# folder-wide
[CLI]
save_as_gif = False

那么,执行 manim <file.py> SceneName将等效于不使用任何配置文件并执行以下命令:

manim -o myscene -c WHITE <file.py> SceneName

任何命令行标志都优先于任何配置文件。 例如,使用前面两个配置文件并执行manim -c RED <file.py> SceneName 等效于不使用任何配置文件并执行以下命令:

manim -o myscene -c RED <file.py> SceneName

还有一个library-wide库级别的配置文件,确定了 Manim 的默认行为,并适用于库的每个用户。 它的优先级最低,因此用户级别的任何配置选项和任何目录级别的文件中的配置选项都会覆盖库级别的文件的配置。这称为cascading级联配置文件系统。

警告

用户不应尝试修改库级别的文件。在修改之前,贡献者应该得到核心开发团队的明确确认。

配置顺序#

有这么多不同的配置 Manim 的方式,很难知道每个配置选项何时被设置。实际上,这将取决于如何使用 Manim。

如果从模块导入 Manim,则配置系统将遵循以下步骤:

  1. 加载 library-wide 的配置文件。

  2. 加载 user-wide 用户级别的和 folder-wide 目录级别的文件(如果它们存在)。

  3. 在前两个步骤中找到的所有文件都将被解析到一个名为parser.的ConfigParser对象中。这就是cascading级联发生的地方。

  4. 实例化logging.Logger 以创建 Manim 的全局logger记录器对象。 它使用解析器的“logger”部分进行配置,即parser['logger']

  5. 实例化ManimConfig以创建全局config配置对象。

  6. 通过ManimConfig.digest_parser() 将步骤 3 中的parser解析器输入到步骤 5 中的config中。

  7. logger记录器config都显示给用户。

如果从命令行调用 Manim,则执行所有以前的步骤,并将其补充为: :

  1. 解析 CLI 标志并通过 digest_args()输入到config配置中。

  2. 如果使用了--config_file 标志,将使用库级别文件、存在的用户级别文件以及通过--config_file 传递的文件的内容创建一个新的ConfigParser 对象。在这种情况下,如果目录级别文件存在,则会被忽略。

  3. 新解析器输入到config中。

  4. 处理 CLI 的其余标志。

总结一下,从优先级最低到最高的配置选项顺序如下:

  1. Library-wide 库级别config 配置文件

  2. user-wide 用户级别 config 配置文件(如果存在),

  3. folder-wide 目录级别 config 配置文件(如果存在)或通过--config_file传递的自定义配置文件, ,

  4. 其他 CLI flags

  5. 在配置系统设置之后进行的任何编程更改。

所有配置选项列表: #

['aspect_ratio', 'assets_dir', 'background_color', 'background_opacity',
'bottom', 'custom_folders', 'disable_caching', 'dry_run',
'ffmpeg_loglevel', 'flush_cache', 'frame_height', 'frame_rate',
'frame_size', 'frame_width', 'frame_x_radius', 'frame_y_radius',
'from_animation_number', `fullscreen`, 'images_dir', 'input_file', 'left_side',
'log_dir', 'log_to_file', 'max_files_cached', 'media_dir', 'media_width',
'movie_file_extension', 'notify_outdated_version', 'output_file', 'partial_movie_dir',
'pixel_height', 'pixel_width', 'plugins', 'preview',
'progress_bar', 'quality', 'right_side', 'save_as_gif', 'save_last_frame',
'save_pngs', 'scene_names', 'show_in_file_browser', 'sound', 'tex_dir',
'tex_template', 'tex_template_file', 'text_dir', 'top', 'transparent',
'upto_animation_number', 'use_opengl_renderer', 'verbosity', 'video_dir',
'window_position', 'window_monitor', 'window_size', 'write_all', 'write_to_movie',
'enable_wireframe', 'force_window']

译者注

aspect_ratio: 视频宽高比。

assets_dir: 存放资源文件的目录。

background_color: 背景颜色。

background_opacity: 背景不透明度。

bottom: 视频底部的边距。

custom_folders: 自定义文件夹,用于存储输出文件。

disable_caching: 禁用缓存。

dry_run: 模拟运行,不生成任何输出文件。

ffmpeg_loglevel: FFmpeg的日志级别。

flush_cache: 清空缓存。

frame_height: 视频帧高度。

frame_rate: 视频帧速率。

frame_size: 视频帧大小。

frame_width: 视频帧宽度。

frame_x_radius: 视频帧x轴半径。

frame_y_radius: 视频帧y轴半径。

from_animation_number: 从指定的动画帧开始渲染。

fullscreen: 是否全屏显示。

images_dir: 存放生成的图片的目录。

input_file: 输入文件的路径。

left_side: 视频左侧的边距。

log_dir: 存放日志文件的目录。

log_to_file: 是否将日志输出到文件中。

max_files_cached: 缓存文件的最大数量。

media_dir: 存放媒体文件的目录。

media_width: 媒体宽度。

movie_file_extension: 视频文件扩展名。

notify_outdated_version: 是否通知过时的Manim版本。

output_file: 输出文件的路径。

partial_movie_dir: 存放部分渲染视频的目录。

pixel_height: 视频像素高度。

pixel_width: 视频像素宽度。

plugins: 加载的插件列表。

preview: 是否预览动画效果。

progress_bar: 是否显示进度条。

quality: 视频质量。

right_side: 视频右侧的边距。

save_as_gif: 将视频保存为GIF格式。

save_last_frame: 是否保存最后一帧。

save_pngs: 将视频保存为PNG格式。

scene_names: 要渲染的场景名称。

show_in_file_browser: 是否在文件浏览器中显示输出文件。

sound: 是否包含音频。

tex_dir: 存放LaTeX文件的目录。

tex_template: 使用的LaTeX模板。

tex_template_file: LaTeX模板文件的路径。

text_dir: 存放文本文件的目录。

top: 视频顶部的边距。

transparent: 是否使用透明背景。

upto_animation_number: 渲染到指定的动画帧。

use_opengl_renderer: 是否使用OpenGL渲染器。

verbosity: 输出信息的详细程度。

video_dir: 存放生成的视频的目录。

window_position: 窗口的位置。

window_monitor: 窗口所在的显示器。

window_size: 窗口的大小。

write_all: 是否写入所有的渲染帧

write_to_movie: 是否将帧写入视频文件。

enable_wireframe: 是否启用线框模式渲染。

force_window: 是否强制使用窗口模式渲染。

访问 CLI 命令选项 #

Entering manim, or manim --help, will open the main help page.

Usage: manim [OPTIONS] COMMAND [ARGS]...

  Animation engine for explanatory math videos.

Options:
  --version  Show version and exit.
  --help     Show this message and exit.

Commands:
  cfg      Manages Manim configuration files.
  init     Sets up a new project in current working directory with default
           settings.

           It copies files from templates directory and pastes them in the
           current working dir.
  new      Create a new project or insert a new scene.
  plugins  Manages Manim plugins.
  render   Render SCENE(S) from the input FILE.

See 'manim <command>' to read about a specific subcommand.

Made with <3 by Manim Community developers.

每个子命令都有自己的帮助页面,可以类似地访问::

manim render
manim render --help