ManimGL : moteur d'animation programmatique pour vidéos mathématiques
Moteur d'animation pour vidéos explicatives sur les mathématiques. Créez un environnement conda en utilisant conda create -n mani python=3.9.
En bref
- De quoi s’agit-il ?
- Un moteur d'animation open source en Python conçu pour créer des vidéos explicatives mathématiques, supportant scripting programmatique, rendu vectoriel et animation interactive.
- À qui s’adresse-t-il ?
- ManimGL cible les créateurs de vidéos éducatives mathématiques et les développeurs construisant des visualisations algorithmiques. Le projet (v1.7.2, décembre 2024) est régi par MIT et distribué via PyPI sous le nom `manimgl`.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 6 jours.
- En quel langage est-il écrit ?
- Principalement Python, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Deux écosystèmes manim distincts : original et communautaire
ManimGL est un moteur d'animation programmatique pour créer des vidéos mathématiques explicatives. Le projet a commencé comme un projet personnel de Grant Sanderson (3Blue1Brown), auteur du canal YouTube de vulgarisation mathématique. En 2020, un groupe de développeurs a forké le projet original pour créer une édition communautaire (Manim Community) avec des objectifs différents : meilleure stabilité, tests plus rigoureux, réactivité aux contributions communautaires et prise en main plus facile.
Le README avertit explicitement que ce dépôt (ManimGL) et l'édition communautaire sont distincts, avec des chemins d'installation différents et une évolution indépendante. Le paquet PyPI pour ce dépôt s'appelle `manimgl` (à installer via `pip install manimgl`), tandis que l'édition communautaire s'appelle `manim`. Mélanger les installations ou les instructions entre les deux cause des problèmes. Cette distinction est importante car elle affecte la compatibilité, les performances et la disponibilité des features.
Architecture et prérequis système : Python 3.10, FFmpeg, LaTeX, OpenGL
ManimGL fonctionne avec Python 3.10 ou supérieur. Les prérequis système incluent FFmpeg (traitement vidéo), OpenGL (rendu graphique), et LaTeX (optionnel, pour la composition mathématique de formules). Sous Linux (Ubuntu/Debian), Pango et ses en-têtes de développement sont requis pour le rendu de texte vectoriel.
L'installation directe via PyPI est la plus simple : `pip install manimgl` suivi d'une exécution `manimgl`. Pour modifier le cœur de la bibliothèque, on clone le dépôt, on exécute `pip install -e .` en mode développement, puis on teste avec `manimgl example_scenes.py OpeningManimExample` ou `manim-render example_scenes.py OpeningManimExample`. Sous Linux, les dépendances système s'installent via apt. Sous Windows, FFmpeg et MiKTeX (distribution LaTeX) doivent être installés manuellement. Sous macOS, Homebrew installe FFmpeg et mactex ; les processeurs ARM nécessitent une installation supplémentaire de Cairo.
Modèle de programmation : scripting Python et rendu vectoriel
Les animations sont définies via des classes Python héritant de la classe `Scene` fournie par la bibliothèque. L'utilisateur crée une classe, définit une méthode `construct()` listant les objets géométriques à créer (carrés, cercles, graphes) et les animations à appliquer (mouvements, transformations, effacements). La bibliothèque gère le rendu vectoriel (via Cairo ou Skia), la composition avec LaTeX (pour les formules), et l'encodage vidéo (via FFmpeg).
Cet approche permet un contrôle précis : chaque animation s'exécute dans un ordre donné, avec des paramètres de durée et d'easing. Le README renvoie vers les scènes d'exemple pour la syntaxe, les types d'animations disponibles et les types d'objets graphiques. Les vidéos complètes de 3Blue1Brown sont dans le dépôt `3b1b/videos` sur GitHub, bien que le code des vidéos plus anciennes puisse ne pas être compatible avec les versions actuelles de ManimGL.
Interface CLI et options de rendu
ManimGL expose un ensemble d'options en ligne de commande. Les principaux drapeaux incluent : `-w` écrit la scène dans un fichier vidéo, `-o` écrit et ouvre le résultat dans un lecteur vidéo, `-s` saute à la fin et affiche le dernier plan, `-so` enregistre le dernier plan comme image et l'affiche, `-n <nombre>` saute à la n-ième animation d'une scène (utile pour déboguer), et `-f` met la fenêtre de lecture en plein écran.
Le fichier de configuration `custom_config.yml` contrôle les paramètres globaux : répertoire de sortie des vidéos, chemins des images et sons à charger, résolution, débit vidéo et palette de couleurs par défaut. Cela permet à l'utilisateur de personnaliser son flux de travail sans modifier le code Python à chaque fois. Le README cite l'exemple du fichier custom_config.yml utilisé par 3Blue1Brown pour montrer les possibilités.
Scènes d'exemple, documentation et workflow interactif
Le dépôt inclut des scènes d'exemple (accessible via `example_scenes.py`) démontrant la syntaxe, les types d'animations et les types d'objets. La documentation progresse à 3b1b.github.io/manim, bien que le README n'indique pas le degré de couverture ou l'état d'avancement.
Le dépôt 3b1b/videos contient le code source de toutes les vidéos de 3Blue1Brown, fournissant des exemples du monde réel pour l'apprentissage. Le même dépôt expose un workflow plus interactif, montré dans une vidéo de démonstration manim sur YouTube. Une version chinoise de la documentation est maintenue par @manim-kindergarten sur docs.manim.org.cn, et le groupe maintient aussi manim_sandbox, un dépôt contenant des classes additionnelles et du code de vidéos.
Versioning, forks et stratégie de maintenance
Les versions publiées incluent v1.7.2 (décembre 2024), v1.7.1 (octobre 2024) et v1.7.0 (octobre 2024). Le cycle de publication suggère un rythme environ bimensuel. Les métadonnées du dépôt montrent 92 146 étoiles, 7 592 forks, 490 problèmes ouverts et le dépôt n'est pas archivé.
Le README note que l'édition communautaire (Manim Community) possède l'écosystème le plus actif pour les contributions, avec plus de tests et une intégration continue robuste. ManimGL (ce dépôt) accepte aussi les pull requests, demandant d'expliquer la motivation du changement et de fournir des exemples de son effet. Cependant, le README n'expose pas de processus formel de relecture, de délais de réponse des mainteneurs ni de politique de versioning sémantique.
Licence MIT, limitations et avertissements
ManimGL est publié sous licence MIT, copyright 3Blue1Brown LLC (2020-2023). MIT est permissive : elle autorise l'utilisation, la copie, la modification, la fusion, la publication, la distribution, la sous-licence et la vente de copies, à condition de préserver les avis de copyright et de permission. Le logiciel est fourni sans garantie, ni expresse ni implicite. Aucune responsabilité légale n'est assumée par les auteurs.
Le README note que bien que ManimGL soit stable pour la plupart des cas, le fork communautaire offre meilleure stabilité, meilleure documentation et une communauté plus active. Le choix entre les deux dépend du use case : ManimGL pour l'expérimentation personnelle ou l'intégration dans un pipeline existant, Manim Community pour un projet communautaire ou un apprentissage en groupe. Le README n'expose aucun engagement de support commercial, aucun SLA, et aucune garantie de compatibilité backward.
Conclusion éditoriale
ManimGL cible les créateurs de vidéos éducatives mathématiques et les développeurs construisant des visualisations algorithmiques. Le projet (v1.7.2, décembre 2024) est régi par MIT et distribué via PyPI sous le nom `manimgl`. Avant production, valider la compatibilité des dépendances système (FFmpeg, LaTeX version, architecture processeur), tester les performances d'export vidéo sur des scènes complexes, et choisir entre ManimGL (original, axes communautaires réduites) et Manim Community (fork plus stable, meilleur support). Le README expose les commandes CLI et les options de configuration sans détailler les limites de résolution, les formats de sortie supportés ou les temps d'export typiques.
Notes de la communauté