插件¶
插件是扩展 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
包含返回当前激活渲染器基类的实用函数。
对于直接继承自 Mobject
或 VMobject
的 Mobject,可以通过使用 mobject.opengl.opengl_compatibility.ConvertToOpenGL
元类来实现渲染器兼容性的一种简单形式(通过热插拔类继承链)。