How to use
Read individual rule files for detailed explanations and code examples:
Core Concepts
- rules/scenes.md - InteractiveScene, Scene types, and construct method
- rules/mobjects.md - Mobject types, VMobject, Groups, and positioning
- rules/animations.md - Animation classes, playing animations, and timing
Creation & Transformation
- rules/creation-animations.md - ShowCreation, Write, FadeIn, DrawBorderThenFill
- rules/transform-animations.md - Transform, ReplacementTransform, TransformMatchingTex
- rules/animation-groups.md - LaggedStart, Succession, AnimationGroup
Text & Math
- rules/tex.md - Tex class, raw strings R"...", and LaTeX rendering
- rules/text.md - Text mobjects, fonts, and styling
- rules/t2c.md - tex_to_color_map (t2c) for coloring math expressions
Styling & Appearance
- rules/colors.md - Color constants, gradients, RGB, hex, GLSL coloring
- rules/styling.md - Fill, stroke, opacity, backstroke, gloss, shadow
3D & Camera
- rules/3d.md - 3D objects, surfaces, Sphere, Torus, parametric surfaces, lighting
- rules/camera.md - frame.reorient(), Euler angles, fix_in_frame(), camera animations
Interactive Development
- rules/interactive.md - Interactive mode with
-se flag, checkpoint_paste()
- rules/frame.md - self.frame, camera control, reorient, and zooming
- rules/embedding.md - self.embed() for IPython debugging, touch() mode
Configuration & CLI
- rules/cli.md - manimgl command, flags (-w, -o, -se, -l, -h), rendering options
- rules/config.md - custom_config.yml, directories, camera settings, quality presets
Working Examples
Complete, tested example files demonstrating common patterns:
- examples/basic_animations.py - Basic shapes, text, and animations
- examples/math_visualization.py - LaTeX equations and mathematical content
- examples/graph_plotting.py - Axes, functions, and graphing
- examples/3d_visualization.py - 3D scenes with camera control and surfaces
- examples/updater_patterns.py - Dynamic animations with updaters
Scene Templates
Copy and modify these templates to start new projects:
- templates/basic_scene.py - Standard 2D scene template
- templates/interactive_scene.py - InteractiveScene with self.embed()
- templates/3d_scene.py - 3D scene with frame.reorient()
- templates/math_scene.py - Mathematical derivations and equations
Quick Reference
Basic Scene Structure
from manimlib import *
class MyScene(InteractiveScene):
def construct(self):
# Create mobjects
circle = Circle()
# Add to scene (static)
self.add(circle)
# Or animate
self.play(ShowCreation(circle)) # Note: ShowCreation, not Create
# Wait
self.wait(1)
Render Command
# Render and preview
manimgl scene.py MyScene
# Interactive mode - drop into shell at line 15
manimgl scene.py MyScene -se 15
# Write to file
manimgl scene.py MyScene -w
# Low quality for testing
manimgl scene.py MyScene -l
Key Differences from ManimCE
| Feature |
ManimGL (3b1b) |
Manim Community |
| Import |
from manimlib import * |
from manim import * |
| CLI |
manimgl |
manim |
| Math text |
Tex(R"\pi") |
MathTex(r"\pi") |
| Scene |
InteractiveScene |
Scene |
| Create anim |
ShowCreation |
Create |
| Camera |
self.frame |
self.camera.frame |
| Fix in frame |
mob.fix_in_frame() |
self.add_fixed_in_frame_mobjects(mob) |
| Package |
manimgl (PyPI) |
manim (PyPI) |
Interactive Development Workflow
ManimGL's killer feature is interactive development:
# Start at line 20 with state preserved
manimgl scene.py MyScene -se 20
In interactive mode:
# Copy code to clipboard, then run:
checkpoint_paste() # Run with animations
checkpoint_paste(skip=True) # Run instantly (no animations)
checkpoint_paste(record=True) # Record while running
Camera Control (self.frame)
# Get the camera frame
frame = self.frame
# Reorient in 3D (phi, theta, gamma, center, height)
frame.reorient(45, -30, 0, ORIGIN, 8)
# Animate camera movement
self.play(frame.animate.reorient(60, -45, 0))
# Fix mobjects to stay in screen space during 3D movement
title.fix_in_frame()
LaTeX with Tex class
# Use raw strings with capital R
formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")
# Color mapping with t2c
equation = Tex(
R"E = mc^2",
t2c={"E": BLUE, "m": GREEN, "c": YELLOW}
)
# Isolate substrings for animation
formula = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")
formula.set_color_by_tex("n", BLUE)
Common Patterns
Embedding for debugging
def construct(self):
circle = Circle()
self.play(ShowCreation(circle))
self.embed() # Drops into IPython shell here
Set floor plane for 3D
self.set_floor_plane("xz") # Makes xy the viewing plane
Backstroke for text readability
text = Text("Label")
text.set_backstroke(BLACK, 5) # Black outline behind text
Installation
# Install ManimGL
pip install manimgl
# Check installation
manimgl --version
Common Pitfalls to Avoid
- Version confusion - Ensure you're using
manimgl, not manim (community version)
- ShowCreation vs Create - ManimGL uses
ShowCreation, not Create
- Tex vs MathTex - ManimGL uses
Tex with capital R raw strings
- self.frame vs self.camera.frame - ManimGL uses
self.frame directly
- fix_in_frame() - Call on the mobject, not the scene
- Interactive mode - Use
-se flag for interactive development
License & Attribution
This skill contains example code adapted from 3Blue1Brown's video repository by Grant Sanderson.
License: CC BY-NC-SA 4.0
- Attribution required - Credit both 3Blue1Brown and the adapter
- NonCommercial - Not for commercial use
- ShareAlike - Derivatives must use the same license
See LICENSE.txt for full details.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: adithya-s-k-manim-skill-manimgl-best-practices3description: How to use4---56## How to use78Read individual rule files for detailed explanations and code examples:910### Core Concepts11- [rules/scenes.md](rules/scenes.md) - InteractiveScene, Scene types, and construct method12- [rules/mobjects.md](rules/mobjects.md) - Mobject types, VMobject, Groups, and positioning13- [rules/animations.md](rules/animations.md) - Animation classes, playing animations, and timing1415### Creation & Transformation16- [rules/creation-animations.md](rules/creation-animations.md) - ShowCreation, Write, FadeIn, DrawBorderThenFill17- [rules/transform-animations.md](rules/transform-animations.md) - Transform, ReplacementTransform, TransformMatchingTex18- [rules/animation-groups.md](rules/animation-groups.md) - LaggedStart, Succession, AnimationGroup1920### Text & Math21- [rules/tex.md](rules/tex.md) - Tex class, raw strings R"...", and LaTeX rendering22- [rules/text.md](rules/text.md) - Text mobjects, fonts, and styling23- [rules/t2c.md](rules/t2c.md) - tex_to_color_map (t2c) for coloring math expressions2425### Styling & Appearance26- [rules/colors.md](rules/colors.md) - Color constants, gradients, RGB, hex, GLSL coloring27- [rules/styling.md](rules/styling.md) - Fill, stroke, opacity, backstroke, gloss, shadow2829### 3D & Camera30- [rules/3d.md](rules/3d.md) - 3D objects, surfaces, Sphere, Torus, parametric surfaces, lighting31- [rules/camera.md](rules/camera.md) - frame.reorient(), Euler angles, fix_in_frame(), camera animations3233### Interactive Development34- [rules/interactive.md](rules/interactive.md) - Interactive mode with `-se` flag, checkpoint_paste()35- [rules/frame.md](rules/frame.md) - self.frame, camera control, reorient, and zooming36- [rules/embedding.md](rules/embedding.md) - self.embed() for IPython debugging, touch() mode3738### Configuration & CLI39- [rules/cli.md](rules/cli.md) - manimgl command, flags (-w, -o, -se, -l, -h), rendering options40- [rules/config.md](rules/config.md) - custom_config.yml, directories, camera settings, quality presets4142## Working Examples4344Complete, tested example files demonstrating common patterns:4546- [examples/basic_animations.py](examples/basic_animations.py) - Basic shapes, text, and animations47- [examples/math_visualization.py](examples/math_visualization.py) - LaTeX equations and mathematical content48- [examples/graph_plotting.py](examples/graph_plotting.py) - Axes, functions, and graphing49- [examples/3d_visualization.py](examples/3d_visualization.py) - 3D scenes with camera control and surfaces50- [examples/updater_patterns.py](examples/updater_patterns.py) - Dynamic animations with updaters5152## Scene Templates5354Copy and modify these templates to start new projects:5556- [templates/basic_scene.py](templates/basic_scene.py) - Standard 2D scene template57- [templates/interactive_scene.py](templates/interactive_scene.py) - InteractiveScene with self.embed()58- [templates/3d_scene.py](templates/3d_scene.py) - 3D scene with frame.reorient()59- [templates/math_scene.py](templates/math_scene.py) - Mathematical derivations and equations6061## Quick Reference6263### Basic Scene Structure64```python65from manimlib import *6667class MyScene(InteractiveScene):68 def construct(self):69 # Create mobjects70 circle = Circle()7172 # Add to scene (static)73 self.add(circle)7475 # Or animate76 self.play(ShowCreation(circle)) # Note: ShowCreation, not Create7778 # Wait79 self.wait(1)80```8182### Render Command83```bash84# Render and preview85manimgl scene.py MyScene8687# Interactive mode - drop into shell at line 1588manimgl scene.py MyScene -se 158990# Write to file91manimgl scene.py MyScene -w9293# Low quality for testing94manimgl scene.py MyScene -l95```9697### Key Differences from ManimCE9899| Feature | ManimGL (3b1b) | Manim Community |100|---------|----------------|-----------------|101| Import | `from manimlib import *` | `from manim import *` |102| CLI | `manimgl` | `manim` |103| Math text | `Tex(R"\pi")` | `MathTex(r"\pi")` |104| Scene | `InteractiveScene` | `Scene` |105| Create anim | `ShowCreation` | `Create` |106| Camera | `self.frame` | `self.camera.frame` |107| Fix in frame | `mob.fix_in_frame()` | `self.add_fixed_in_frame_mobjects(mob)` |108| Package | `manimgl` (PyPI) | `manim` (PyPI) |109110### Interactive Development Workflow111112ManimGL's killer feature is interactive development:113114```bash115# Start at line 20 with state preserved116manimgl scene.py MyScene -se 20117```118119In interactive mode:120```python121# Copy code to clipboard, then run:122checkpoint_paste() # Run with animations123checkpoint_paste(skip=True) # Run instantly (no animations)124checkpoint_paste(record=True) # Record while running125```126127### Camera Control (self.frame)128129```python130# Get the camera frame131frame = self.frame132133# Reorient in 3D (phi, theta, gamma, center, height)134frame.reorient(45, -30, 0, ORIGIN, 8)135136# Animate camera movement137self.play(frame.animate.reorient(60, -45, 0))138139# Fix mobjects to stay in screen space during 3D movement140title.fix_in_frame()141```142143### LaTeX with Tex class144145```python146# Use raw strings with capital R147formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")148149# Color mapping with t2c150equation = Tex(151 R"E = mc^2",152 t2c={"E": BLUE, "m": GREEN, "c": YELLOW}153)154155# Isolate substrings for animation156formula = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")157formula.set_color_by_tex("n", BLUE)158```159160### Common Patterns161162#### Embedding for debugging163```python164def construct(self):165 circle = Circle()166 self.play(ShowCreation(circle))167 self.embed() # Drops into IPython shell here168```169170#### Set floor plane for 3D171```python172self.set_floor_plane("xz") # Makes xy the viewing plane173```174175#### Backstroke for text readability176```python177text = Text("Label")178text.set_backstroke(BLACK, 5) # Black outline behind text179```180181### Installation182183```bash184# Install ManimGL185pip install manimgl186187# Check installation188manimgl --version189```190191### Common Pitfalls to Avoid1921931. **Version confusion** - Ensure you're using `manimgl`, not `manim` (community version)1942. **ShowCreation vs Create** - ManimGL uses `ShowCreation`, not `Create`1953. **Tex vs MathTex** - ManimGL uses `Tex` with capital R raw strings1964. **self.frame vs self.camera.frame** - ManimGL uses `self.frame` directly1975. **fix_in_frame()** - Call on the mobject, not the scene1986. **Interactive mode** - Use `-se` flag for interactive development199200## License & Attribution201202This skill contains example code adapted from [3Blue1Brown's video repository](https://github.com/3b1b/videos) by Grant Sanderson.203204**License:** [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)205206- **Attribution required** - Credit both 3Blue1Brown and the adapter207- **NonCommercial** - Not for commercial use208- **ShareAlike** - Derivatives must use the same license209210See [LICENSE.txt](LICENSE.txt) for full details.211212---213> Converted and distributed by [TomeVault](https://tomevault.io/claim/adithya-s-k) — claim your Tome and manage your conversions.214<!-- tomevault:4.0:skill_md:2026-04-11 -->