manim-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +104 -0
  2. package/dist/demo.mp4 +0 -0
  3. package/dist/index.js +65 -0
  4. package/dist/mcp-app.html +142 -0
  5. package/dist/server.js +1492 -0
  6. package/package.json +67 -0
  7. package/references/composer/SKILL.md +154 -0
  8. package/references/composer/references/3b1b-series-patterns.md +217 -0
  9. package/references/composer/references/domain-planning-guides/calculus-planning.md +188 -0
  10. package/references/composer/references/domain-planning-guides/linear-algebra-planning.md +169 -0
  11. package/references/composer/references/domain-planning-guides/ml-planning.md +286 -0
  12. package/references/composer/references/domain-planning-guides/number-theory-planning.md +187 -0
  13. package/references/composer/references/domain-planning-guides/physics-planning.md +249 -0
  14. package/references/composer/references/domain-planning-guides/probability-planning.md +200 -0
  15. package/references/composer/references/mathematical-storytelling.md +359 -0
  16. package/references/composer/references/narrative-patterns.md +221 -0
  17. package/references/composer/references/opening-patterns.md +284 -0
  18. package/references/composer/references/pacing-guide.md +289 -0
  19. package/references/composer/references/scene-archetypes.md +534 -0
  20. package/references/composer/references/scene-examples.md +379 -0
  21. package/references/composer/references/visual-techniques.md +480 -0
  22. package/references/composer/templates/scenes-template.md +147 -0
  23. package/references/manimce/SKILL.md +166 -0
  24. package/references/manimce/examples/3d_visualization.py +373 -0
  25. package/references/manimce/examples/basic_animations.py +212 -0
  26. package/references/manimce/examples/graph_plotting.py +401 -0
  27. package/references/manimce/examples/lorenz_attractor.py +172 -0
  28. package/references/manimce/examples/math_visualization.py +315 -0
  29. package/references/manimce/examples/updater_patterns.py +369 -0
  30. package/references/manimce/rules/3b1b-translation.md +594 -0
  31. package/references/manimce/rules/3d.md +254 -0
  32. package/references/manimce/rules/advanced-animations.md +594 -0
  33. package/references/manimce/rules/animation-groups.md +212 -0
  34. package/references/manimce/rules/animations.md +128 -0
  35. package/references/manimce/rules/api-pitfalls.md +89 -0
  36. package/references/manimce/rules/axes.md +214 -0
  37. package/references/manimce/rules/camera.md +208 -0
  38. package/references/manimce/rules/cli.md +232 -0
  39. package/references/manimce/rules/color-conventions.md +444 -0
  40. package/references/manimce/rules/colors.md +199 -0
  41. package/references/manimce/rules/config.md +264 -0
  42. package/references/manimce/rules/creation-animations.md +158 -0
  43. package/references/manimce/rules/graphing.md +233 -0
  44. package/references/manimce/rules/grouping.md +220 -0
  45. package/references/manimce/rules/latex.md +202 -0
  46. package/references/manimce/rules/lines.md +241 -0
  47. package/references/manimce/rules/long-form-video.md +552 -0
  48. package/references/manimce/rules/mathematical-domains.md +689 -0
  49. package/references/manimce/rules/mobjects.md +116 -0
  50. package/references/manimce/rules/multi-scene-composition.md +112 -0
  51. package/references/manimce/rules/pedagogy.md +532 -0
  52. package/references/manimce/rules/physics-simulations.md +610 -0
  53. package/references/manimce/rules/positioning.md +211 -0
  54. package/references/manimce/rules/scenes.md +121 -0
  55. package/references/manimce/rules/shapes.md +300 -0
  56. package/references/manimce/rules/styling.md +177 -0
  57. package/references/manimce/rules/text-animations.md +222 -0
  58. package/references/manimce/rules/text.md +189 -0
  59. package/references/manimce/rules/timing.md +227 -0
  60. package/references/manimce/rules/transform-animations.md +157 -0
  61. package/references/manimce/rules/updaters.md +226 -0
  62. package/references/manimce/templates/basic_scene.py +64 -0
  63. package/references/manimce/templates/camera_scene.py +100 -0
  64. package/references/manimce/templates/threed_scene.py +138 -0
@@ -0,0 +1,284 @@
1
+ # 3Blue1Brown Opening Patterns
2
+
3
+ How 3b1b opens videos, derived from analysis of 400+ video source files (2015-2026). The opening 30-90 seconds determines whether a viewer stays. Grant uses several distinct patterns, often combining them.
4
+
5
+ ---
6
+
7
+ ## Pattern 1: The Opening Quote
8
+
9
+ Used extensively in the Essence of Linear Algebra series (every chapter) and occasionally elsewhere. An `OpeningQuote` scene class displays a formatted quote with author attribution.
10
+
11
+ ### Implementation
12
+
13
+ ```python
14
+ class OpeningQuote(Scene):
15
+ def construct(self):
16
+ words = OldTexText("``Quote text here.''")
17
+ words.set_width(2 * (FRAME_X_RADIUS - 1))
18
+ words.to_edge(UP)
19
+ # Color-highlight key phrases
20
+ words.set_color_by_tex("key phrase", GREEN)
21
+
22
+ author = OldTexText("-Author Name")
23
+ author.set_color(YELLOW)
24
+ author.next_to(words, DOWN, buff=0.5)
25
+
26
+ self.play(FadeIn(words))
27
+ self.wait(3)
28
+ self.play(Write(author, run_time=5))
29
+ self.wait()
30
+ ```
31
+
32
+ ### Actual Quotes Used (EoLA)
33
+
34
+ | Chapter | Quote | Author | Why It Works |
35
+ |---------|-------|--------|--------------|
36
+ | Ch 0 | "There is hardly any theory more elementary than linear algebra, in spite of...preposterous calculations with matrices." | Jean Dieudonne | Sets up the thesis: intuition over computation |
37
+ | Ch 1 | "The introduction of numbers as coordinates is an act of violence." | Hermann Weyl | Frames coordinates as a choice, not reality |
38
+ | Ch 2 | "Mathematics requires a small dose not of genius but of an imaginative freedom..." | Angus K. Rodgers | Encourages creative thinking |
39
+ | Ch 3 | "Unfortunately, no one can be told what the Matrix is. You have to see it for yourself." | Morpheus | Perfect pun + pop culture hook |
40
+ | Ch 4 | "It is my experience that proofs involving matrices can be shortened by 50%..." | Emil Artin | Reinforces compositional thinking |
41
+ | Ch 5 | "The purpose of computation is insight, not numbers." | Richard Hamming | Why visualization matters |
42
+ | Ch 6 | "The essence of mathematics lies in its freedom." | Georg Cantor | The determinant captures geometric essence |
43
+ | Ch 8 | "Every dimension is special." | Jeff Lagarias | Non-square matrices cross dimensions |
44
+ | Ch 8.5 | "[From Grothendieck] difficulty means we have not understood..." | Pierre Deligne | Elegant proofs over hard proofs |
45
+ | Ch 9 | "Mathematics...gives the same name to different things" | Henri Poincare | Duality between dot product and projection |
46
+ | Ch 10 | "What does 'mathematics' mean to you?" / "What does 'music' mean to you?" | Serge Lang | Basis as language, change of basis as translation |
47
+ | Ch 11 | "Axioms are not obvious...difficult for the uninitiated" | Vladimir Arnold | Abstract eigenvalue theory needs grounding |
48
+
49
+ ### When to Use Opening Quotes
50
+
51
+ - Series with intellectual gravitas (foundational math courses)
52
+ - When a famous quote perfectly encapsulates the video's thesis
53
+ - To signal "this is part of a thoughtful curriculum"
54
+ - NOT for standalone puzzle/fun videos
55
+
56
+ ---
57
+
58
+ ## Pattern 2: Mystery First (Surprising Result)
59
+
60
+ Present a result that seems impossible or surprising, then promise to explain it. This is Grant's most common opening for standalone videos.
61
+
62
+ ### Examples from Actual Videos
63
+
64
+ **Colliding Blocks (2019)**: "Imagine two sliding blocks, where one is much heavier. The small block bounces off the wall. Count the total collisions. With a mass ratio of 100:1, you get 31 collisions. With 10,000:1, you get 314. With 1,000,000:1, you get 3,141. Why is pi showing up?"
65
+
66
+ **Basel Problem / Sum of 1/n^2 (2018)**: Start by writing `1 + 1/4 + 1/9 + 1/16 + ... = pi^2/6`. The equation sits there, looking absurd. Why would squaring natural numbers, taking reciprocals, and summing produce pi?
67
+
68
+ **Borwein Integrals (2022)**: Show a sequence of integrals that all equal pi: integral of sinc(x), integral of sinc(x)*sinc(x/3), ... then suddenly one does NOT equal pi. "What goes wrong?"
69
+
70
+ **Moser's Circle Problem (2023)**: Points on a circle connected by lines create regions. 1, 2, 4, 8, 16... then 31 (not 32). "The pattern breaks."
71
+
72
+ ### Implementation Pattern
73
+
74
+ ```
75
+ 1. Show the surprising result (30 seconds)
76
+ - Display equation/number/visual that seems wrong
77
+ - Let it sit. Use self.wait(2) to build tension.
78
+ - Optionally: Pi creature with "confused" or "surprised" expression
79
+
80
+ 2. Acknowledge the surprise (10 seconds)
81
+ - "If this seems surprising, good..."
82
+ - "Your first instinct might be that this is wrong..."
83
+
84
+ 3. Promise the explanation (10 seconds)
85
+ - "By the end of this video, you'll see why this has to be true."
86
+ - "The answer involves a beautiful connection to..."
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Pattern 3: Physical Scenario Opening
92
+
93
+ Open with a concrete physical setup before any math appears. Let the viewer SEE the problem.
94
+
95
+ ### Examples
96
+
97
+ **Pendulum / DiffEq Part 1 (2019)**: A pendulum swings on screen. No equations. Just watch it move. THEN ask "How would you describe this motion mathematically?"
98
+
99
+ **Heat Equation / DiffEq Part 2 (2019)**: Show a temperature distribution on a rod. Colors indicate temperature. Watch heat flow. THEN introduce the PDE.
100
+
101
+ **Cosmic Distance (2025)**: Show the night sky with stars at different depths. How do we know how far away they are? Parallax visualization with 3D `GlowDots` and Earth orbit.
102
+
103
+ **Optics Puzzles (2023)**: `OscillatingWave` objects propagating through media. The visual IS the question -- why does light slow down in glass?
104
+
105
+ ### Implementation Pattern
106
+
107
+ ```
108
+ 1. Show the physical system (30-60 seconds)
109
+ - Simulation running (pendulum, blocks, particles)
110
+ - No equations, no narration about math
111
+ - Let the viewer's curiosity build naturally
112
+
113
+ 2. Pose the natural question (15 seconds)
114
+ - "How would you predict what happens next?"
115
+ - "What determines the outcome?"
116
+
117
+ 3. Transition to mathematical framework (30 seconds)
118
+ - Introduce variables, axes, coordinate system
119
+ - Map physical quantities to mathematical objects
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Pattern 4: Question-Driven Opening
125
+
126
+ Open with a conceptual question that reframes a familiar idea.
127
+
128
+ ### Examples
129
+
130
+ **EoLA Ch 1 (2016)**: "What are vectors?" -- presented through three different Pi creature perspectives (physicist, CS student, mathematician). Each has a different answer.
131
+
132
+ **EoC Ch 2 (2017)**: "What does it mean for something to change instantaneously?" -- the derivative paradox.
133
+
134
+ **EoC Ch 5 (2017)**: "What's so special about e?" -- why THIS number, out of all numbers?
135
+
136
+ **Uncertainty Principle (2018)**: "What does it mean for a sound to have a frequency?"
137
+
138
+ **Bayes Theorem (2019/2020)**: "Most people get this probability question wrong. Here's why."
139
+
140
+ ### Implementation Pattern
141
+
142
+ ```
143
+ 1. State the question simply (15 seconds)
144
+ - Text or spoken, centered on screen
145
+ - Often uses Tex or Text with emphasis coloring
146
+
147
+ 2. Show why it's harder than it looks (30 seconds)
148
+ - Present the naive answer
149
+ - Show why it's incomplete or wrong
150
+ - Pi creature reactions: confusion, frustration
151
+
152
+ 3. Reframe with clarity (15 seconds)
153
+ - "A better question is..."
154
+ - "What we really need is..."
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Pattern 5: Pi Creature Classroom Opening
160
+
161
+ Used for lighter topics, series introductions, or when establishing rapport.
162
+
163
+ ### Examples
164
+
165
+ **SoME1 Announcement (2021)**: `TeacherStudentsScene` with Mortimer (teacher) explaining the contest to students.
166
+
167
+ **Moser Reboot (2023)**: Student asks a question, teacher responds with a visual.
168
+
169
+ **CLT Wordy Scenes (2023)**: `ThreeAssumptions` -- Pi creatures discuss when the CLT applies.
170
+
171
+ ### Implementation
172
+
173
+ ```python
174
+ class IntroScene(TeacherStudentsScene):
175
+ def construct(self):
176
+ self.play(
177
+ self.teacher.says("Today we'll talk about..."),
178
+ self.change_students("happy", "pondering", "erm")
179
+ )
180
+ self.wait()
181
+ self.play(
182
+ self.students[1].says(
183
+ "Doesn't it depend on\nwhere the points are?",
184
+ mode="sassy"
185
+ ),
186
+ self.teacher.change("guilty", self.students[1].eyes)
187
+ )
188
+ ```
189
+
190
+ ### Teacher-Student Emotional Modes
191
+
192
+ From the codebase, Pi creatures use these modes:
193
+ - **Students**: `"confused"`, `"pondering"`, `"sassy"`, `"erm"`, `"happy"`, `"horrified"`, `"angry"`, `"surprised"`, `"thinking"`, `"plain"`
194
+ - **Teacher (Mortimer)**: `"raise_right_hand"`, `"happy"`, `"tease"`, `"guilty"`, `"hesitant"`, `"surprised"`
195
+
196
+ ---
197
+
198
+ ## Pattern 6: Historical Narrative Opening
199
+
200
+ Open with a historical figure or discovery, creating narrative momentum.
201
+
202
+ ### Examples
203
+
204
+ **Galois Theory (2022)**: Galois's story -- the night before his fatal duel, scribbling mathematics. Uses `OutpaintTransition` for artwork panning, `LastWordsQuote` and `NightBeforeQuote` for historical text.
205
+
206
+ **Lost Lecture / Feynman (2018)**: "There's a famous lecture by Feynman..."
207
+
208
+ **Basel Problem (2018)**: "Euler solved this problem in 1734..."
209
+
210
+ **Cosmic Distance / Venus Transit (2025)**: Historical timeline with `GlowDots` showing when key measurements were made.
211
+
212
+ ---
213
+
214
+ ## Pattern 7: Result Preview + Promise
215
+
216
+ Show the end result of the video up front, then rewind to explain how we get there.
217
+
218
+ ### Examples
219
+
220
+ **Fourier Series (2019)**: Show the final rotating-vector drawing (epicycles tracing a complex shape). "By the end of this video, you'll understand how this works."
221
+
222
+ **Fourier (2018)**: The frequency decomposition of audio is shown immediately, then the video explains how it works.
223
+
224
+ **Neural Network Part 1 (2017)**: Show a trained network recognizing digits. Then rewind: "But what IS a neural network?"
225
+
226
+ ### Implementation Pattern
227
+
228
+ ```
229
+ 1. Show the impressive end state (30-45 seconds)
230
+ - Complex animation, completed visualization
231
+ - The "wow" moment that the video will build toward
232
+
233
+ 2. Acknowledge it looks complex (10 seconds)
234
+ - "This might look intimidating..."
235
+ - "There's a lot going on here..."
236
+
237
+ 3. Promise simplicity (10 seconds)
238
+ - "But it's built from very simple pieces."
239
+ - "Let's start from the beginning."
240
+
241
+ 4. Reset/clear the scene (5 seconds)
242
+ - FadeOut everything
243
+ - Clean slate for the actual explanation
244
+ ```
245
+
246
+ ---
247
+
248
+ ## Combining Opening Patterns
249
+
250
+ Most strong videos combine 2-3 patterns:
251
+
252
+ | Video | Primary Pattern | Secondary Pattern |
253
+ |-------|----------------|-------------------|
254
+ | Colliding Blocks | Mystery First | Physical Scenario |
255
+ | EoLA chapters | Opening Quote | Question-Driven |
256
+ | DiffEq Part 1 | Physical Scenario | Question-Driven |
257
+ | Neural Networks | Result Preview | Question-Driven |
258
+ | Borwein Integrals | Mystery First | Pi Creature Classroom |
259
+ | Fourier Series | Result Preview | Physical Scenario |
260
+ | Galois Theory | Historical Narrative | Mystery First |
261
+
262
+ ---
263
+
264
+ ## Opening Timing Guidelines
265
+
266
+ | Component | Duration | Notes |
267
+ |-----------|----------|-------|
268
+ | Quote display | 8-12 seconds | FadeIn quote (1s), wait (3-4s), Write author (4-5s), wait (1s) |
269
+ | Surprising result | 15-30 seconds | Show result, let it sit, acknowledge surprise |
270
+ | Physical simulation | 30-60 seconds | Let the simulation run, no rushing |
271
+ | Question statement | 10-20 seconds | Clear text, emphasis on key words |
272
+ | Pi creature dialogue | 20-40 seconds | 2-3 exchanges max before moving on |
273
+ | Promise/transition | 10-15 seconds | Brief bridge to main content |
274
+ | **Total opening** | **30-90 seconds** | Shorter for focused videos, longer for series openers |
275
+
276
+ ---
277
+
278
+ ## Anti-Patterns (What NOT to Do)
279
+
280
+ 1. **Don't open with definitions**: "A vector space is a set V with two operations..." -- NO. Start with WHY.
281
+ 2. **Don't open with prerequisites**: "Before we start, you need to know X, Y, Z..." -- weave prerequisites in as needed.
282
+ 3. **Don't open with apologies**: "This is a hard topic..." -- instead, make it a challenge: "This is going to be fun."
283
+ 4. **Don't show the full equation first**: Build to it. The full equation is the PAYOFF, not the opening.
284
+ 5. **Don't open with credits/logos**: Get to the content immediately. Credits come at the end.
@@ -0,0 +1,289 @@
1
+ # 3Blue1Brown Pacing Guide
2
+
3
+ Detailed pacing analysis derived from 400+ 3b1b video source files. This covers timing at every level: overall video structure, scene-level pacing, animation timing, and wait/pause patterns.
4
+
5
+ ---
6
+
7
+ ## Overall Video Structure
8
+
9
+ ### Timing by Video Length
10
+
11
+ | Video Length | Opening Hook | Core Content | Recap/Implications | Pi Creature Interludes |
12
+ |-------------|-------------|-------------|--------------------|-----------------------|
13
+ | 5-10 min | 30-60s | 4-8 min | 30-60s | 0-1 (15-30s each) |
14
+ | 15-20 min | 60-90s | 12-16 min | 1-2 min | 2-3 (15-30s each) |
15
+ | 25-30 min | 90-120s | 20-25 min | 2-3 min | 3-5 (15-30s each) |
16
+ | 30+ min | 2-3 min | 24-28 min | 2-4 min | 4-6 (15-30s each) |
17
+
18
+ ### The Three-Act Structure
19
+
20
+ Most 3b1b videos follow a three-act structure:
21
+
22
+ **Act 1 (15-20% of runtime)**: Setup
23
+ - Hook / surprising result / question
24
+ - Establish the problem domain
25
+ - Introduce visual vocabulary
26
+ - Set expectations for what we'll learn
27
+
28
+ **Act 2 (60-70% of runtime)**: Investigation
29
+ - Build concepts progressively
30
+ - Multiple examples, increasing complexity
31
+ - Key insight / "aha moment" at 60-70% mark
32
+ - Pi creature interludes for emotional resets
33
+
34
+ **Act 3 (15-20% of runtime)**: Resolution
35
+ - Connect back to the opening hook
36
+ - Broader implications
37
+ - "Where does this lead?" forward reference
38
+ - End screen
39
+
40
+ ---
41
+
42
+ ## Scene-Level Pacing
43
+
44
+ ### Concept Introduction: 2-3 Minutes Per Major Concept
45
+
46
+ A "major concept" is something like "what is a determinant" or "what is attention in a transformer." The pattern:
47
+
48
+ ```
49
+ 1. Motivation (15-30s): Why do we need this?
50
+ 2. Visual introduction (30-60s): Show it, don't define it
51
+ 3. Formal statement (15-30s): Now the definition/formula
52
+ 4. First example (30-60s): Work through a specific case
53
+ 5. Second example or variation (30-60s): Reinforce, show edge case
54
+ ```
55
+
56
+ ### Example/Demonstration: 1-2 Minutes Each
57
+
58
+ ```
59
+ 1. Setup the specific case (15-20s)
60
+ 2. Walk through step by step (30-60s)
61
+ 3. Highlight the key observation (15-20s)
62
+ 4. Connect to the general principle (10-15s)
63
+ ```
64
+
65
+ ### Formula Derivation: 3-5 Minutes (Visual, Not Algebraic)
66
+
67
+ Grant never grinds through algebra. The derivation IS the visualization.
68
+
69
+ ```
70
+ 1. State what we want to show (15-30s)
71
+ 2. Set up the geometric/visual framework (30-60s)
72
+ 3. Step-by-step transformation (60-120s)
73
+ - Each step: Indicate target → Transform → Wait → Explain
74
+ 4. Reveal the final formula (15-30s)
75
+ - FlashAround or Circumscribe for emphasis
76
+ 5. Reflect on elegance or implications (30-60s)
77
+ ```
78
+
79
+ ### Pi Creature Interlude: 15-30 Seconds
80
+
81
+ Placed between major sections as emotional resets:
82
+
83
+ ```
84
+ 1. Student expresses confusion/surprise (5-10s)
85
+ 2. Teacher responds (5-10s)
86
+ 3. Brief visual gag or acknowledgment (5-10s)
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Animation Timing (run_time Values)
92
+
93
+ ### From the Codebase
94
+
95
+ | Animation Type | Typical run_time | Usage |
96
+ |---------------|-----------------|-------|
97
+ | `Write(equation)` | 1-2s | Writing LaTeX equations |
98
+ | `ShowCreation(mobject)` | 1-2s | Drawing shapes, graphs |
99
+ | `FadeIn(mobject)` | 0.5-1s | Bringing in new elements |
100
+ | `FadeIn(mobject, shift=UP)` | 0.5-1s | Directional fade-in |
101
+ | `FadeOut(mobject)` | 0.5-1s | Removing elements |
102
+ | `Transform(a, b)` | 1-2s | General shape morphing |
103
+ | `TransformMatchingTex(a, b)` | 1-2s | Equation transitions |
104
+ | `FadeTransform(a, b)` | 1-2s | Cross-dissolve transform |
105
+ | `Indicate(mobject)` | 0.5-1s | Brief flash to draw attention |
106
+ | `Circumscribe(mobject)` | 1s | Circle around element |
107
+ | `FlashAround(mobject)` | 0.5-1s | Flash effect on revelation |
108
+ | `LaggedStartMap(FadeIn, group)` | 2-4s | Sequential group reveal |
109
+ | `LaggedStart(*anims)` | 3-5s | Staggered animation set |
110
+ | `apply_matrix(M)` | 2-3s | Grid transformation |
111
+ | `frame.animate.reorient(...)` | 3-5s | Camera movement in 3D |
112
+ | `frame.animate.set_height(...)` | 2-3s | Camera zoom |
113
+ | `MoveAlongPath(mob, path)` | 2-4s | Path following |
114
+ | `Rotate(mob, angle)` | 1-2s | Rotation |
115
+ | `VShowPassingFlash(mob)` | 1-2s | Passing flash effect |
116
+ | `VFadeInThenOut(mob)` | 0.5-1s | Temporary appearance |
117
+
118
+ ### Special Timing Patterns
119
+
120
+ **Opening Quote Author Write**: `run_time=4-5` (slow, dramatic)
121
+
122
+ **Grid Transformation**: `run_time=3` (let the viewer absorb the deformation)
123
+
124
+ **Key Reveal**: `run_time=2` with preceding `self.wait(1)` and following `self.wait(2)`
125
+
126
+ **Speed Ramp for Repetition**:
127
+ ```python
128
+ # From CLT dice simulation
129
+ for n in range(n_sums):
130
+ if n < 10:
131
+ self.run_one_sum(animated=True) # Full animation
132
+ else:
133
+ self.run_one_sum(animated=False) # Skip-through
134
+ ```
135
+
136
+ **Scene Inheritance for Speed Variants**:
137
+ ```python
138
+ class QuickerRegression(SimpleAutogregression):
139
+ skip_through = True # Same scene, faster
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Wait/Pause Patterns
145
+
146
+ ### From the Codebase Analysis
147
+
148
+ | Context | Wait Duration | Purpose |
149
+ |---------|--------------|---------|
150
+ | After key reveal | `self.wait(2-3)` | Let the viewer process the insight |
151
+ | Between animation steps | `self.wait(1)` | Brief beat for comprehension |
152
+ | After showing equation | `self.wait(2)` | Reading time |
153
+ | After question posed | `self.wait(1-2)` | Let viewer think |
154
+ | After Pi creature reaction | `self.wait(1)` | Comedic timing |
155
+ | After physical simulation starts | `self.wait(3-10)` | Let simulation play out |
156
+ | End of scene | `self.wait(1-2)` | Transition buffer |
157
+ | After FlashAround/Circumscribe | `self.wait(1)` | Absorb the highlight |
158
+
159
+ ### The Rhythm Pattern
160
+
161
+ ```
162
+ Fast-Fast-SLOW-Fast-Fast-SLOW
163
+ ```
164
+
165
+ Quick setup animations (FadeIn, small moves), then a SLOW key moment (Write equation, Transform, camera move with long wait), then quick again.
166
+
167
+ **Example from a typical scene:**
168
+ ```python
169
+ self.play(FadeIn(axes)) # 0.5s - quick
170
+ self.play(ShowCreation(graph)) # 1s - quick
171
+ self.wait(2) # 2s - SLOW pause
172
+ self.play(Write(equation)) # 2s - moderate
173
+ self.wait(2) # 2s - SLOW pause
174
+ self.play(Indicate(equation[3:6])) # 0.5s - quick
175
+ self.play(Transform(equation, equation2)) # 1s - quick
176
+ self.wait(3) # 3s - SLOW (key insight!)
177
+ ```
178
+
179
+ ---
180
+
181
+ ## Pacing for Different Content Types
182
+
183
+ ### Proof Video Pacing
184
+
185
+ | Phase | % of Video | Pacing |
186
+ |-------|-----------|--------|
187
+ | State the theorem | 5% | Quick, clean |
188
+ | Motivation ("why care?") | 10% | Moderate, hook |
189
+ | Setup the visual framework | 15% | Slow, deliberate |
190
+ | Step-by-step reasoning | 50% | Each step: animate (1-2s) + wait (2s) + explain (narration) |
191
+ | Key insight moment | 5% | SLOW. FlashAround. wait(3). |
192
+ | Implications | 10% | Moderate |
193
+ | "Isn't that beautiful?" | 5% | Slow, reflective |
194
+
195
+ ### Tutorial/How-To Pacing
196
+
197
+ | Phase | % of Video | Pacing |
198
+ |-------|-----------|--------|
199
+ | What we're building toward | 5% | Quick preview |
200
+ | Setup prerequisites | 15% | Moderate |
201
+ | Build concept step by step | 60% | Slow, with examples |
202
+ | Full picture | 10% | Moderate |
203
+ | Practice/extension | 10% | Quick |
204
+
205
+ ### Mystery/Puzzle Pacing
206
+
207
+ | Phase | % of Video | Pacing |
208
+ |-------|-----------|--------|
209
+ | Present the puzzle | 10% | Quick, intriguing |
210
+ | First attempt (wrong) | 15% | Moderate |
211
+ | Why it fails | 10% | Quick |
212
+ | Better approach | 25% | Slow, building |
213
+ | The answer | 15% | SLOW. The payoff. |
214
+ | Why it works | 15% | Moderate |
215
+ | Generalization | 10% | Quick |
216
+
217
+ ---
218
+
219
+ ## Transition Pacing
220
+
221
+ ### Between Scenes
222
+
223
+ - **Cut (FadeOut all, FadeIn new)**: 0.5-1s each. Use for topic changes.
224
+ - **Transform continuity**: 1-2s. Use when the next scene builds on current objects.
225
+ - **Camera move**: 2-3s. Use for zoom-in to detail or zoom-out to big picture.
226
+ - **Clean slate**: FadeOut everything (0.5s), wait(0.5s), FadeIn new scene (0.5s).
227
+
228
+ ### Between Major Sections
229
+
230
+ Insert a Pi creature interlude or a brief visual recap (15-30s) between major mathematical sections. This gives the viewer time to consolidate before new information arrives.
231
+
232
+ ---
233
+
234
+ ## Lag Ratio Guidelines
235
+
236
+ The `lag_ratio` parameter controls how much sequential animations overlap:
237
+
238
+ | lag_ratio | Effect | Use When |
239
+ |-----------|--------|----------|
240
+ | 0.0 | All at once | Revealing a complete group |
241
+ | 0.05-0.1 | Cascading wave | Sequential group reveal (most common) |
242
+ | 0.2-0.3 | Clearly sequential | Ordered list, step-by-step |
243
+ | 0.5 | Half overlap | Moderate pacing |
244
+ | 1.0 | Fully sequential | Each finishes before next starts |
245
+
246
+ ### Common lag_ratio Values from Codebase
247
+
248
+ ```python
249
+ # Most common: staggered reveal
250
+ LaggedStartMap(FadeIn, group, lag_ratio=0.1)
251
+
252
+ # Sequential arrows or labels
253
+ LaggedStartMap(ShowCreation, arrows, lag_ratio=0.5)
254
+
255
+ # Dramatic sequential reveal
256
+ LaggedStartMap(Write, equations, lag_ratio=0.3)
257
+
258
+ # Near-simultaneous with slight cascade
259
+ LaggedStart(*animations, lag_ratio=0.01)
260
+ ```
261
+
262
+ ---
263
+
264
+ ## Pacing Red Flags
265
+
266
+ 1. **More than 3 animations without a wait**: Viewer can't process. Add `self.wait(1)`.
267
+ 2. **Wait longer than 5 seconds**: Viewer gets bored. Either shorten or add subtle motion.
268
+ 3. **Formula appears without buildup**: Always Write() or Transform() equations, never just Add().
269
+ 4. **Camera moves during equation display**: Choose one focus. Move camera OR show math, not both.
270
+ 5. **More than 2 minutes without visual change**: Keep things moving. Transform, recolor, zoom.
271
+ 6. **Consistent speed throughout**: Vary the pace! Quick setups, slow reveals.
272
+
273
+ ---
274
+
275
+ ## The "Earned Wait" Principle
276
+
277
+ The longest waits in 3b1b videos come AFTER the most significant reveals. The viewer has been building toward this moment, and the pause signals "this is important."
278
+
279
+ ```python
280
+ # Bad: long wait after setup
281
+ self.play(FadeIn(axes))
282
+ self.wait(3) # Why am I waiting? Nothing happened.
283
+
284
+ # Good: long wait after insight
285
+ self.play(FlashAround(result))
286
+ self.wait(3) # This is the moment. Let it breathe.
287
+ ```
288
+
289
+ The wait time is proportional to the significance of what just happened.