Comment utiliser
Lisez les fichiers de règles individuels pour des explications détaillées et des exemples de code :
Concepts fondamentaux
- rules/scenes.md – InteractiveScene, types de scènes et méthode construct
- rules/mobjects.md – Types de mobjets, VMobject, groupes et positionnement
- rules/animations.md – Classes d’animation, lecture d’animations et minutage
Création et transformation
- rules/creation-animations.md – ShowCreation, Write, FadeIn, DrawBorderThenFill
- rules/transform-animations.md – Transform, ReplacementTransform, TransformMatchingTex
- rules/animation-groups.md – LaggedStart, Succession, AnimationGroup
Texte et mathématiques
- rules/tex.md – Classe Tex, chaînes brutes R"..." et rendu LaTeX
- rules/text.md – Objets texte, polices et style
- rules/t2c.md – tex_to_color_map (t2c) pour colorer des expressions mathématiques
Style et apparence
- rules/colors.md – Constantes de couleur, dégradés, RVB, hex, colorisation GLSL
- rules/styling.md – Remplissage, contour, opacité, arrière-contour, brillance, ombre
3D et caméra
- rules/3d.md – Objets 3D, surfaces, sphère, tore, surfaces paramétriques, éclairage
- rules/camera.md – frame.reorient(), angles d’Euler, fix_in_frame(), animations de caméra
Développement interactif
- rules/interactive.md – Mode interactif avec le flag
-se, checkpoint_paste() - rules/frame.md – self.frame, contrôle de la caméra, réorientation et zoom
- rules/embedding.md – self.embed() pour le débogage IPython, mode touch()
Configuration & CLI
- rules/cli.md – Commande manimgl, flags (-w, -o, -se, -l, -h), options de rendu
- rules/config.md – custom_config.yml, répertoires, paramètres de caméra, préréglages de qualité
Exemples fonctionnels
Fichiers d’exemple complets et testés illustrant les motifs courants :
- examples/basic_animations.py – Formes de base, texte et animations
- examples/math_visualization.py – Équations LaTeX et contenu mathématique
- examples/graph_plotting.py – Axes, fonctions et traçage de graphiques
- examples/3d_visualization.py – Scènes 3D avec contrôle de la caméra et surfaces
- examples/updater_patterns.py – Animations dynamiques avec mises à jour
Modèles de scène
Copiez et modifiez ces modèles pour démarrer de nouveaux projets :
- templates/basic_scene.py – Modèle standard pour scène 2D
- templates/interactive_scene.py – InteractiveScene avec self.embed()
- templates/3d_scene.py – Scène 3D avec frame.reorient()
- templates/math_scene.py – Démonstrations et équations mathématiques
Référence rapide
Structure de base d’une scène
from manimlib import *
class MaScene(InteractiveScene):
def construct(self):
# Créer des mobjets
cercle = Circle()
# Ajouter à la scène (statique)
self.add(cercle)
# Ou animer
self.play(ShowCreation(cercle)) # Note : ShowCreation, pas Create
# Attendre
self.wait(1)
Commande de rendu
# Rendre et prévisualiser
manimgl scene.py MaScene
# Mode interactif – plonge dans un shell à la ligne 15
manimgl scene.py MaScene -se 15
# Écrire dans un fichier
manimgl scene.py MaScene -w
# Basse qualité pour les tests
manimgl scene.py MaScene -l
Différences clés avec ManimCE
| Fonctionnalité | ManimGL (3b1b) | Manim Communauté |
|---|---|---|
| Import | from manimlib import * | from manim import * |
| CLI | manimgl | manim |
| Texte mathématique | Tex(R"\pi") | MathTex(r"\pi") |
| Scène | InteractiveScene | Scene |
| Animation de création | ShowCreation | Create |
| Caméra | self.frame | self.camera.frame |
| Fixer dans le cadre | mob.fix_in_frame() | self.add_fixed_in_frame_mobjects(mob) |
| Paquet | manimgl (PyPI) | manim (PyPI) |
Workflow de développement interactif
La fonctionnalité phare de ManimGL est le développement interactif :
# Commencer à la ligne 20 avec l’état préservé
manimgl scene.py MaScene -se 20
En mode interactif :
# Copier le code dans le presse-papiers, puis exécuter :
checkpoint_paste() # Exécuter avec les animations
checkpoint_paste(skip=True) # Exécuter instantanément (sans animations)
checkpoint_paste(record=True) # Enregistrer pendant l’exécution
Contrôle de la caméra (self.frame)
# Obtenir le cadre de la caméra
cadre = self.frame
# Réorienter en 3D (phi, theta, gamma, centre, hauteur)
cadre.reorient(45, -30, 0, ORIGIN, 8)
# Animer le mouvement de la caméra
self.play(cadre.animate.reorient(60, -45, 0))
# Fixer des mobjets pour qu’ils restent dans l’espace écran en 3D
title.fix_in_frame()
LaTeX avec la classe Tex
# Utiliser des chaînes brutes avec R majuscule
formule = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")
# Mappage de couleurs avec t2c
equation = Tex(
R"E = mc^2",
t2c={"E": BLUE, "m": GREEN, "c": YELLOW}
)
# Isoler des sous-chaînes pour l’animation
formule = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")
formule.set_color_by_tex("n", BLUE)
Motifs courants
Utilisation de embed pour le débogage
def construct(self):
cercle = Circle()
self.play(ShowCreation(cercle))
self.embed() # Plonge dans un shell IPython ici
Définir le plan de sol pour la 3D
self.set_floor_plane("xz") # Fait de xy le plan de visualisation
Contour arrière pour la lisibilité du texte
texte = Text("Étiquette")
texte.set_backstroke(BLACK, 5) # Contour noir derrière le texte
Installation
# Installer ManimGL
pip install manimgl
# Vérifier l’installation
manimgl --version
Pièges courants à éviter
- Confusion de version – Assurez-vous d’utiliser
manimgl, pasmanim(version communauté) - ShowCreation vs Create – ManimGL utilise
ShowCreation, pasCreate - Tex vs MathTex – ManimGL utilise
Texavec des chaînes brutes R majuscule - self.frame vs self.camera.frame – ManimGL utilise
self.framedirectement - fix_in_frame() – Appelez-le sur le mobjet, pas sur la scène
- Mode interactif – Utilisez le flag
-sepour le développement interactif
Licence & Attribution
Cette compétence contient des exemples de code adaptés du dépôt de vidéos de 3Blue1Brown par Grant Sanderson.
Licence : CC BY-NC-SA 4.0
- Attribution requise – Créditez à la fois 3Blue1Brown et l’adaptateur
- NonCommercial – Pas d’utilisation commerciale
- ShareAlike – Les dérivés doivent utiliser la même licence
Voir LICENSE.txt pour les détails complets.