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.
- package/README.md +104 -0
- package/dist/demo.mp4 +0 -0
- package/dist/index.js +65 -0
- package/dist/mcp-app.html +142 -0
- package/dist/server.js +1492 -0
- package/package.json +67 -0
- package/references/composer/SKILL.md +154 -0
- package/references/composer/references/3b1b-series-patterns.md +217 -0
- package/references/composer/references/domain-planning-guides/calculus-planning.md +188 -0
- package/references/composer/references/domain-planning-guides/linear-algebra-planning.md +169 -0
- package/references/composer/references/domain-planning-guides/ml-planning.md +286 -0
- package/references/composer/references/domain-planning-guides/number-theory-planning.md +187 -0
- package/references/composer/references/domain-planning-guides/physics-planning.md +249 -0
- package/references/composer/references/domain-planning-guides/probability-planning.md +200 -0
- package/references/composer/references/mathematical-storytelling.md +359 -0
- package/references/composer/references/narrative-patterns.md +221 -0
- package/references/composer/references/opening-patterns.md +284 -0
- package/references/composer/references/pacing-guide.md +289 -0
- package/references/composer/references/scene-archetypes.md +534 -0
- package/references/composer/references/scene-examples.md +379 -0
- package/references/composer/references/visual-techniques.md +480 -0
- package/references/composer/templates/scenes-template.md +147 -0
- package/references/manimce/SKILL.md +166 -0
- package/references/manimce/examples/3d_visualization.py +373 -0
- package/references/manimce/examples/basic_animations.py +212 -0
- package/references/manimce/examples/graph_plotting.py +401 -0
- package/references/manimce/examples/lorenz_attractor.py +172 -0
- package/references/manimce/examples/math_visualization.py +315 -0
- package/references/manimce/examples/updater_patterns.py +369 -0
- package/references/manimce/rules/3b1b-translation.md +594 -0
- package/references/manimce/rules/3d.md +254 -0
- package/references/manimce/rules/advanced-animations.md +594 -0
- package/references/manimce/rules/animation-groups.md +212 -0
- package/references/manimce/rules/animations.md +128 -0
- package/references/manimce/rules/api-pitfalls.md +89 -0
- package/references/manimce/rules/axes.md +214 -0
- package/references/manimce/rules/camera.md +208 -0
- package/references/manimce/rules/cli.md +232 -0
- package/references/manimce/rules/color-conventions.md +444 -0
- package/references/manimce/rules/colors.md +199 -0
- package/references/manimce/rules/config.md +264 -0
- package/references/manimce/rules/creation-animations.md +158 -0
- package/references/manimce/rules/graphing.md +233 -0
- package/references/manimce/rules/grouping.md +220 -0
- package/references/manimce/rules/latex.md +202 -0
- package/references/manimce/rules/lines.md +241 -0
- package/references/manimce/rules/long-form-video.md +552 -0
- package/references/manimce/rules/mathematical-domains.md +689 -0
- package/references/manimce/rules/mobjects.md +116 -0
- package/references/manimce/rules/multi-scene-composition.md +112 -0
- package/references/manimce/rules/pedagogy.md +532 -0
- package/references/manimce/rules/physics-simulations.md +610 -0
- package/references/manimce/rules/positioning.md +211 -0
- package/references/manimce/rules/scenes.md +121 -0
- package/references/manimce/rules/shapes.md +300 -0
- package/references/manimce/rules/styling.md +177 -0
- package/references/manimce/rules/text-animations.md +222 -0
- package/references/manimce/rules/text.md +189 -0
- package/references/manimce/rules/timing.md +227 -0
- package/references/manimce/rules/transform-animations.md +157 -0
- package/references/manimce/rules/updaters.md +226 -0
- package/references/manimce/templates/basic_scene.py +64 -0
- package/references/manimce/templates/camera_scene.py +100 -0
- 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.
|