使い方
個別のルールファイルを読むと、詳細な説明とコード例が得られます。
基本概念
- rules/scenes.md — InteractiveScene、Sceneの種類、constructメソッド
- rules/mobjects.md — Mobjectの種類、VMobject、グループ、配置
- 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 — テキストモブジェクト、フォント、スタイル
- rules/t2c.md — 数式の色分けのための
tex_to_color_map(t2c)
スタイルと外観
- rules/colors.md — 色定数、グラデーション、RGB、16進数、GLSL色指定
- rules/styling.md — 塗りつぶし、線、不透明度、バックストローク、グロス、影
3Dとカメラ
- rules/3d.md — 3Dオブジェクト、サーフェス、球体、トーラス、パラメトリックサーフェス、ライティング
- 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 — アップデータを使った動的アニメーション
シーンテンプレート
新しいプロジェクトを始める際は、これらのテンプレートをコピーして修正してください:
- 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):
# モブジェクトを作成
circle = Circle()
# シーンに追加(静的)
self.add(circle)
# またはアニメーション
self.play(ShowCreation(circle)) # 注意: Create ではなく ShowCreation
# 待機
self.wait(1)
レンダリングコマンド
# レンダリングしてプレビュー
manimgl scene.py MyScene
# 対話モード - 15行目でシェルに入る
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, center, height)
frame.reorient(45, -30, 0, ORIGIN, 8)
# カメラ移動をアニメーション
self.play(frame.animate.reorient(60, -45, 0))
# 3D移動中にモブジェクトを画面空間に固定
title.fix_in_frame()
TexクラスによるLaTeX
# 大文字Rの生文字列を使う
formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")
# t2cで色分け
formula = 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シェルに入る
3D用の床面設定
self.set_floor_plane("xz") # xyを表示平面にする
テキストの可読性向上のためのバックストローク
text = Text("Label")
text.set_backstroke(BLACK, 5) # テキストの後ろに黒い輪郭
インストール
# ManimGLのインストール
pip install manimgl
# インストール確認
manimgl --version
よくある落とし穴と回避策
- バージョンの混同 —
manimgl(コミュニティ版ではなく)を使用していることを確認 - ShowCreation vs Create — ManimGLでは
CreateではなくShowCreationを使用 - Tex vs MathTex — ManimGLでは大文字Rの生文字列とともに
Texを使用 - self.frame vs self.camera.frame — ManimGLでは
self.frameを直接使用 - fix_in_frame() — シーンではなくモブジェクトに対して呼び出す
- 対話モード — 対話型開発には
-seフラグを使用
ライセンスと帰属
このスキルには、Grant Sandersonによる3Blue1Brownの動画リポジトリから改変したサンプルコードが含まれています。
ライセンス: CC BY-NC-SA 4.0
- 帰属必須 — 3Blue1Brownと改作者の両方をクレジット
- 非営利 — 商用利用は不可
- 継承 — 派生作品は同じライセンスを使用
詳細は LICENSE.txt を参照してください。