Que fait manim-skill ?
Guide expert pour les animations mathématiques Manim. Couvre à la fois ManimGL (l'original de 3Blue1Brown) et Manim Community — qui partagent un nom mais diffèrent par leur API, CLI et idiomes. Aide à écrire des scènes à partir de zéro, à déboguer du code cassé et à naviguer dans les motifs spécifiques à chaque version comme le contrôle de la caméra, les updaters et la configuration LaTeX.
Introduction
Cette compétence fournit un accompagnement expert pour la création d'animations mathématiques avec Manim. Elle reconnaît et s'adapte automatiquement à la version de Manim que vous utilisez :
- ManimGL (par 3Blue1Brown) : la bibliothèque originale, avec une philosophie de programmation orientée objet, un contrôle de la caméra flexible et des
updaters. - Manim Community (fork de la communauté) : un fork plus récent avec une API révisée, une meilleure documentation et des fonctionnalités modernes comme les
Mobjectset lesScenesunifiés.
Utilisation
Écrire une scène à partir de zéro
- Décrivez l'animation souhaitée en langage naturel.
- La compétence générera le code Python approprié pour la version de Manim que vous utilisez.
Exemple :
# ManimGL
from manimlib import *
class MyScene(Scene):
def construct(self):
circle = Circle()
self.play(ShowCreation(circle))
self.wait()
# Manim Community
from manim import *
class MyScene(Scene):
def construct(self):
circle = Circle()
self.play(Create(circle))
self.wait()
Déboguer du code cassé
- Fournissez le code problématique et une description de l'erreur.
- La compétence diagnostique les erreurs courantes comme :
- Utilisation incorrecte des
updaters(ManimGL vs Community). - Problèmes de caméra (ex.
self.camera.framevsself.camera). - Erreurs de configuration LaTeX (titres de packages, chemins d'accès).
- Utilisation incorrecte des
Naviguer dans les motifs spécifiques à chaque version
- Contrôle de la caméra :
- ManimGL :
self.camera.frame.move_to(...) - Manim Community :
self.camera.frame.move_to(...)ouself.play(self.camera.frame.animate.move_to(...))
- ManimGL :
- Updaters :
- ManimGL :
circle.add_updater(...) - Manim Community :
circle.add_updater(...)(identique, mais attention à la portée)
- ManimGL :
- LaTeX :
- Les deux versions utilisent
TexouMathTex, mais les packages et la configuration peuvent différer.
- Les deux versions utilisent
Plateformes prises en charge
- Cursor : Intégration directe avec l'éditeur pour des suggestions en temps réel.
- Claude Code : Utilisation via CLI ou API pour des instructions détaillées.
- Codex : Génération de code dans des notebooks ou des environnements Python.
Comment ça fonctionne
La compétence détecte la version de Manim en fonction du contexte (par exemple, les imports, les fichiers de configuration ou les instructions explicites). Elle adapte ensuite ses conseils et son code généré en conséquence. Pour les cas ambigus, elle demande une clarification ou affiche les deux versions côte à côte.
Exemple avancé : Animation paramétrique
# Manim Community
def parametric_circle(t):
return np.array([np.cos(t), np.sin(t), 0])
class ParametricScene(Scene):
def construct(self):
path = ParametricFunction(parametric_circle, t_range=[0, 2*PI])
self.play(Create(path))
self.wait()
Références
Contribution
Les retours et les contributions sont les bienvenus. Ouvrez une issue ou une pull request sur GitHub.