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()
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
Bonjour. Comme indiqué par le message, vous n’avez pas installer FFMPEG j’imagine. Or, Manim s’appuie sur FFMPEG pour créer les vidéos. Il faut donc l’installer.
Dans l’article, il est écrit au début qu’il faut consulter la page https://docs.manim.community/en/stable/installation.html pour plus de détails sur l’installation de manim.
Bonjour j’ai bien installé ffmpeg et j’ai rajouté le chemin dans le path mais il y a toujours le problème
python3 -m pip install ffmpeg