插件

插件是扩展 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.18.1 版本中移除: 插件应明确导入才能在用户代码中使用。插件系统未来可能会被重构,以提供更结构化的接口。

关于渲染器兼容性的注意事项

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

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

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