Verwendung
Lies die einzelnen Regeldateien für detaillierte Erklärungen und Codebeispiele:
Kernkonzepte
- rules/scenes.md - InteractiveScene, Scene-Typen und die construct-Methode
- rules/mobjects.md - Mobject-Typen, VMobject, Gruppen und Positionierung
- rules/animations.md - Animationsklassen, Abspielen von Animationen und Zeitsteuerung
Erstellung & Transformation
- rules/creation-animations.md - ShowCreation, Write, FadeIn, DrawBorderThenFill
- rules/transform-animations.md - Transform, ReplacementTransform, TransformMatchingTex
- rules/animation-groups.md - LaggedStart, Succession, AnimationGroup
Text & Mathematik
- rules/tex.md - Tex-Klasse, Raw-Strings R"..." und LaTeX-Rendering
- rules/text.md - Text-Mobjects, Schriftarten und Styling
- rules/t2c.md - tex_to_color_map (t2c) zum Einfärben mathematischer Ausdrücke
Styling & Erscheinungsbild
- rules/colors.md - Farbkonstanten, Verläufe, RGB, Hex, GLSL-Färbung
- rules/styling.md - Füllung, Kontur, Deckkraft, Rückstrich, Glanz, Schatten
3D & Kamera
- rules/3d.md - 3D-Objekte, Oberflächen, Sphäre, Torus, parametrische Oberflächen, Beleuchtung
- rules/camera.md - frame.reorient(), Euler-Winkel, fix_in_frame(), Kameranimationen
Interaktive Entwicklung
- rules/interactive.md - Interaktiver Modus mit
-se-Flag, checkpoint_paste() - rules/frame.md - self.frame, Kamerasteuerung, Neuausrichtung und Zoomen
- rules/embedding.md - self.embed() für IPython-Debugging, touch()-Modus
Konfiguration & CLI
- rules/cli.md - manimgl-Befehl, Flags (-w, -o, -se, -l, -h), Rendering-Optionen
- rules/config.md - custom_config.yml, Verzeichnisse, Kameraeinstellungen, Qualitätsvoreinstellungen
Arbeitsbeispiele
Vollständige, getestete Beispieldateien, die gängige Muster demonstrieren:
- examples/basic_animations.py - Grundlegende Formen, Text und Animationen
- examples/math_visualization.py - LaTeX-Gleichungen und mathematische Inhalte
- examples/graph_plotting.py - Achsen, Funktionen und Diagramme
- examples/3d_visualization.py - 3D-Szenen mit Kamerasteuerung und Oberflächen
- examples/updater_patterns.py - Dynamische Animationen mit Updatern
Szenenvorlagen
Kopiere und passe diese Vorlagen an, um neue Projekte zu starten:
- templates/basic_scene.py - Standard 2D-Szenenvorlage
- templates/interactive_scene.py - InteractiveScene mit self.embed()
- templates/3d_scene.py - 3D-Szene mit frame.reorient()
- templates/math_scene.py - Mathematische Herleitungen und Gleichungen
Kurzreferenz
Grundlegende Szenenstruktur
from manimlib import *
class MyScene(InteractiveScene):
def construct(self):
# Mobjects erstellen
circle = Circle()
# Zur Szene hinzufügen (statisch)
self.add(circle)
# Oder animieren
self.play(ShowCreation(circle)) # Hinweis: ShowCreation, nicht Create
# Warten
self.wait(1)
Render-Befehl
# Rendern und Vorschau
manimgl scene.py MyScene
# Interaktiver Modus – öffne Shell bei Zeile 15
manimgl scene.py MyScene -se 15
# In Datei schreiben
manimgl scene.py MyScene -w
# Niedrige Qualität zum Testen
manimgl scene.py MyScene -l
Wichtige Unterschiede zu ManimCE
| Merkmal | ManimGL (3b1b) | Manim Community |
|---|---|---|
| Import | from manimlib import * | from manim import * |
| CLI | manimgl | manim |
| Mathe-Text | Tex(R"\pi") | MathTex(r"\pi") |
| Szene | InteractiveScene | Scene |
| Erstellungs-Animation | ShowCreation | Create |
| Kamera | self.frame | self.camera.frame |
| Im Bild fixieren | mob.fix_in_frame() | self.add_fixed_in_frame_mobjects(mob) |
| Paket | manimgl (PyPI) | manim (PyPI) |
Interaktiver Entwicklungsworkflow
Die Killerfunktion von ManimGL ist die interaktive Entwicklung:
# Starte bei Zeile 20 mit erhaltener Zustand
manimgl scene.py MyScene -se 20
Im interaktiven Modus:
# Code in die Zwischenablage kopieren, dann ausführen:
checkpoint_paste() # Mit Animationen ausführen
checkpoint_paste(skip=True) # Sofort ausführen (keine Animationen)
checkpoint_paste(record=True) # Aufzeichnung beim Ausführen
Kamerasteuerung (self.frame)
# Kamera-Bild holen
frame = self.frame
# In 3D neu ausrichten (phi, theta, gamma, zentrum, höhe)
frame.reorient(45, -30, 0, ORIGIN, 8)
# Kamerabewegung animieren
self.play(frame.animate.reorient(60, -45, 0))
# Mobjects während 3D-Bewegung im Bildschirm fixieren
title.fix_in_frame()
LaTeX mit der Tex-Klasse
# Raw-Strings mit großem R verwenden
formel = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")
# Farbzuordnung mit t2c
gleichung = Tex(
R"E = mc^2",
t2c={"E": BLUE, "m": GREEN, "c": YELLOW}
)
# Teilzeichenfolgen für Animationen isolieren
formel = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")
formula.set_color_by_tex("n", BLUE)
Häufige Muster
Einbetten zum Debuggen
def construct(self):
circle = Circle()
self.play(ShowCreation(circle))
self.embed() # Öffnet hier eine IPython-Shell
Bodenebene für 3D setzen
self.set_floor_plane("xz") # Macht xy zur Betrachtungsebene
Rückstrich für bessere Lesbarkeit von Text
text = Text("Label")
text.set_backstroke(BLACK, 5) # Schwarze Kontur hinter dem Text
Installation
# ManimGL installieren
pip install manimgl
# Installation prüfen
manimgl --version
Häufige Fallstricke, die es zu vermeiden gilt
- Versionsverwirrung - Stelle sicher, dass du
manimglverwendest, nichtmanim(Community-Version) - ShowCreation vs Create - ManimGL verwendet
ShowCreation, nichtCreate - Tex vs MathTex - ManimGL verwendet
Texmit Raw-Strings (großes R) - self.frame vs self.camera.frame - ManimGL verwendet direkt
self.frame - fix_in_frame() - Wird auf dem Mobject aufgerufen, nicht auf der Szene
- Interaktiver Modus - Verwende das
-se-Flag für interaktive Entwicklung
Lizenz & Namensnennung
Dieser Skill enthält Beispielcode, der aus dem Video-Repository von 3Blue1Brown von Grant Sanderson adaptiert wurde.
Lizenz: CC BY-NC-SA 4.0
- Namensnennung erforderlich - Sowohl 3Blue1Brown als auch der Anpasser müssen genannt werden
- Nicht-kommerziell - Nicht für kommerzielle Zwecke
- Weitergabe unter gleichen Bedingungen - Abgeleitete Werke müssen dieselbe Lizenz verwenden
Vollständige Details siehe LICENSE.txt.