插件

插件是扩展Manim核心功能的功能。由于Manim是可扩展的,并非所有内容都属于其核心,我们将介绍如何安装、使用和创建您自己的插件。

注意

插件的标准命名约定是在插件名称前加上manim-。这使得用户可以在诸如PyPI等包存储库中轻松找到它们。

警告

插件功能是新的,并且正在积极开发中。预计会有关于安装、使用和创建插件的最佳实践的更新;以及manim plugins的新子命令/标志。

提示

查看 https://plugins.manim.community/ 获取可用插件列表。

安装插件

插件可以通过pip命令轻松安装:

pip install manim-*

安装插件后,您可以使用manim plugins命令列出可用的插件,请参见以下帮助输出:

manim plugins -h
Usage: manim plugins [OPTIONS]

  Manages Manim plugins.

Options:
-l, --list  List available plugins
-h, --help  Show this message and exit.

Made with <3 by Manim Community developers.

你可以像这样列出插件:

manim plugins -l
Plugins:
• manim_plugintemplate

在项目中使用插件

要启用插件,应使用manim.cfg或命令行参数。

重要

插件应该是插件的模块名称,而不是PyPi名称。

通过manim.cfg启用插件

[CLI]
plugins = manim_rubikscube

要指定多个插件,必须使用逗号分隔的值。

[CLI]
plugins = manim_rubikscube, manim_plugintemplate

创建插件

插件旨在扩展Manim的核心功能。如果您不确定某个功能是否应包含在Manim的核心中,请随时在Discord服务器上询问。访问PyPI.org上的manim-plugintemplate,这是一个创建插件的深入教程。

pip install manim-plugintemplate

manim插件的唯一要求是它们指定一个入口点,使用组"manim.plugins"。这允许Manim发现用户环境中可用的插件。关于插件的目录结构、构建系统和命名的所有内容完全由作者自行决定。上述模板插件只是一个使用Poetry的模型,因为这是Manim使用的构建系统。插件的入口点可以在Poetry中指定为:

[tool.poetry.plugins."manim.plugins"]
"name" = "object_reference"

在版本0.19.0中移除:插件应显式导入才能在用户代码中使用。插件系统可能会在未来进行重构,以提供更结构化的接口。

关于渲染器兼容性的说明

根据当前激活的渲染器,您的插件中创建的自定义mobjects可能希望表现不同,因为相应的mobject基类(不幸的是)并不完全兼容。

可以通过检查manim.config.renderer的值来查询当前活动的渲染器。所有可能的渲染器类型由constants.RendererType提供。模块manim.mobject.utils包含返回当前活动渲染器基类的实用函数。

对于直接继承自MobjectVMobject的Mobjects,可以通过使用mobject.opengl.opengl_compatibility.ConvertToOpenGL元类来实现一种简单的渲染器兼容性(通过热交换类继承链)。