Manim-Videoproduktions-Pipeline
Kreativstandard
Dies ist Bildungskino. Jeder Frame lehrt. Jede Animation offenbart Struktur.
Bevor Sie eine einzige Zeile Code schreiben, artikulieren Sie den narrativen Bogen. Welches Missverständnis korrigiert dies? Was ist der „Aha-Moment"? Welche visuelle Geschichte führt den Betrachter von Verwirrung zu Verständnis? Die Eingabe des Benutzers ist ein Ausgangspunkt – interpretieren Sie sie mit pädagogischem Ehrgeiz.
Geometrie vor Algebra. Zeigen Sie zuerst die Form, dann die Gleichung. Das visuelle Gedächtnis kodiert schneller als das symbolische Gedächtnis. Wenn der Betrachter das geometrische Muster vor der Formel sieht, fühlt sich die Gleichung verdient an.
Exzellenz beim ersten Render ist nicht verhandelbar. Die Ausgabe muss ohne Überarbeitungsrunden visuell klar und ästhetisch kohärent sein. 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.
Raum zum Atmen. Jede Animation benötigt self.wait() danach. Der Betrachter braucht Zeit, um das gerade Erschienene zu verarbeiten. 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 sich eine Farbpalette, konsistente Typografie-Größen und passende Animationsgeschwindigkeiten. Ein technisch korrektes Video, in dem jede Szene zufällig andere Farben verwendet, ist ein ästhetischer Fehlschlag.
Voraussetzungen
Führen Sie scripts/setup.sh aus, um alle Abhängigkeiten zu überprüfen. Erfordert: Python 3.10+, Manim Community Edition v0.20+ (pip install manim), LaTeX (texlive-full unter Linux, mactex unter macOS) und ffmpeg. Referenzdokumentation getestet gegen Manim CE v0.20.1.
Modi
| Modus | Eingabe | Ausgabe | Referenz |
|---|---|---|---|
| Konzepterklärer | Thema/Konzept | Animierte Erklärung mit geometrischer Intuition | references/scene-planning.md |
| Gleichungsableitung | Mathematische Ausdrücke | Schrittweise animierte Herleitung | references/equations.md |
| Algorithmusvisualisierung | Algorithmusbeschreibung | Schrittweise 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 |
| Papiererklärer | Forschungsarbeit | Wichtigste Ergebnisse und Methoden animiert | 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.
| Schicht | Werkzeug | Zweck |
|---|---|---|
| Kern | Manim Community Edition | Szenen-Rendering, Animationsengine |
| Mathematik | LaTeX (texlive/MiKTeX) | Gleichungs-Rendering via MathTex |
| Video I/O | ffmpeg | Szenen-Zusammenführung, Formatkonvertierung, Audio-Muxing |
| TTS | ElevenLabs / Qwen3-TTS (optional) | Erzähl-Sprachausgabe |
Pipeline
PLAN --> CODE --> RENDER --> STITCH --> AUDIO (optional) --> REVIEW
- PLAN – Schreiben Sie
plan.mdmit narrativem Bogen, Szenenliste, visuellen Elementen, Farbpalette, Voiceover-Skript - CODE – Schreiben Sie
script.pymit einer Klasse pro Szene, jede unabhängig renderbar - RENDER –
manim -ql script.py Szene1 Szene2 ...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 Vorschaubilder, überprüfen Sie gegen den Plan, passen Sie an
Projektstruktur
projekt-name/
plan.md # Narrativer Bogen, Szenenaufschlüsselung
script.py # Alle Szenen in einer Datei
concat.txt # ffmpeg Szenenliste
final.mp4 # Zusammengeführte Ausgabe
media/ # Automatisch von Manim generiert
videos/script/480p15/
Kreative Richtung
Farbpaletten
| Palette | Hintergrund | Primär | Sekundär | Akzent | Anwendungsfall |
|---|---|---|---|---|---|
| Klassisch 3B1B | #1C1C1C | #58C4DD (BLAU) | #83C167 (GRÜN) | #FFFF00 (GELB) | Allgemein Mathe/CS |
| Warm akademisch | #2D2B55 | #FF6B6B | #FFD93D | #6BCB77 | Zugänglich |
| Neon Tech | #0A0A0A | #00F5FF | #FF00FF | #39FF14 | Systeme, Architektur |
| Monochrom | #1A1A2E | #EAEAEA | #888888 | #FFFFFF | Minimalistisch |
Animationsgeschwindigkeit
| Kontext | run_time | self.wait() danach |
|---|---|---|
| Titel/Einführung erscheint | 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 |
Typografie-Skala
| Rolle | Schriftgröße | Verwendung |
|---|---|---|
| Titel | 48 | Szenentitel, Eröffnungstext |
| Überschrift | 36 | Abschnittsüberschriften innerhalb einer Szene |
| Fließtext | 30 | Erklärtext |
| Beschriftung | 24 | Annotationen, Achsenbeschriftungen |
| Untertitel | 20 | Untertitel, Kleingedrucktes |
Schriftarten
Verwenden Sie für allen Text Monospace-Schriftarten. Manims Pango-Renderer erzeugt gebrochenes Kerning mit proportionalen Schriftarten in allen Größen. 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)
Mindestens font_size=18 für Lesbarkeit.
Szenenübergreifende Variation
Verwenden Sie niemals identische Konfiguration für alle Szenen. Für jede Szene:
- Andere dominante Farbe aus der Palette
- Anderes Layout – zentrieren Sie nicht immer alles
- Anderer Animationseintritt – variieren Sie zwischen Write, FadeIn, GrowFromCenter, Create
- Anderes visuelles Gewicht – einige Szenen dicht, andere spärlich
Workflow
Schritt 1: Planung (plan.md)
Schreiben Sie vor jeglichem Code plan.md. Siehe references/scene-planning.md für die umfassende Vorlage.
Schritt 2: Code (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 Szene1_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"beiself.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 Szene1_Einfuehrung Szene2_Kernkonzept # Entwurf
manim -qh script.py Szene1_Einfuehrung Szene2_Kernkonzept # Produktion
Schritt 4: Zusammenfügen
cat > concat.txt << 'EOF'
file 'media/videos/script/480p15/Szene1_Einfuehrung.mp4'
file 'media/videos/script/480p15/Szene2_Kernkonzept.mp4'
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4
Schritt 5: Überprüfung
manim -ql --format=png -s script.py Szene2_Kernkonzept # Vorschaubild
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 |
Iterieren Sie immer mit -ql. Rendern Sie nur für die endgültige Ausgabe mit -qh.
Referenzen
| Datei | Inhalt |
|---|---|
references/animations.md | Kernanimationen, Rate-Funktionen, Komposition, .animate-Syntax, Zeitmuster |
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, Algorithmusvisualisierung |
references/camera-and-3d.md | MovingCameraScene, ThreeDScene, 3D-Oberflächen, Kamerasteuerung |
references/scene-planning.md | Narrative Bö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, Fehlerbehebung |
references/animation-design-thinking.md | Wann animieren vs. statisch zeigen, Zerlegung, Tempo, Erzähl-Synchronisation |
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, Annotation-Lebenszyklus |
references/production-quality.md | Checklisten vor dem Code, vor dem Rendern, nach dem Rendern, räumliches Layout, Farbe, Tempo |
Kreative Divergenz (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 sie DURCH, bevor Sie die Animation entwerfen.
- SCAMPER – wenn der Benutzer eine neue Perspektive auf eine Standarderklärung wünscht
- Annahmenumkehr – wenn der Benutzer herausfordern möchte, wie etwas normalerweise gelehrt wird
SCAMPER-Transformation
Nehmen Sie eine standardmäßige mathematische/technische Visualisierung und transformieren Sie sie:
- Substitute (Ersetzen): Ersetzen Sie die standardmäßige visuelle Metapher (Zahlenstrahl → gewundener Pfad, Matrix → Stadtplan)
- Combine (Kombinieren): Verschmelzen Sie zwei Erklärungsansätze (algebraisch + geometrisch gleichzeitig)
- Reverse (Umkehren): Leiten Sie rückwärts ab – beginnen Sie mit dem Ergebnis und zerlegen Sie es bis zu den Axiomen
- Modify (Modifizieren): Übertreiben Sie einen Parameter, um zu zeigen, warum er wichtig ist (10x die Lernrate, 1000x die Stichprobengröße)
- Eliminate (Eliminieren): Entfernen Sie alle Notationen – erklären Sie rein durch Animation und räumliche Beziehungen
Annahmenumkehr
- Listen Sie auf, was „Standard" ist, wie dieses Thema visualisiert wird (links-nach-rechts, 2D, diskrete Schritte, formale Notation)
- Wählen Sie die grundlegendste Annahme
- Kehren Sie sie um (rechts-nach-links-Ableitung, 3D-Einbettung eines 2D-Konzepts, kontinuierliches Morphen anstelle von Schritten, Null Notation)
- Erkunden Sie, was die Umkehr offenbart, was der Standardansatz verbirgt