animations python module manim

Manim, un module Python pour faire des animations

  • Dernière modification de la publication :14 juillet 2021
  • Temps de lecture :6 min de lecture
  • Commentaires de la publication :4 commentaires

Loading

Manim est un module Python pour faire des animations « simplement ». Tout est relatif… Il m’a fallu quand-même quelques heures pour comprendre la logique du bousin. Mais au final, on peut faire des choses bien sympathiques… comme par exemple cette animation:

Manim Python: installation

Pour plus de détails, regardez la page https://docs.manim.community/en/stable/index.html.

En gros, il suffit d’aller en mode console de son OS et de taper:

pip install manim

Manim Python: un exemple

Le module Manim est orienté objet, ce qui est à mon avis une bonne chose pour comprendre facilement le fonctionnement.

Un code Manim Python

from manim import *

class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()
        square = Square()
        square.flip(RIGHT)
        square.rotate(-3 * TAU / 8)
        circle.set_fill(PINK, opacity=0.5)

        self.play(Create(square))
        self.play(Transform(square, circle))
        self.play(FadeOut(square))

Sauvegardons ce fichier sous le nom « example.py ».

La compilation

Elle se passe en mode console OS (et non console Python, attention !).

Pour effectuer des tests successifs jusqu’à obtention de la vidéo que l’on veut, je vous conseille de créer une vidéo basse résolution :

manim -p -ql example.py SquareToCircle

L’option « -p » permet de lancer la vidéo tout de suite après sa création.

L’option « -ql » génère une vidéo basse résolution.

La syntaxe sera toujours :

manim <options> <fichier.py> <classe>

Attention: cette ligne de commande doit être lancée à partir du dossier dans lequel se trouve le fichier. Sinon, il faudra indiquer le chemin complet du fichier.

Selon le code contenu dans la classe, cette étape peut être plus ou moins longue.

Le résultat est alors la vidéo suivante:

Pour une vidéo de résolution optimale, oubliez le « -ql ».

La logique

Elle est relativement simple: on crée un objet (un texte normal, un objet \(\LaTeX\), un cercle, un point, un carré, un rectangle, …):

cercle = Circle(<options>)

Par défaut, il est au centre de la vidéo. On peut le placer où l’on veut avec la commande « shift »; par exemple:

cercle.shift(LEFT)

pour le placer à gauche, ou bien:

cercle.shift(3 * LEFT)

pour le décaler de 3 fois la longueur qui sépare le centre de son côté gauche.

Ensuite, on lui fait tout ce que l’on veut (il faut bien sûr avoir en tête toutes les méthodes possibles… et donc regarder bien attentivement la documentation).

Un deuxième exemple avec \(\LaTeX\)

class MovingFrameBox(Scene):
    def construct(self):
        text=MathTex(
            "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+",
            "g(x)\\frac{d}{dx}f(x)"
        )
        self.play(Write(text))
        framebox1 = SurroundingRectangle(text[1], buff = .1)
        framebox2 = SurroundingRectangle(text[3], buff = .1)
        self.play(
            Create(framebox1),
        )
        self.wait()
        self.play(
            ReplacementTransform(framebox1,framebox2),
        )
        self.wait()

Le code de la vidéo du début

4 1 vote
Évaluation de l'article
S’abonner
Notification pour
guest
4 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Youcef Khaznadji

Bonjour quand j’utilise le code en j’ai ce message d’erreur:
C:\EduPython\App\lib\site-packages\pydub\utils.py:170: RuntimeWarning: Couldn’t find ffmpeg or avconv – defaulting to ffmpeg, but may not work
warn(« Couldn’t find ffmpeg or avconv – defaulting to ffmpeg, but may not work », RuntimeWarning)
Manim Community v0.9.0″

Avez vous une idée pour régler le problème?

Merci d’avance

Youcef Khaznadji

Bonjour j’ai bien installé ffmpeg et j’ai rajouté le chemin dans le path mais il y a toujours le problème