使用方法
閱讀各規則檔案以取得詳細說明和程式碼範例:
核心概念
- rules/scenes.md - InteractiveScene、Scene 類型以及 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 (t2c) 用於數學表達式著色
樣式與外觀
- rules/colors.md - 顏色常數、漸層、RGB、十六進位、GLSL 著色
- rules/styling.md - 填充、筆畫、透明度、背光筆畫、光澤、陰影
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、攝影機控制、重新定向和縮放
- rules/embedding.md - 用於 IPython 除錯的 self.embed()、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 - 標準 2D 場景模板
- templates/interactive_scene.py - 使用 self.embed() 的 InteractiveScene
- templates/3d_scene.py - 使用 frame.reorient() 的 3D 場景
- templates/math_scene.py - 數學推導和方程式
快速參考
基本場景結構
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 指令 | manimgl | manim |
| 數學文字 | Tex(R"\pi") | MathTex(r"\pi") |
| 場景基底 | InteractiveScene | Scene |
| 建立動畫 | ShowCreation | Create |
| 攝影機 | self.frame | self.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
應避免的常見陷阱
- 版本混淆 - 確保使用的是
manimgl,而非manim(社群版本) - ShowCreation 與 Create - ManimGL 使用
ShowCreation,不是Create - Tex 與 MathTex - ManimGL 使用
Tex搭配大寫 R 原始字串 - self.frame 與 self.camera.frame - ManimGL 直接使用
self.frame - fix_in_frame() - 在 mobject 上呼叫,而非場景
- 互動模式 - 使用
-se旗標進行互動式開發
授權與歸屬
此技能包含改編自 3Blue1Brown 的影片儲存庫(Grant Sanderson 所作)的範例程式碼。
授權條款: CC BY-NC-SA 4.0
- 需標示出處 - 需同時標示 3Blue1Brown 與改編者
- 非商業用途 - 不得用於商業目的
- 相同方式分享 - 衍生作品必須使用相同授權條款
詳見 LICENSE.txt 取得完整內容。