Communitygithub.com

manimgl-besten-praktiken

Eine Skill-Sammlung mit bewährten Methoden, Codebeispielen und Referenzen für die Erstellung von Animationen mit ManimGL (3b1b).

Was ist manimgl-besten-praktiken?

Dieser Skill bietet eine umfassende Referenz für die Arbeit mit ManimGL, der von 3Blue1Brown für mathematische Animationen verwendeten Bibliothek. Er enthält detaillierte Erklärungen zu zentralen Konzepten wie Szenen, Mobjects und Animationen sowie zur Erstellung und Transformation von Objekten. Der Skill deckt die Arbeit mit LaTeX und Text ab, Behandelt Styling, 3D-Objekte und Kamerasteuerung und legt einen starken Fokus auf den interaktiven Entwicklungs-Workflow. Er unterstützt Entwickler dabei, den Unterschied zur Manim Community Edition zu verstehen, häufige Fallstricke zu vermeiden und effizient mit der `manimgl`-CLI zu arbeiten. Die Skill-Markdown-Datei enthält Verweise auf Regeln, ausführbare Beispiele und Szenenvorlagen, die auf Plattformen wie Claude Code, Cursor und Codex genutzt werden können.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/adithya-s-k/manim_skill/tree/main/skills/manimgl-best-practices

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Verwendung

Lies die einzelnen Regeldateien für detaillierte Erklärungen und Codebeispiele:

Kernkonzepte

Erstellung & Transformation

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

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

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:

Szenenvorlagen

Kopiere und passe diese Vorlagen an, um neue Projekte zu starten:

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

MerkmalManimGL (3b1b)Manim Community
Importfrom manimlib import *from manim import *
CLImanimglmanim
Mathe-TextTex(R"\pi")MathTex(r"\pi")
SzeneInteractiveSceneScene
Erstellungs-AnimationShowCreationCreate
Kameraself.frameself.camera.frame
Im Bild fixierenmob.fix_in_frame()self.add_fixed_in_frame_mobjects(mob)
Paketmanimgl (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

  1. Versionsverwirrung - Stelle sicher, dass du manimgl verwendest, nicht manim (Community-Version)
  2. ShowCreation vs Create - ManimGL verwendet ShowCreation, nicht Create
  3. Tex vs MathTex - ManimGL verwendet Tex mit Raw-Strings (großes R)
  4. self.frame vs self.camera.frame - ManimGL verwendet direkt self.frame
  5. fix_in_frame() - Wird auf dem Mobject aufgerufen, nicht auf der Szene
  6. 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.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills