Communitygithub.com

shashi-ai10/manim-video - Pipeline de Production Vidéo Manim

Pipeline de production pour animations mathématiques et techniques avec Manim Community Edition. Crée des vidéos explicatives façon 3Blue1Brown, des visualisations d'algorithmes, des dérivations d'équations, des diagrammes d'architecture et des récits de données. À utiliser lorsque l'utilisateur demande : explications animées, animations mathématiques, visualisations de concepts, présentations d'algorithmes, vidéos explicatives techniques, style 3Blue1Brown, ou toute animation programmatique à contenu géométrique/mathématique.

Qu'est-ce que manim-video - Pipeline de Production Vidéo Manim ?

Ce pipeline de production vidéo permet de créer des animations mathématiques et techniques de haute qualité avec Manim Community Edition, dans le style des vidéos 3Blue1Brown. Il transforme des sujets complexes (mathématiques, algorithmes, architecture, données) en récits visuels pédagogiques en suivant un processus en six étapes : planification, codage, rendu, assemblage, audio (optionnel) et révision. Basé sur un standard de créativité exigeant, il impose une réflexion narrative approfondie avant tout codage, une hiérarchisation des éléments par opacité, des temps de pause pour laisser le spectateur assimiler, et une homogénéité esthétique (palette de couleurs, typographie, vitesses d’animation). Le pipeline accepte plusieurs modes d’entrée : concept, équation, algorithme, données, architecture, article de recherche et visualisation 3D. Chaque scène est une classe Python indépendante, reproductible avec Manim, avec des sous-titres intégrés et des transitions fluides. Il cible les environnements locaux (Python 3.10+, LaTeX, ffmpeg) et ne nécessite ni navigateur, ni GPU.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shashi-ai10/Manim-Skill-Project-Integration/tree/HEAD/manim-skill-main/skills/manim-video

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Pipeline de Production Vidéo Manim

Standard Créatif

Ceci est un cinéma éducatif. Chaque image enseigne. Chaque animation révèle une structure.

Avant d'écrire une seule ligne de code, exprimez l'arc narratif. Quelle idée fausse cette animation corrige-t-elle ? Quel est le "moment déclic" ? Quelle histoire visuelle conduit le spectateur de la confusion à la compréhension ? L'invite de l'utilisateur n'est qu'un point de départ — interprétez-la avec ambition pédagogique.

La géométrie avant l'algèbre. Montrez d'abord la forme, l'équation ensuite. La mémoire visuelle encode plus vite que la mémoire symbolique. Lorsque le spectateur voit le motif géométrique avant la formule, l'équation semble méritée.

L'excellence dès le premier rendu est non négociable. Le résultat doit être visuellement clair et esthétiquement cohérent sans cycles de révision. Si quelque chose semble encombré, mal rythmé ou "ressemble à des diapositives générées par IA", c'est raté.

L'opacité par couches dirige l'attention. Ne montrez jamais tous les éléments à pleine luminosité. Éléments principaux à 1.0, éléments contextuels à 0.4, éléments structurels (axes, grilles) à 0.15. Le cerveau traite la saillance visuelle par couches.

Respiration. Chaque animation a besoin d'un self.wait() après elle. Le spectateur a besoin de temps pour assimiler ce qui vient d'apparaître. Ne passez jamais rapidement d'une animation à l'autre. Une pause de 2 secondes après une révélation clé n'est jamais perdue.

Langage visuel cohérent. Toutes les scènes partagent une palette de couleurs, une taille de typographie cohérente, des vitesses d'animation assorties. Une vidéo techniquement correcte où chaque scène utilise des couleurs aléatoires différentes est un échec esthétique.

Prérequis

Exécutez scripts/setup.sh pour vérifier toutes les dépendances. Nécessite : Python 3.10+, Manim Community Edition v0.20+ (pip install manim), LaTeX (texlive-full sur Linux, mactex sur macOS), et ffmpeg. La documentation de référence a été testée avec Manim CE v0.20.1.

Modes

ModeEntréeSortieRéférence
Explication de conceptSujet/conceptExplication animée avec intuition géométriquereferences/scene-planning.md
Dérivation d'équationExpressions mathématiquesPreuve animée pas à pasreferences/equations.md
Visualisation d'algorithmeDescription d'algorithmeExécution pas à pas avec structures de donnéesreferences/graphs-and-data.md
Récit de donnéesDonnées/mesuresGraphiques animés, comparaisons, compteursreferences/graphs-and-data.md
Diagramme d'architectureDescription de systèmeComposants qui se construisent avec connexionsreferences/mobjects.md
Explication d'article de rechercheArticle de rechercheRésultats et méthodes clés animésreferences/scene-planning.md
Visualisation 3DConcept 3DSurfaces rotatives, courbes paramétriques, géométrie spatialereferences/camera-and-3d.md

Stack

Un seul script Python par projet. Pas de navigateur, pas de Node.js, pas de GPU requis.

CoucheOutilObjectif
CœurManim Community EditionRendu de scène, moteur d'animation
MathématiquesLaTeX (texlive/MiKTeX)Rendu d'équations via MathTex
Vidéo I/OffmpegAssemblage de scènes, conversion de format, multiplexage audio
TTSElevenLabs / Qwen3-TTS (optionnel)Voix off de narration

Pipeline

PLANIFIER --> CODER --> RENDU --> ASSEMBLER --> AUDIO (optionnel) --> RÉVISER
  1. PLANIFIER — Rédigez plan.md avec l'arc narratif, la liste des scènes, les éléments visuels, la palette de couleurs, le script de voix off
  2. CODER — Rédigez script.py avec une classe par scène, chaque scène étant indépendamment rendable
  3. RENDU — manim -ql script.py Scene1 Scene2 ... pour l'ébauche, -qh pour la production
  4. ASSEMBLER — Concaténation ffmpeg des clips de scène dans final.mp4
  5. AUDIO (optionnel) — Ajoutez une voix off et/ou une musique de fond via ffmpeg. Voir references/rendering.md
  6. RÉVISER — Rendu d'images d'aperçu, vérification par rapport au plan, ajustements

Structure du Projet

nom-du-projet/
  plan.md                # Arc narratif, décomposition des scènes
  script.py              # Toutes les scènes dans un seul fichier
  concat.txt             # Liste des scènes pour ffmpeg
  final.mp4              # Sortie assemblée
  media/                 # Généré automatiquement par Manim
    videos/script/480p15/

Direction Créative

Palettes de Couleurs

PaletteFondPrimaireSecondaireAccentCas d'utilisation
Classique 3B1B#1C1C1C#58C4DD (BLEU)#83C167 (VERT)#FFFF00 (JAUNE)Maths/Info généraux
Académique chaleureux#2D2B55#FF6B6B#FFD93D#6BCB77Accessible
Techno néon#0A0A0A#00F5FF#FF00FF#39FF14Systèmes, architecture
Monochrome#1A1A2E#EAEAEA#888888#FFFFFFMinimaliste

Vitesse d'Animation

Contexterun_timeself.wait() après
Apparition du titre/intro1.5s1.0s
Révélation d'équation clé2.0s2.0s
Transformation/morphing1.5s1.5s
Étiquette de support0.8s0.5s
Nettoyage FadeOut0.5s0.3s
Révélation "moment déclic"2.5s3.0s

Échelle Typographique

RôleTaille de policeUtilisation
Titre48Titres de scène, texte d'ouverture
En-tête36En-têtes de section dans une scène
Corps30Texte explicatif
Étiquette24Annotations, étiquettes d'axes
Légende20Sous-titres, petits caractères

Polices

Utilisez des polices à chasse fixe pour tout le texte. Le moteur Pango de Manim produit un crénage cassé avec les polices proportionnelles à toutes les tailles. Voir references/visual-design.md pour les recommandations complètes.

MONO = "Menlo"  # définir une fois en haut du fichier

Text("Série de Fourier", font_size=48, font=MONO, weight=BOLD)  # titres
Text("n=1: sin(x)", font_size=20, font=MONO)                   # étiquettes
MathTex(r"\nabla L")                                            # maths (utilise LaTeX)

Taille minimale font_size=18 pour la lisibilité.

Variation par Scène

N'utilisez jamais la même configuration pour toutes les scènes. Pour chaque scène :

  • Une couleur dominante différente de la palette
  • Une disposition différente — ne centrez pas toujours tout
  • Une entrée d'animation différente — variez entre Write, FadeIn, GrowFromCenter, Create
  • Un poids visuel différent — certaines scènes denses, d'autres épurées

Flux de Travail

Étape 1 : Planifier (plan.md)

Avant tout code, rédigez plan.md. Voir references/scene-planning.md pour le modèle complet.

Étape 2 : Coder (script.py)

Une classe par scène. Chaque scène est rendable indépendamment.

from manim import *

BG = "#1C1C1C"
PRIMARY = "#58C4DD"
SECONDARY = "#83C167"
ACCENT = "#FFFF00"
MONO = "Menlo"

class Scene1_Introduction(Scene):
    def construct(self):
        self.camera.background_color = BG
        title = Text("Pourquoi Cela Fonctionne-t-il ?", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)
        self.add_subcaption("Pourquoi cela fonctionne-t-il ?", duration=2)
        self.play(Write(title), run_time=1.5)
        self.wait(1.0)
        self.play(FadeOut(title), run_time=0.5)

Modèles clés :

  • Sous-titres sur chaque animation : self.add_subcaption("texte", duration=N) ou subcaption="texte" sur self.play()
  • Constantes de couleur partagées en haut du fichier pour la cohérence entre les scènes
  • self.camera.background_color défini dans chaque scène
  • Sorties propres — FadeOut de tous les mobjects à la fin de la scène : self.play(FadeOut(Group(*self.mobjects)))

Étape 3 : Rendu

manim -ql script.py Scene1_Introduction Scene2_CoreConcept  # ébauche
manim -qh script.py Scene1_Introduction Scene2_CoreConcept  # production

Étape 4 : Assembler

cat > concat.txt << 'EOF'
file 'media/videos/script/480p15/Scene1_Introduction.mp4'
file 'media/videos/script/480p15/Scene2_CoreConcept.mp4'
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4

Étape 5 : Réviser

manim -ql --format=png -s script.py Scene2_CoreConcept  # image d'aperçu

Notes d'Implémentation Critiques

Chaînes Brutes pour LaTeX

# FAUX : MathTex("\frac{1}{2}")
# CORRECT :
MathTex(r"\frac{1}{2}")

buff >= 0.5 pour le Texte en Bordure

label.to_edge(DOWN, buff=0.5)  # jamais < 0.5

FadeOut Avant de Remplacer du Texte

self.play(ReplacementTransform(note1, note2))  # pas Write(note2) par-dessus

N'Animez Jamais des Mobjects Non Ajoutés

self.play(Create(circle))  # doit d'abord l'ajouter
self.play(circle.animate.set_color(RED))  # puis l'animer

Objectifs de Performance

QualitéRésolutionFPSVitesse
-ql (ébauche)854x480155-15s/scène
-qm (moyenne)1280x7203015-60s/scène
-qh (production)1920x10806030-120s/scène

Itérez toujours en -ql. Ne faites un rendu en -qh que pour la sortie finale.

Références

FichierContenu
references/animations.mdAnimations de base, fonctions de taux, composition, syntaxe .animate, modèles de rythme
references/mobjects.mdTexte, formes, VGroup/Group, positionnement, style, mobjects personnalisés
references/visual-design.md12 principes de design, mise en couches d'opacité, modèles de disposition, palettes de couleurs
references/equations.mdLaTeX dans Manim, TransformMatchingTex, modèles de dérivation
references/graphs-and-data.mdAxes, tracé, BarChart, données animées, visualisation d'algorithmes
references/camera-and-3d.mdMovingCameraScene, ThreeDScene, surfaces 3D, contrôle de caméra
references/scene-planning.mdArcs narratifs, modèles de disposition, transitions de scène, modèle de planification
references/rendering.mdRéférence CLI, préréglages de qualité, ffmpeg, flux de travail voix off, export GIF
references/troubleshooting.mdErreurs LaTeX, erreurs d'animation, erreurs courantes, débogage
references/animation-design-thinking.mdQuand animer vs montrer du statique, décomposition, rythme, synchronisation narration
references/updaters-and-trackers.mdValueTracker, add_updater, always_redraw, updateurs temporels, modèles
references/paper-explainer.mdTransformer des articles de recherche en animations — flux de travail, modèles, modèles par domaine
references/decorations.mdSurroundingRectangle, Brace, flèches, DashedLine, Angle, cycle de vie des annotations
references/production-quality.mdListes de contrôle avant code, avant rendu, après rendu, disposition spatiale, couleur, tempo

Divergence Créative (à utiliser uniquement lorsque l'utilisateur demande une sortie expérimentale/créative/unique)

Si l'utilisateur demande des approches explicatives créatives, expérimentales ou non conventionnelles, sélectionnez une stratégie et raisonnez-la AVANT de concevoir l'animation.

  • SCAMPER — lorsque l'utilisateur souhaite un regard neuf sur une explication standard
  • Inversion des Hypothèses — lorsque l'utilisateur souhaite remettre en question la manière dont un sujet est habituellement enseigné

Transformation SCAMPER

Prenez une visualisation mathématique/technique standard et transformez-la :

  • Substituer : remplacez la métaphore visuelle standard (droite numérique → chemin sinueux, matrice → grille de ville)
  • Combiner : fusionnez deux approches explicatives (algébrique + géométrique simultanément)
  • Inverser : dérivez à rebours — partez du résultat et déconstruisez jusqu'aux axiomes
  • Modifier : exagérez un paramètre pour montrer pourquoi il compte (taux d'apprentissage x10, taille d'échantillon x1000)
  • Éliminer : supprimez toute notation — expliquez uniquement par animation et relations spatiales

Inversion des Hypothèses

  1. Listez ce qui est "standard" dans la visualisation de ce sujet (gauche à droite, 2D, étapes discrètes, notation formelle)
  2. Choisissez l'hypothèse la plus fondamentale
  3. Inversez-la (dérivation droite à gauche, plongement 3D d'un concept 2D, morphing continu au lieu d'étapes, zéro notation)
  4. Explorez ce que l'inversion révèle que l'approche standard cache

Skills associés