SuperAPI AI 工具集

manimgl-best-practices

设计与创作

查看项目

更新于 10-13 16:28

技能介绍

用途

ManimGL 最佳实践是一套用于指导智能体使用 ManimGL 制作数学动画的技能资料。当用户提及 “manimgl”“ManimGL”“3b1b manim”,代码中出现 from manimlib import *,或用户运行 manimgl CLI 命令时,该技能会被触发。其目标是提供结构化的规则文件、可运行示例和场景模板,帮助开发者按 ManimGL(即 3Blue1Brown 使用的版本)的方式编写动画代码,而非 Manim Community 版本。

主要能力

资料按主题划分为多个规则文件,每个文件包含详细说明与代码示例:

  • 核心概念:rules/scenes.md(InteractiveScene、场景类型与 construct 方法)、rules/mobjects.md(Mobject 类型、VMobject、Groups 与定位)、rules/animations.md(动画类、播放动画与时间控制)。
  • 创建与变换:rules/creation-animations.md(ShowCreation、Write、FadeIn、DrawBorderThenFill)、rules/transform-animations.md(Transform、ReplacementTransform、TransformMatchingTex)、rules/animation-groups.md(LaggedStart、Succession、AnimationGroup)。
  • 文本与数学:rules/tex.md(Tex 类、原始字符串 R"..."、LaTeX 渲染)、rules/text.md(Text mobject、字体与样式)、rules/t2c.md(tex_to_color_map,用于给数学表达式着色)。
  • 样式与外观:rules/colors.md(颜色常量、渐变、RGB、十六进制、GLSL 着色)、rules/styling.md(填充、描边、透明度、backstroke、光泽、阴影)。
  • 3D 与相机:rules/3d.md(3D 对象、曲面、Sphere、Torus、参数曲面、光照)、rules/camera.md(frame.reorient()、欧拉角、fix_in_frame()、相机动画)。
  • 交互式开发:rules/interactive.md(-se 标志的交互模式、checkpoint_paste())、rules/frame.md(self.frame、相机控制、reorient 与缩放)、rules/embedding.md(self.embed() 用于 IPython 调试、touch() 模式)。
  • 配置与 CLI:rules/cli.md(manimgl 命令、标志 -w、-o、-se、-l、-h 及渲染选项)、rules/config.md(custom_config.yml、目录、相机设置、画质预设)。

此外还提供完整的已测试示例文件:examples/basic_animations.py(基础形状、文本与动画)、examples/math_visualization.py(LaTeX 公式与数学内容)、examples/graph_plotting.py(坐标轴、函数与绘图)、examples/3d_visualization.py(3D 场景与相机控制)、examples/updater_patterns.py(使用 updater 的动态动画)。以及场景模板:templates/basic_scene.py、templates/interactive_scene.py、templates/3d_scene.py、templates/math_scene.py,可直接复制修改以启动新项目。

使用方式

基础场景结构与渲染命令如下(内容来自资料,未做改动):

from manimlib import *

class MyScene(InteractiveScene):
    def construct(self):
        circle = Circle()
        self.add(circle)
        self.play(ShowCreation(circle))  # 注意:是 ShowCreation,不是 Create
        self.wait(1)

渲染命令:

# 渲染并预览
manimgl scene.py MyScene

# 交互模式 - 在第 15 行进入 shell
manimgl scene.py MyScene -se 15

# 写入文件
manimgl scene.py MyScene -w

# 低画质用于测试
manimgl scene.py MyScene -l

交互式开发工作流(资料称其为 ManimGL 的核心特性):

manimgl scene.py MyScene -se 20

在交互模式中:

checkpoint_paste()            # 带动画运行
checkpoint_paste(skip=True)   # 立即运行(无动画)
checkpoint_paste(record=True) # 运行时录制

相机控制(self.frame):

frame = self.frame
frame.reorient(45, -30, 0, ORIGIN, 8)
self.play(frame.animate.reorient(60, -45, 0))
title.fix_in_frame()

LaTeX 与 Tex 类:

formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")
equation = Tex(R"E = mc^2", t2c={"E": BLUE, "m": GREEN, "c": YELLOW})
formula = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")
formula.set_color_by_tex("n", BLUE)

常见模式:

def construct(self):
    circle = Circle()
    self.play(ShowCreation(circle))
    self.embed()  # 在此处进入 IPython shell
self.set_floor_plane("xz")
text = Text("Label")
text.set_backstroke(BLACK, 5)

安装:

pip install manimgl
manimgl --version

与 Manim Community 的关键差异

资料列出以下差异表:

  • 导入:ManimGL 为 from manimlib import *,社区版为 from manim import *。
  • CLI:ManimGL 为 manimgl,社区版为 manim。
  • 数学文本:ManimGL 为 Tex(R"\pi"),社区版为 MathTex(r"\pi")。
  • 场景:ManimGL 为 InteractiveScene,社区版为 Scene。
  • 创建动画:ManimGL 为 ShowCreation,社区版为 Create。
  • 相机:ManimGL 为 self.frame,社区版为 self.camera.frame。
  • 固定于画面:ManimGL 为 mob.fix_in_frame(),社区版为 self.add_fixed_in_frame_mobjects(mob)。
  • 包:ManimGL 为 PyPI 上的 manimgl,社区版为 manim。

适用场景

适合需要制作数学可视化、公式推导、函数绘图、三维几何演示等动画的开发者与研究者,尤其是已经使用或打算使用 ManimGL(3Blue1Brown 版本)的用户。交互式开发流程适合反复调参与调试。

限制与注意事项

资料列出常见陷阱:版本混淆(确保使用 manimgl 而非社区版 manim)、ShowCreation vs Create、Tex vs MathTex、self.frame vs self.camera.frame、fix_in_frame() 应作用于 mobject 而非场景、交互模式使用 -se 标志。

该资料未提供关于收费、价格、支持平台、渲染性能等方面的信息,相关内容暂未提供。

许可与署名

示例代码改编自 Grant Sanderson 的 3Blue1Brown 视频仓库。许可为 CC BY-NC-SA 4.0:需要署名(同时注明 3Blue1Brown 与适配者)、禁止商业用途、衍生作品须使用相同许可。完整细节见 LICENSE.txt。