Manim-Animation – Mathematische und technische Videos
Manim ist eine Python-Engine für erklärende Animationen. Ihre Stärke liegt in der Exaktheit: Eine Formel, ein Graph oder eine Konstruktion kann als mathematisch definiertes Objekt animiert werden, nicht als Näherung in einem Designwerkzeug.
Lesen Sie references/MANIM-PLAYBOOK.md für Muster und Code. Überprüfen Sie Flags anhand der installierten Version: https://docs.manim.community/en/stable/
1. Wann Manim wählen
Wählen Sie Manim, wenn:
- Gleichungen, Symbole oder Beweise das Thema sind.
- Koordinatensysteme, Graphen, Vektoren oder geometrische Konstruktionen exakt sein müssen.
- Ein Algorithmus, eine Datenstruktur oder ein Prozess schrittweise visuell erklärt werden soll.
- Beschriftungen an einem mathematischen Objekt ausgerichtet sein müssen, nicht an einer manuell platzierten Bildposition.
- Der Stil zurückhaltend und diagrammatisch sein soll, nicht filmisch.
Verwenden Sie Manim nicht für: filmisches 3D, markenlastige Werbevideos, bewegte Typografie oder interaktive Ausgaben. Dafür sind Blender, Remotion oder Webgrafiken zuständig.
2. Installation (isoliert, reproduzierbar)
uv --version # uv zuerst installieren, falls nicht vorhanden
uv init --python 3.12 manim-project
cd manim-project
uv add manim
uv run manim --version
Linux benötigt oft native Bibliotheken:
sudo apt update
sudo apt install build-essential python3-dev pkg-config libcairo2-dev libpango1.0-dev ffmpeg
sudo apt install texlive texlive-latex-extra texlive-fonts-recommended # für MathTex/Tex
macOS: brew install cairo pango pkg-config ffmpeg und eine TeX-Distribution wie MacTeX, wenn MathTex verwendet wird.
Windows: Installieren Sie FFmpeg und MiKTeX/TeX Live; für Cairo/Pango-Räder können Microsoft C++ Build Tools erforderlich sein.
Überprüfen:
uv run manim --version
uv run python -c "import manim; print(manim.__version__)"
Installieren Sie Manim nicht in das systemweite Python, wenn eine Projektumgebung verfügbar ist. Notieren Sie die Version in der Projekt-README.
3. Rendering-Befehle
# Vorschau mit niedriger Qualität (schnell)
uv run manim -pql scenes/explain.py ExplainScene
# mittel
uv run manim -qm scenes/explain.py ExplainScene
# hoch / Produktion
uv run manim -qh scenes/explain.py ExplainScene
# 4K
uv run manim -qk scenes/explain.py ExplainScene
# transparenter Hintergrund
uv run manim -qh -t scenes/explain.py ExplainScene
# bestimmter Abschnitt
uv run manim -qh scenes/explain.py ExplainScene -n 12,20
Qualitätsvoreinstellungen: -ql 480p15, -qm 720p30, -qh 1080p60, -qk 2160p60. Überprüfen Sie dies in der installierten Version. Die Ausgabe liegt in media/videos/<datei>/<qualität>/.
ffprobe -v error -show_entries stream=width,height,r_frame_rate,duration \
-of json media/videos/explain/1080p60/ExplainScene.mp4
4. Regeln für das Szenendesign
- Eine Idee pro Szene. Teilen Sie in
Scene-Unterklassen auf; komponieren Sie ein längeres Video durch Verkettung, nicht durch eine einzige riesige Szene. - Legen Sie Palette und Schriftarten einmalig in einem Modul (
theme.py) fest und importieren Sie sie, anstatt Hex-Werte zu wiederholen. - Halten Sie die Kamera zurück. Manims
MovingCameraSceneist leistungsstark und leicht zu übertreiben; zoomen Sie nur, um eine Struktur zu zeigen, die der Betrachter sonst nicht sehen würde. - Respektieren Sie die Dauer. Eine Formelableitung, die bei 3 Minuten gut lesbar ist, wirkt bei 40 Sekunden gehetzt. Berechnen Sie die Verweildauer anhand der Lesegeschwindigkeit, nicht nach Intuition.
- Behalten Sie Beschriftungen an das von ihnen beschriebene Objekt gebunden (
Tex+next_to), damit eine spätere Layoutänderung die Ausrichtung nicht stillschweigend zerstört. - Verwenden Sie
Transform/ReplacementTransformfür Bedeutung,FadeIn/FadeOutfür Präsenz. Das Verformen unzusammenhängender Formen verwirrt Zuschauer. - Animieren Sie nicht jedes Element unabhängig. Gruppieren Sie mit
VGroupund staffeln Sie bewusst.
5. Kompositionsrezept
from manim import *
class ExplainScene(Scene):
def construct(self):
title = Text("Warum die Ableitung ein Grenzwert ist", font="Inter").scale(0.7)
self.play(Write(title), run_time=1.2)
self.wait(0.6)
self.play(title.animate.to_edge(UP).scale(0.8), run_time=0.9)
formula = MathTex(r"f'(x) = \lim_{h \to 0} \frac{f(x+h)-f(x)}{h}")
formula.scale(1.2)
self.play(Write(formula), run_time=1.6)
self.wait(1.2)
self.play(formula.animate.set_color_by_tex(r"h \to 0", YELLOW), run_time=0.8)
self.wait(1.5)
6. Export und Übergabe
-qherzeugt 1080p60 mit hoher Bitrate; kodieren Sie für die Auslieferung neu, anstatt das Zwischenprodukt zu versenden.- Transparenz:
-tschreibt eine.movmit Alpha (oder eine PNG-Sequenz mit--format=png). Überprüfen Sie das Alpha über einem Schachbrettmuster, bevor Sie es kombinieren. - Um Manim mit Remotion/Blender zu kombinieren: gleichen Sie FPS und Auflösung an und setzen Sie dann mit FFmpeg oder Remotion zusammen. Manim verwendet standardmäßig 60 FPS bei
-qh; ändern Sieconfig.frame_rateoder konvertieren Sie bewusst. - Für Marken-Intros/Outros und Untertitel rendern Sie Manim-Szenen sauber und kombinieren Sie sie in Remotion – kämpfen Sie nicht gegen Manims Typografie-System für Marken-Layouts.
7. Validierung
- Betrachten Sie den Render mit niedriger Qualität vor dem mit hoher Qualität; mathematische Fehler sind bei 480p sichtbar.
- Prüfen Sie, dass keine Formel am Bildrand abgeschnitten wird und keine Beschriftung eine andere überlappt.
- Überprüfen Sie, dass LaTeX ohne stille Fallbacks kompiliert wurde (achten Sie auf rote Textwarnungen in der Konsole).
- Bestätigen Sie die endgültige Dauer und Bildrate mit
ffprobe. - Lesen Sie jedes Symbol laut gegen die beabsichtigte Mathematik; ein umgedrehtes Vorzeichen ist ein Korrektheitsfehler, keine Stilentscheidung.
8. Häufige Fehler
| Symptom | Ursache | Lösung |
|---|---|---|
latex: command not found | Keine TeX-Distribution | Installieren Sie TeX Live/MiKTeX oder verwenden Sie Text statt MathTex |
| Cairo/Pango-Build-Fehler | Fehlende native Bibliotheken | Installieren Sie die oben aufgeführten Dev-Pakete |
| Formel wird als roter Fehlertext dargestellt | LaTeX-Syntax oder fehlendes Paket | Überprüfen Sie die Konsole; fügen Sie TexTemplate-Pakete hinzu |
| Alles sieht verschwommen aus | Niedrige Qualitätsvoreinstellung | Rendern Sie final mit -qh/-qk |
| Griechischer/arabischer Text defekt | Schriftart hat keine Glyphen oder kein Shape | Verwenden Sie eine shape-fähige Schriftart, testen Sie ein Standbild oder rastern Sie den Text |
| Rendern sehr langsam | 60 FPS + 4K + komplexe Pfade | Vorschau mit -ql, Pfade vereinfachen, Szenen aufteilen |
| Transparenz verloren | Falsches Format | Verwenden Sie -t und einen alpha-fähigen Container; überprüfen Sie es |
9. Offizielle Referenzen
- Dokumentation: https://docs.manim.community/en/stable/
- Installation: https://docs.manim.community/en/stable/installation.html
- Tutorials: https://docs.manim.community/en/stable/tutorials.html
- Beispielgalerie: https://docs.manim.community/en/stable/examples.html
- Quelle: https://github.com/ManimCommunity/manim