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