Ir al contenido

Bloques básicos

— Campos de Castilla

Caminante, no hay camino, se hace camino al andar.

— Antonio Machado

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 el código se define una clase que hereda de la clase Scene y se sobreescribe el método construct para definir nuestra escena.
  • En nuestra escena tendremos instancias de clases llamadas MObjects sobre las cuales podemos aplicar Animations.
  • La clase Scene instancia un Manager encargado de coordinar los distintos pasos del renderizado.
  • El Manager llama a los diferentes Renderers para que, a través de las Cameras capturen a los MObjects de una escena y las transformaciones que las Animations aplican sobre ellos.
  • La información enviada de las Cameras a los Renderers es procesada y mandada al SceneFileWriter para 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.

Por ahora, insistiré un poco en la estructura básica de una animación en Manim usando nuestra primera animación como ejemplo:

first_animation.py
from manim import *
class MyFirstAnimation(Scene):
def construct(self):
square = Square()
self.play(
Write(square)
)
  1. 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)
    )
  2. Creamos una clase que heredará de la clase Scene de Manim.

    first_animation.py
    from manim import *
    class MyFirstAnimation(Scene):
    def construct(self):
    square = Square()
    self.play(
    Write(square)
    )
  3. Sobreescribimos el método construct con nuestros Mobject y 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)
    )
  4. Y por último renderizamos nuestra animación desde la terminal.

    Ventana de terminal
    uv run manim first_animation.py -p