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,254 @@
1
+ ---
2
+ name: 3d
3
+ description: ThreeDScene, 3D objects, surfaces, and 3D camera
4
+ metadata:
5
+ tags: 3d, threedscene, surface, sphere, cube, camera
6
+ ---
7
+
8
+ # 3D Graphics in Manim
9
+
10
+ Create 3D visualizations with ThreeDScene.
11
+
12
+ ## ThreeDScene Basics
13
+
14
+ ```python
15
+ from manim import *
16
+
17
+ class Basic3D(ThreeDScene):
18
+ def construct(self):
19
+ # Set camera angle
20
+ self.set_camera_orientation(phi=75 * DEGREES, theta=-45 * DEGREES)
21
+
22
+ # Add 3D axes
23
+ axes = ThreeDAxes()
24
+ self.add(axes)
25
+ ```
26
+
27
+ ## Camera Orientation
28
+
29
+ ```python
30
+ class CameraOrientation(ThreeDScene):
31
+ def construct(self):
32
+ axes = ThreeDAxes()
33
+
34
+ # phi: angle from z-axis (0 = top view, 90 = side view)
35
+ # theta: rotation around z-axis
36
+ # gamma: roll angle
37
+
38
+ self.set_camera_orientation(
39
+ phi=75 * DEGREES,
40
+ theta=-45 * DEGREES,
41
+ gamma=0
42
+ )
43
+
44
+ self.add(axes)
45
+ ```
46
+
47
+ ### Animated Camera Movement
48
+
49
+ ```python
50
+ class AnimatedCamera(ThreeDScene):
51
+ def construct(self):
52
+ axes = ThreeDAxes()
53
+ self.add(axes)
54
+
55
+ self.set_camera_orientation(phi=75*DEGREES, theta=0)
56
+
57
+ # Animate camera movement
58
+ self.move_camera(phi=45*DEGREES, theta=90*DEGREES, run_time=3)
59
+ ```
60
+
61
+ ### Continuous Camera Rotation
62
+
63
+ ```python
64
+ class RotatingCamera(ThreeDScene):
65
+ def construct(self):
66
+ axes = ThreeDAxes()
67
+ self.add(axes)
68
+
69
+ self.set_camera_orientation(phi=75*DEGREES, theta=0)
70
+
71
+ # Start ambient rotation
72
+ self.begin_ambient_camera_rotation(rate=0.2)
73
+ self.wait(5)
74
+ self.stop_ambient_camera_rotation()
75
+ ```
76
+
77
+ ## 3D Primitives
78
+
79
+ ### Sphere
80
+
81
+ ```python
82
+ class SphereExample(ThreeDScene):
83
+ def construct(self):
84
+ sphere = Sphere(radius=1, resolution=(20, 20))
85
+ sphere.set_color(BLUE)
86
+
87
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
88
+ self.add(sphere)
89
+ ```
90
+
91
+ ### Cube / Prism
92
+
93
+ ```python
94
+ class CubeExample(ThreeDScene):
95
+ def construct(self):
96
+ cube = Cube(side_length=2, fill_opacity=0.8)
97
+ cube.set_color(RED)
98
+
99
+ # Rectangular prism
100
+ prism = Prism(dimensions=[3, 1, 2])
101
+
102
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
103
+ self.add(cube)
104
+ ```
105
+
106
+ ### Cylinder / Cone
107
+
108
+ ```python
109
+ class CylinderCone(ThreeDScene):
110
+ def construct(self):
111
+ cylinder = Cylinder(radius=1, height=2, fill_opacity=0.8)
112
+ cone = Cone(base_radius=1, height=2, fill_opacity=0.8)
113
+
114
+ cylinder.shift(LEFT * 2)
115
+ cone.shift(RIGHT * 2)
116
+
117
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
118
+ self.add(cylinder, cone)
119
+ ```
120
+
121
+ ### Torus
122
+
123
+ ```python
124
+ class TorusExample(ThreeDScene):
125
+ def construct(self):
126
+ torus = Torus(major_radius=2, minor_radius=0.5)
127
+
128
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
129
+ self.add(torus)
130
+ ```
131
+
132
+ ## 3D Axes
133
+
134
+ ```python
135
+ class ThreeDAxesExample(ThreeDScene):
136
+ def construct(self):
137
+ axes = ThreeDAxes(
138
+ x_range=[-4, 4, 1],
139
+ y_range=[-4, 4, 1],
140
+ z_range=[-4, 4, 1],
141
+ x_length=8,
142
+ y_length=8,
143
+ z_length=6,
144
+ )
145
+
146
+ # Add axis labels
147
+ x_label = axes.get_x_axis_label("x")
148
+ y_label = axes.get_y_axis_label("y")
149
+ z_label = axes.get_z_axis_label("z")
150
+
151
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
152
+ self.add(axes, x_label, y_label, z_label)
153
+ ```
154
+
155
+ ## Surface Plots
156
+
157
+ ```python
158
+ class SurfacePlot(ThreeDScene):
159
+ def construct(self):
160
+ axes = ThreeDAxes(x_range=[-3, 3], y_range=[-3, 3], z_range=[-2, 2])
161
+
162
+ # Function z = f(x, y)
163
+ surface = axes.plot_surface(
164
+ lambda u, v: np.sin(u) * np.cos(v),
165
+ u_range=[-3, 3],
166
+ v_range=[-3, 3],
167
+ resolution=(30, 30),
168
+ colorscale=[BLUE, GREEN, YELLOW, RED],
169
+ )
170
+
171
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
172
+ self.add(axes, surface)
173
+ ```
174
+
175
+ ### Surface Class (standalone)
176
+
177
+ ```python
178
+ class SurfaceExample(ThreeDScene):
179
+ def construct(self):
180
+ def param_func(u, v):
181
+ x = u
182
+ y = v
183
+ z = np.sin(np.sqrt(u**2 + v**2))
184
+ return np.array([x, y, z])
185
+
186
+ surface = Surface(
187
+ param_func,
188
+ u_range=[-3, 3],
189
+ v_range=[-3, 3],
190
+ resolution=(30, 30),
191
+ fill_opacity=0.8,
192
+ )
193
+ surface.set_color_by_gradient(BLUE, GREEN)
194
+
195
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
196
+ self.add(surface)
197
+ ```
198
+
199
+ ## 3D Parametric Curves
200
+
201
+ ```python
202
+ class ParametricCurve3D(ThreeDScene):
203
+ def construct(self):
204
+ # Helix
205
+ curve = ParametricFunction(
206
+ lambda t: np.array([
207
+ np.cos(t),
208
+ np.sin(t),
209
+ t * 0.2
210
+ ]),
211
+ t_range=[-4*PI, 4*PI],
212
+ color=YELLOW
213
+ )
214
+ curve.set_shade_in_3d(True)
215
+
216
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
217
+ self.add(ThreeDAxes(), curve)
218
+ ```
219
+
220
+ ## Shading in 3D
221
+
222
+ ```python
223
+ class Shading3D(ThreeDScene):
224
+ def construct(self):
225
+ sphere = Sphere()
226
+
227
+ # Enable shading for realistic lighting
228
+ sphere.set_shade_in_3d(True)
229
+
230
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
231
+ self.add(sphere)
232
+ ```
233
+
234
+ ## Arrow3D and Line3D
235
+
236
+ ```python
237
+ class Vectors3D(ThreeDScene):
238
+ def construct(self):
239
+ axes = ThreeDAxes()
240
+
241
+ arrow = Arrow3D(ORIGIN, [2, 1, 2], color=RED)
242
+ line = Line3D(ORIGIN, [-2, 1, 1], color=BLUE)
243
+
244
+ self.set_camera_orientation(phi=75*DEGREES, theta=-45*DEGREES)
245
+ self.add(axes, arrow, line)
246
+ ```
247
+
248
+ ## Best Practices
249
+
250
+ 1. **Always set camera orientation** - Default view may not show 3D well
251
+ 2. **Use set_shade_in_3d for realism** - Adds depth perception
252
+ 3. **Use ambient camera rotation sparingly** - Can be disorienting
253
+ 4. **Match resolution to detail needed** - Higher res = slower render
254
+ 5. **Use colorscale for surfaces** - Shows elevation/value changes