Bloques básicos
— Campos de CastillaCaminante, no hay camino, se hace camino al andar.
— Antonio Machado
Esquema general
Sección titulada «Esquema general»Después de haber creado nuestras primeras animaciones, vamos a entrar un poco más en detalle. Abajo podemos ver un diagrama resumen sobre como se conectan las principales piezas de Manim.
En pocas palabras
Sección titulada «En pocas palabras»- En el código se define una clase que hereda de la clase
Sceney se sobreescribe el métodoconstructpara definir nuestra escena. - En nuestra escena tendremos instancias de clases llamadas
MObjectssobre las cuales podemos aplicarAnimations. - La clase
Sceneinstancia unManagerencargado de coordinar los distintos pasos del renderizado. - El
Managerllama a los diferentesRendererspara que, a través de lasCamerascapturen a losMObjectsde una escena y las transformaciones que lasAnimationsaplican sobre ellos. - La información enviada de las
Camerasa losRendererses procesada y mandada alSceneFileWriterpara que genere los archivos finales, ya sean imágenes o videos.
A continuación nos iremos adentrando de forma más profunda en cada uno de estos componentes para ir entendiendo cómo podemos utilizarlos para generar animaciones, pero antes de eso debemos entender la anatomía de una escena de Manim.
Pequeño recap
Sección titulada «Pequeño recap»Por ahora, insistiré un poco en la estructura básica de una animación en Manim usando nuestra primera animación como ejemplo:
from manim import *
class MyFirstAnimation(Scene): def construct(self): square = Square() self.play( Write(square) )-
importamos todo de la librería
Manim. No es la mejor práctica, lo sé, pero de esta forma nos podemos concentrar solo en animar y no en hacer imports o agregando texto innecesario.first_animation.py from manim import *class MyFirstAnimation(Scene):def construct(self):square = Square()self.play(Write(square)) -
Creamos una clase que heredará de la clase
ScenedeManim.first_animation.py from manim import *class MyFirstAnimation(Scene):def construct(self):square = Square()self.play(Write(square)) -
Sobreescribimos el método
constructcon nuestrosMobjecty las animaciones que les vamos a aplicar.first_animation.py from manim import *class MyFirstAnimation(Scene):def construct(self):square = Square()self.play(Write(square)) -
Y por último renderizamos nuestra animación desde la terminal.
Ventana de terminal uv run manim first_animation.py -p