Manim Video-Produktionspipeline
Kreativstandard
Dies ist pädagogisches Kino. Jeder Frame lehrt. Jede Animation enthüllt Struktur.
Bevor Sie eine einzige Zeile Code schreiben, artikulieren Sie den Erzählbogen. Welches Missverständnis korrigiert dies? Was ist der „Aha-Moment“? Welche visuelle Geschichte führt den Betrachter von Verwirrung zu Verständnis? Die Anfrage des Benutzers ist ein Ausgangspunkt – interpretieren Sie sie mit pädagogischem Ehrgeiz.
Geometrie vor Algebra. Zeigen Sie zuerst die Form, dann die Gleichung. Visuelles Gedächtnis kodiert schneller als symbolisches Gedächtnis. Wenn der Betrachter das geometrische Muster vor der Formel sieht, fühlt sich die Gleichung verdient an.
Exzellenz beim ersten Rendern ist nicht verhandelbar. Die Ausgabe muss visuell klar und ästhetisch kohärent sein, ohne Überarbeitungsrunden. Wenn etwas überladen, schlecht getimt oder wie „KI-generierte Folien“ aussieht, ist es falsch.
Deckkraftschichtung lenkt die Aufmerksamkeit. Zeigen Sie niemals alles in voller Helligkeit. Primäre Elemente bei 1,0, kontextuelle Elemente bei 0,4, strukturelle Elemente (Achsen, Gitter) bei 0,15. Das Gehirn verarbeitet visuelle Auffälligkeit in Schichten.
Atempause. Jede Animation benötigt danach self.wait(). Der Betrachter braucht Zeit, um das eben Erscheinende aufzunehmen. Hetzen Sie niemals von einer Animation zur nächsten. Eine 2-Sekunden-Pause nach einer wichtigen Enthüllung ist nie verschwendet.
Kohärente visuelle Sprache. Alle Szenen teilen eine Farbpalette, konsistente Typografiegrößen und passende Animationsgeschwindigkeiten. Ein technisch korrektes Video, in dem jede Szene zufällige, unterschiedliche Farben verwendet, ist ein ästhetisches Versagen.
Voraussetzungen
Führen Sie scripts/setup.sh aus, um alle Abhängigkeiten zu überprüfen. Erforderlich: Python 3.10+, Manim Community Edition v0.20+ (pip install manim), LaTeX (texlive-full auf Linux, mactex auf macOS) und ffmpeg. Referenzdokumentation getestet mit Manim CE v0.20.1.
Modi
| Modus | Eingabe | Ausgabe | Referenz |
|---|---|---|---|
| Konzepterklärer | Thema/Konzept | Animierte Erklärung mit geometrischer Intuition | references/scene-planning.md |
| Gleichungsherleitung | Math-Ausdrücke | Schritt-für-Schritt-animierter Beweis | references/equations.md |
| Algorithmenvisualisierung | Algorithmusbeschreibung | Schritt-für-Schritt-Ausführung mit Datenstrukturen | references/graphs-and-data.md |
| Datengeschichte | Daten/Metriken | Animierte Diagramme, Vergleiche, Zähler | references/graphs-and-data.md |
| Architekturdiagramm | Systembeschreibung | Komponenten, die mit Verbindungen aufgebaut werden | references/mobjects.md |
| Paper-Erklärer | Forschungsarbeit | Animierte Hauptergebnisse und Methoden | references/scene-planning.md |
| 3D-Visualisierung | 3D-Konzept | Rotierende Oberflächen, parametrische Kurven, räumliche Geometrie | references/camera-and-3d.md |
Stack
Ein einzelnes Python-Skript pro Projekt. Kein Browser, kein Node.js, keine GPU erforderlich.
| Ebene | Werkzeug | Zweck |
|---|---|---|
| Kern | Manim Community Edition | Szenen-Rendering, Animations-Engine |
| Mathematik | LaTeX (texlive/MiKTeX) | Gleichungs-Rendering über MathTex |
| Video-E/A | ffmpeg | Szenenzusammenfügung, Formatkonvertierung, Audio-Muxing |
| TTS | ElevenLabs / Qwen3-TTS (optional) | Sprachausgabe (Voiceover) |
Pipeline
PLAN --> CODE --> RENDER --> STITCH --> AUDIO (optional) --> REVIEW
- PLAN — Schreiben Sie
plan.mdmit Erzählbogen, Szenenliste, visuellen Elementen, Farbpalette, Voiceover-Skript - CODE — Schreiben Sie
script.pymit einer Klasse pro Szene, jede unabhängig renderbar - RENDER —
manim -ql script.py Scene1 Scene2 ...für Entwurf,-qhfür Produktion - STITCH — ffmpeg concat der Szenenclips zu
final.mp4 - AUDIO (optional) — Fügen Sie Voiceover und/oder Hintergrundmusik via ffmpeg hinzu. Siehe
references/rendering.md - REVIEW — Rendern Sie Vorschaustandbilder, überprüfen Sie gegen den Plan, passen Sie an
Projektstruktur
project-name/
plan.md # Erzählbogen, Szenenaufteilung
script.py # Alle Szenen in einer Datei
concat.txt # ffmpeg Szenenliste
final.mp4 # Zusammengefügte Ausgabe
media/ # Automatisch von Manim erstellt
videos/script/480p15/
Kreative Richtlinien
Farbpaletten
| Palette | Hintergrund | Primär | Sekundär | Akzent | Anwendungsfall |
|---|---|---|---|---|---|
| Classic 3B1B | #1C1C1C | #58C4DD (BLAU) | #83C167 (GRÜN) | #FFFF00 (GELB) | Allgemein Mathe/Informatik |
| Warm academic | #2D2B55 | #FF6B6B | #FFD93D | #6BCB77 | Einladend |
| Neon tech | #0A0A0A | #00F5FF | #FF00FF | #39FF14 | Systeme, Architektur |
| Monochrome | #1A1A2E | #EAEAEA | #888888 | #FFFFFF | Minimalistisch |
Animationsgeschwindigkeit
| Kontext | run_time | self.wait() danach |
|---|---|---|
| Titel/Einführung erscheinen | 1,5s | 1,0s |
| Schlüsselgleichung enthüllen | 2,0s | 2,0s |
| Transformieren/Morphen | 1,5s | 1,5s |
| Unterstützende Beschriftung | 0,8s | 0,5s |
| FadeOut-Bereinigung | 0,5s | 0,3s |
| „Aha-Moment“-Enthüllung | 2,5s | 3,0s |
Typografische Skalierung
| Rolle | Schriftgröße | Verwendung |
|---|---|---|
| Titel | 48 | Szenentitel, Eröffnungstext |
| Überschrift | 36 | Abschnittsüberschriften innerhalb einer Szene |
| Fließtext | 30 | Erklärender Text |
| Beschriftung | 24 | Anmerkungen, Achsenbeschriftungen |
| Untertitel | 20 | Untertitel, Kleingedrucktes |
Schriftarten
Verwenden Sie Monospace-Schriftarten für den gesamten Text. Manims Pango-Renderer erzeugt bei proportionalen Schriftarten aller Größen gebrochenes Kerning. Siehe references/visual-design.md für vollständige Empfehlungen.
MONO = "Menlo" # einmal am Anfang der Datei definieren
Text("Fourier-Reihe", font_size=48, font=MONO, weight=BOLD) # Titel
Text("n=1: sin(x)", font_size=20, font=MONO) # Beschriftungen
MathTex(r"\nabla L") # Mathematik (verwendet LaTeX)
Minimale font_size=18 für Lesbarkeit.
Szeneninterne Variation
Verwenden Sie niemals identische Konfiguration für alle Szenen. Für jede Szene:
- Andere dominante Farbe aus der Palette
- Anderes Layout – nicht immer alles zentrieren
- Anderer Animationseintritt – variieren Sie zwischen Write, FadeIn, GrowFromCenter, Create
- Anderes visuelles Gewicht – manche Szenen dicht, andere spärlich
Arbeitsablauf
Schritt 1: Planen (plan.md)
Schreiben Sie vor jeglichem Code plan.md. Siehe references/scene-planning.md für die umfassende Vorlage.
Schritt 2: Codieren (script.py)
Eine Klasse pro Szene. Jede Szene ist unabhängig renderbar.
from manim import *
BG = "#1C1C1C"
PRIMARY = "#58C4DD"
SECONDARY = "#83C167"
ACCENT = "#FFFF00"
MONO = "Menlo"
class Scene1_Einfuehrung(Scene):
def construct(self):
self.camera.background_color = BG
title = Text("Warum funktioniert das?", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)
self.add_subcaption("Warum funktioniert das?", duration=2)
self.play(Write(title), run_time=1.5)
self.wait(1.0)
self.play(FadeOut(title), run_time=0.5)
Wichtige Muster:
- Untertitel bei jeder Animation:
self.add_subcaption("Text", duration=N)odersubcaption="Text"inself.play() - Geteilte Farbkonstanten am Dateianfang für szenenübergreifende Konsistenz
self.camera.background_colorin jeder Szene setzen- Saubere Ausgänge — FadeOut aller Mobjects am Szenenende:
self.play(FadeOut(Group(*self.mobjects)))
Schritt 3: Rendern
manim -ql script.py Scene1_Einfuehrung Scene2_Kernkonzept # Entwurf
manim -qh script.py Scene1_Einfuehrung Scene2_Kernkonzept # Produktion
Schritt 4: Zusammenfügen (Stitch)
cat > concat.txt << 'EOF'
datei 'media/videos/script/480p15/Scene1_Einfuehrung.mp4'
datei 'media/videos/script/480p15/Scene2_Kernkonzept.mp4'
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4
Schritt 5: Überprüfen (Review)
manim -ql --format=png -s script.py Scene2_Kernkonzept # Vorschaustandbild
Kritische Implementierungshinweise
Raw Strings für LaTeX
# FALSCH: MathTex("\frac{1}{2}")
# RICHTIG:
MathTex(r"\frac{1}{2}")
buff >= 0,5 für Randtext
label.to_edge(DOWN, buff=0.5) # niemals < 0,5
FadeOut vor dem Ersetzen von Text
self.play(ReplacementTransform(notiz1, notiz2)) # nicht Write(notiz2) darüber
Niemals Nicht-hinzugefügte Mobjects animieren
self.play(Create(kreis)) # muss zuerst hinzugefügt werden
self.play(kreis.animate.set_color(RED)) # dann animieren
Leistungsziele
| Qualität | Auflösung | FPS | Geschwindigkeit |
|---|---|---|---|
-ql (Entwurf) | 854x480 | 15 | 5-15s/Szene |
-qm (Mittel) | 1280x720 | 30 | 15-60s/Szene |
-qh (Produktion) | 1920x1080 | 60 | 30-120s/Szene |
Immer bei -ql iterieren. Nur für die endgültige Ausgabe bei -qh rendern.
Referenzen
| Datei | Inhalt |
|---|---|
references/animations.md | Kernanimationen, Rate-Funktionen, Komposition, .animate-Syntax, Timing-Muster |
references/mobjects.md | Text, Formen, VGroup/Group, Positionierung, Styling, benutzerdefinierte Mobjects |
references/visual-design.md | 12 Designprinzipien, Deckkraftschichtung, Layoutvorlagen, Farbpaletten |
references/equations.md | LaTeX in Manim, TransformMatchingTex, Ableitungsmuster |
references/graphs-and-data.md | Achsen, Plotten, BarChart, animierte Daten, Algorithmenvisualisierung |
references/camera-and-3d.md | MovingCameraScene, ThreeDScene, 3D-Oberflächen, Kamerasteuerung |
references/scene-planning.md | Erzählbögen, Layoutvorlagen, Szenenübergänge, Planungsvorlage |
references/rendering.md | CLI-Referenz, Qualitätsvoreinstellungen, ffmpeg, Voiceover-Workflow, GIF-Export |
references/troubleshooting.md | LaTeX-Fehler, Animationsfehler, häufige Fehler, Debugging |
references/animation-design-thinking.md | Wann animieren vs. statisch zeigen, Zerlegung, Tempo, Synchronisation mit Erzählung |
references/updaters-and-trackers.md | ValueTracker, add_updater, always_redraw, zeitbasierte Updater, Muster |
references/paper-explainer.md | Forschungsarbeiten in Animationen umwandeln – Workflow, Vorlagen, Domänenmuster |
references/decorations.md | SurroundingRectangle, Brace, Pfeile, DashedLine, Angle, Anmerkungslebenszyklus |
references/production-quality.md | Checklisten vor dem Code, vor dem Rendern, nach dem Rendern, räumliches Layout, Farbe, Tempo |
Kreative Abweichung (nur verwenden, wenn der Benutzer experimentelle/kreative/einzigartige Ausgabe anfordert)
Wenn der Benutzer nach kreativen, experimentellen oder unkonventionellen Erklärungsansätzen fragt, wählen Sie eine Strategie und denken Sie darüber nach, BEVOR Sie die Animation entwerfen.
- SCAMPER – wenn der Benutzer eine neue Perspektive auf eine Standarderklärung wünscht
- Annahmenumkehrung – wenn der Benutzer hinterfragen möchte, wie etwas normalerweise gelehrt wird
SCAMPER-Transformation
Nehmen Sie eine standardmäßige mathematische/technische Visualisierung und transformieren Sie sie:
- Ersetzen (Substitute): Ersetzen Sie die standardmäßige visuelle Metapher (Zahlenstrahl → gewundener Pfad, Matrix → Stadtgitter)
- Kombinieren (Combine): Verschmelzen Sie zwei Erklärungsansätze (algebraisch + geometrisch gleichzeitig)
- Umkehren (Reverse): Leiten Sie rückwärts ab – beginnen Sie beim Ergebnis und dekonstruieren Sie zu Axiomen
- Modifizieren (Modify): Übertreiben Sie einen Parameter, um zu zeigen, warum er wichtig ist (10-fache Lernrate, 1000-fache Stichprobengröße)
- Eliminieren (Eliminate): Entfernen Sie jegliche Notation – erklären Sie rein durch Animation und räumliche Beziehungen
Annahmenumkehrung
- Listen Sie auf, was „Standard“ daran ist, wie dieses Thema visualisiert wird (von links nach rechts, 2D, diskrete Schritte, formale Notation)
- Wählen Sie die grundlegendste Annahme
- Kehren Sie sie um (von rechts nach links Herleitung, 3D-Einbettung eines 2D-Konzepts, kontinuierliches Morphen statt Schritte, Null Notation)
- Erkunden Sie, was die Umkehrung offenbart, was der Standardansatz verbirgt