Communitygithub.com

aminghaseminia/manim-animation

Produisez des animations mathématiques, scientifiques et techniques avec Manim Community — équations, graphiques, systèmes de coordonnées, géométrie, algorithmes, structures de données et transformations précises de diagrammes. Idéal pour des présentations éducatives, des visuels de recherche ou de conférence, et des dérivations animées où chaque élément doit être placé avec exactitude.

Qu'est-ce que manim-animation ?

Cette compétence permet de créer des animations mathématiques et techniques précises à l'aide de Manim Community, un moteur d'animation Python conçu pour les visuels explicatifs. Elle est idéale pour les développeurs, chercheurs et éducateurs qui doivent animer des équations, des preuves mathématiques, des graphes, des algorithmes ou des structures de données avec une exactitude absolue. La compétence prend en charge l'installation isolée avec `uv` (avec Python 3.12), la conception de scènes, l'utilisation de LaTeX/MathTex, la caméra 3D, les préréglages de qualité de rendu, et la composition avec d'autres outils comme Remotion ou Blender. Grâce à des règles de conception claires et des recettes de composition prêtes à l'emploi, elle garantit que chaque élément — formule, étiquette ou transformation — est mathématiquement correct et visuellement cohérent, évitant les approximations des outils de design classiques.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aminghaseminia/blender-animation-skill/tree/HEAD/skills/manim-animation

Demander à votre IA préférée

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

Documentation

Animation Manim — Vidéo mathématique et technique

Manim est un moteur d'animation Python pour des visuels explicatifs. Sa force réside dans l'exactitude : une formule, un graphique ou une construction peut être animé en tant qu'objet mathématiquement défini, plutôt qu'une approximation dans un outil de design.

Consultez references/MANIM-PLAYBOOK.md pour les modèles et le code. Vérifiez les indicateurs par rapport à la version installée : https://docs.manim.community/en/stable/

1. Quand choisir Manim

Choisissez Manim quand :

  • Des équations, symboles ou preuves sont le sujet.
  • Des systèmes de coordonnées, graphiques, vecteurs ou constructions géométriques doivent être exacts.
  • Un algorithme, une structure de données ou un processus nécessite une explication visuelle étape par étape.
  • Les étiquettes doivent être alignées sur un objet mathématique, et non sur une position de cadre placée manuellement.
  • Le style doit être sobre et schématique, non cinématographique.

N'utilisez pas Manim pour : des animations 3D cinématographiques, des vidéos promotionnelles axées sur une marque, des typographies animées ou des livrables interactifs. Ceux-ci relèvent de Blender, Remotion ou de graphiques web.

2. Installation (isolée, reproductible)

uv --version                     # installez d'abord uv s'il manque
uv init --python 3.12 manim-project
cd manim-project
uv add manim
uv run manim --version

Linux nécessite souvent des bibliothèques natives :

sudo apt update
sudo apt install build-essential python3-dev pkg-config libcairo2-dev libpango1.0-dev ffmpeg
sudo apt install texlive texlive-latex-extra texlive-fonts-recommended   # pour MathTex/Tex

macOS : brew install cairo pango pkg-config ffmpeg et une distribution TeX comme MacTeX si MathTex est utilisé. Windows : installez FFmpeg et MiKTeX/TeX Live ; les outils de build C++ de Microsoft peuvent être nécessaires pour les wheels Cairo/Pango.

Vérifiez :

uv run manim --version
uv run python -c "import manim; print(manim.__version__)"

N'installez pas Manim dans le Python système si un environnement de projet est disponible. Enregistrez la version dans le README du projet.

3. Commandes de rendu

# aperçu basse qualité (rapide)
uv run manim -pql scenes/explain.py ExplainScene

# moyen
uv run manim -qm scenes/explain.py ExplainScene

# haute / production
uv run manim -qh scenes/explain.py ExplainScene

# 4K
uv run manim -qk scenes/explain.py ExplainScene

# fond transparent
uv run manim -qh -t scenes/explain.py ExplainScene

# section spécifique
uv run manim -qh scenes/explain.py ExplainScene -n 12,20

Préréglages de qualité : -ql 480p15, -qm 720p30, -qh 1080p60, -qk 2160p60. Confirmez dans la version installée. La sortie se trouve dans media/videos/<fichier>/<qualité>/.

ffprobe -v error -show_entries stream=width,height,r_frame_rate,duration \
  -of json media/videos/explain/1080p60/ExplainScene.mp4

4. Règles de conception des scènes

  • Une idée par scène. Divisez en sous-classes de Scene ; composez une vidéo plus longue par concaténation, pas avec une seule scène géante.
  • Définissez la palette et les polices une fois dans un module (theme.py) et importez-les, plutôt que de répéter des valeurs hexadécimales.
  • Contraignez la caméra. La MovingCameraScene de Manim est puissante et facile à abuser ; zoomez uniquement pour révéler une structure que le spectateur ne pourrait pas voir autrement.
  • Respectez la durée. Une dérivation de formule qui se lit bien en 3 minutes semblera précipitée en 40 secondes. Calculez le temps de fixation à partir de la vitesse de lecture, pas de l'intuition.
  • Gardez les étiquettes attachées à l'objet qu'elles décrivent (Tex + next_to), afin qu'un changement de disposition ultérieur ne brise pas silencieusement l'alignement.
  • Utilisez Transform/ReplacementTransform pour le sens, FadeIn/FadeOut pour la présence. Morphing de formes non liées perturbe les spectateurs.
  • N'animez pas chaque élément indépendamment. Regroupez avec VGroup et échelonnez intentionnellement.

5. Recette de composition

from manim import *

class ExplainScene(Scene):
    def construct(self):
        title = Text("Pourquoi la dérivée est une limite", font="Inter").scale(0.7)
        self.play(Write(title), run_time=1.2)
        self.wait(0.6)
        self.play(title.animate.to_edge(UP).scale(0.8), run_time=0.9)

        formula = MathTex(r"f'(x) = \lim_{h \to 0} \frac{f(x+h)-f(x)}{h}")
        formula.scale(1.2)
        self.play(Write(formula), run_time=1.6)
        self.wait(1.2)

        self.play(formula.animate.set_color_by_tex(r"h \to 0", YELLOW), run_time=0.8)
        self.wait(1.5)

6. Exportation et transfert

  • -qh produit du 1080p60 à haut débit ; ré-encodez pour la livraison plutôt que d'expédier l'intermédiaire.
  • Transparence : -t écrit un .mov avec alpha (ou une séquence PNG avec --format=png). Vérifiez l'alpha sur un damier avant de composer.
  • Pour combiner Manim avec Remotion/Blender : faites correspondre les FPS et la résolution, puis assemblez dans FFmpeg ou Remotion. Manim utilise par défaut 60 FPS en -qh ; changez config.frame_rate ou convertissez délibérément.
  • Pour les intros/outros de marque et les sous-titres, rendez les scènes Manim propres et composez-les dans Remotion — ne luttez pas contre le système de typographie de Manim pour la mise en page de la marque.

7. Validation

  • Regardez le rendu basse qualité avant le rendu haute qualité ; les erreurs mathématiques sont visibles en 480p.
  • Vérifiez qu'aucune formule n'est coupée au bord du cadre et qu'aucune étiquette n'en chevauche une autre.
  • Vérifiez que LaTeX a compilé sans replis silencieux (cherchez des avertissements de texte rouge dans la console).
  • Confirmez la durée finale et la fréquence d'images avec ffprobe.
  • Lisez chaque symbole à voix haute par rapport au calcul visé ; un signe inversé est un bogue de correction, pas un choix de style.

8. Échecs courants

SymptômeCauseCorrection
latex: command not foundPas de distribution TeXInstallez TeX Live/MiKTeX, ou utilisez Text au lieu de MathTex
Erreur de build Cairo/PangoBibliothèques natives manquantesInstallez les paquets de développement listés ci-dessus
Une formule s'affiche comme un texte d'erreur rougeSyntaxe LaTeX ou paquet manquantVérifiez la console ; ajoutez les paquets TexTemplate
Tout semble flouPréréglage basse qualitéRendez en -qh/-qk pour le résultat final
Texte grec/arabe casséLa police manque de glyphes ou de façonnageUtilisez une police avec capacité de façonnage, testez une image fixe, ou pixellisez le texte
Rendu très lent60 FPS + 4K + chemins complexesPrévisualisez en -ql, simplifiez les chemins, divisez les scènes
Transparence perdueMauvais formatUtilisez -t et un conteneur compatible alpha ; vérifiez

9. Références officielles

Individual skills in this repo

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

aminghaseminia/blender-animation

Build 3D animations in Blender headlessly with Python (bpy) — scene setup, materials, lighting, camera rigs, keyframe and procedural animation, Geometry Nodes, particles and simulations, EEVEE/Cycles rendering, and MP4/PNG-sequence output. Triggers include "animate in Blender", "blender python", "bpy script", "3D logo animation", "cinematic render", "particle animation", "product turntable", "render an .blend", "blender headless", or any 3D scene, camera move, or motion graphics job that needs real geometry, light, and depth.

aminghaseminia/motion-design

Art direction and motion-design craft for animation projects — creative briefs, storyboards, style frames, colour and type systems, composition, timing and easing, transition vocabulary, sound direction, accessibility, and right-to-left (Persian/Arabic) typography. Use before building scenes, when a video looks amateur or generic, when choosing palette and fonts, when a request says "make it feel premium/cinematic/modern", or when text, rhythm, or hierarchy is not landing. Tool-agnostic; pairs with blender-animation, remotion-motion-graphics, and manim-animation.

aminghaseminia/motion-studio

End-to-end animation and motion-graphics production from a natural-language brief. Routes work to Blender (3D), Remotion (2D/typography/data), Manim (math/science), motion-design craft, and FFmpeg (encode/composite/validate), then builds, previews, inspects, revises, and delivers an editable project plus final MP4. Use for any request to "make an animation", "create a video", "animate this logo", "render a motion graphic", "vibe-code an animation", or produce a promo, explainer, title sequence, or social clip.

aminghaseminia/remotion-motion-graphics

Create 2D motion graphics as code with Remotion and React — kinetic typography, logo reveals, explainers, animated charts, UI demos, social clips, subtitles, and data-driven or batch-rendered video. Use when the deliverable is primarily layout, text, and 2D graphics rather than real 3D; when a video must be generated from data or a template; or when a Blender 3D pass needs titles, captions, and transitions composited on top. Covers project setup, deterministic frame-based animation, easing, typography, audio, rendering, and licensing.

aminghaseminia/video-composition

Assemble, mix, normalize, and validate finished video from Blender, Remotion, Manim, screen capture, and audio sources using FFmpeg and FFprobe — concatenation, overlays, alpha compositing, subtitle burn-in, loudness, fades, speed ramps, GIF/thumbnail export, and platform-specific encodes. Use when combining scenes, fixing mismatched resolutions or frame rates, adding music/voice-over, burning captions, converting formats, or verifying that a rendered file is actually correct.

Skills associés