Communitygithub.com

manimgl最佳實踐

使用 ManimGL (3b1b 版本) 的全面指南,包含規則、範例、模板及互動開發工作流程。

manimgl最佳實踐 是什麼?

此技能提供 ManimGL(Grant Sanderson 為 3Blue1Brown 影片開發的動畫引擎)的完整最佳實踐指南。它涵蓋核心概念、建立與轉換動畫、文字與數學排版、樣式設定、3D 場景、互動開發以及 CLI 設定。此技能透過規則檔案、可執行的範例腳本和場景模板,幫助開發者避免常見陷阱(例如混淆 `ShowCreation` 與 `Create`),並善用 ManimGL 獨有的互動模式與 `checkpoint_paste()` 功能。無論是在 Claude Code、Cursor 還是其他支援 SKILL.md 格式的 AI 代理中,此技能都能確保使用者快速產出符合 ManimGL 慣例的動畫程式碼。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/adithya-s-k/manim_skill/tree/main/skills/manimgl-best-practices

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

使用方法

閱讀各規則檔案以取得詳細說明和程式碼範例:

核心概念

建立與轉換

文字與數學

樣式與外觀

  • rules/colors.md - 顏色常數、漸層、RGB、十六進位、GLSL 著色
  • rules/styling.md - 填充、筆畫、透明度、背光筆畫、光澤、陰影

3D 與攝影機

  • rules/3d.md - 3D 物件、曲面、Sphere、Torus、參數曲面、光照
  • rules/camera.md - frame.reorient()、尤拉角、fix_in_frame()、攝影機動畫

互動式開發

設定與 CLI

  • rules/cli.md - manimgl 指令、旗標 (-w、-o、-se、-l、-h)、渲染選項
  • rules/config.md - custom_config.yml、目錄、攝影機設定、品質預設

實際範例

完整、經過測試的範例檔案,展示常見模式:

場景模板

複製並修改這些模板以開始新專案:

快速參考

基本場景結構

from manimlib import *

class MyScene(InteractiveScene):
    def construct(self):
        # 建立 mobject
        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

與 ManimCE 的主要差異

功能ManimGL (3b1b)Manim Community
匯入from manimlib import *from manim import *
CLI 指令manimglmanim
數學文字Tex(R"\pi")MathTex(r"\pi")
場景基底InteractiveSceneScene
建立動畫ShowCreationCreate
攝影機self.frameself.camera.frame
固定在畫面中mob.fix_in_frame()self.add_fixed_in_frame_mobjects(mob)
套件名稱manimgl (PyPI)manim (PyPI)

互動式開發工作流程

ManimGL 的殺手級功能是互動式開發:

# 從第 20 行開始,保留狀態
manimgl scene.py MyScene -se 20

在互動模式中:

# 將程式碼複製到剪貼簿,然後執行:
checkpoint_paste()            # 播放動畫執行
checkpoint_paste(skip=True)   # 立即執行(無動畫)
checkpoint_paste(record=True) # 錄製時執行

攝影機控制 (self.frame)

# 取得攝影機畫面
frame = self.frame

# 在 3D 中重新定向(phi, theta, gamma, 中心, 高度)
frame.reorient(45, -30, 0, ORIGIN, 8)

# 動畫化攝影機移動
self.play(frame.animate.reorient(60, -45, 0))

# 將 mobject 固定在螢幕空間中(即使在 3D 移動時)
title.fix_in_frame()

使用 Tex 類別的 LaTeX

# 使用大寫 R 的原始字串
formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")

# 使用 t2c 進行顏色映射
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

設定 3D 地板平面

self.set_floor_plane("xz")  # 使 xy 成為視平面

為文字可讀性加上背光筆畫

text = Text("標籤")
text.set_backstroke(BLACK, 5)  # 文字後方的黑色輪廓

安裝

# 安裝 ManimGL
pip install manimgl

# 檢查安裝
manimgl --version

應避免的常見陷阱

  1. 版本混淆 - 確保使用的是 manimgl,而非 manim(社群版本)
  2. ShowCreation 與 Create - ManimGL 使用 ShowCreation,不是 Create
  3. Tex 與 MathTex - ManimGL 使用 Tex 搭配大寫 R 原始字串
  4. self.frame 與 self.camera.frame - ManimGL 直接使用 self.frame
  5. fix_in_frame() - 在 mobject 上呼叫,而非場景
  6. 互動模式 - 使用 -se 旗標進行互動式開發

授權與歸屬

此技能包含改編自 3Blue1Brown 的影片儲存庫(Grant Sanderson 所作)的範例程式碼。

授權條款: CC BY-NC-SA 4.0

  • 需標示出處 - 需同時標示 3Blue1Brown 與改編者
  • 非商業用途 - 不得用於商業目的
  • 相同方式分享 - 衍生作品必須使用相同授權條款

詳見 LICENSE.txt 取得完整內容。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能