Communitygithub.com

manimgl-mejores-practicas

Guía completa de mejores prácticas para ManimGL (3b1b) con ejemplos, plantillas y referencias rápidas. Abarca escenas, mobjects, animaciones, LaTeX, 3D, desarrollo interactivo y configuración CLI.

¿Qué es manimgl-mejores-practicas?

Este skill proporciona una referencia completa y documentación de mejores prácticas para ManimGL, la biblioteca de animación matemática de 3Blue1Brown. Es útil para cualquier desarrollador o creador de contenido que desee crear animaciones matemáticas de alta calidad con ManimGL. El skill cubre las diferencias clave con la versión comunitaria (ManimCE), incluyendo importaciones, CLI, clases de animación y control de cámara. Está organizado en reglas detalladas por tema (escenas, mobjects, animaciones, LaTeX, 3D, desarrollo interactivo) e incluye ejemplos funcionales completos, plantillas de escenas reutilizables y una tabla de referencia rápida de diferencias. El enfoque principal es facilitar el desarrollo interactivo utilizando el modo `-se` y funciones como `checkpoint_paste()`, y resolver confusiones comunes (como ShowCreation vs Create, Tex vs MathTex, y self.frame vs self.camera.frame).

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/adithya-s-k/manim_skill/tree/main/skills/manimgl-best-practices

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Cómo usar

Lee los archivos de reglas individuales para explicaciones detalladas y ejemplos de código:

Conceptos básicos

Creación y transformación

Texto y matemáticas

  • rules/tex.md - Clase Tex, cadenas raw R"..." y renderizado LaTeX
  • rules/text.md - Mobjects de texto, fuentes y estilo
  • rules/t2c.md - tex_to_color_map (t2c) para colorear expresiones matemáticas

Estilo y apariencia

3D y cámara

  • rules/3d.md - Objetos 3D, superficies, Esfera, Toro, superficies paramétricas, iluminación
  • rules/camera.md - frame.reorient(), ángulos de Euler, fix_in_frame(), animaciones de cámara

Desarrollo interactivo

Configuración y CLI

  • rules/cli.md - Comando manimgl, flags (-w, -o, -se, -l, -h), opciones de renderizado
  • rules/config.md - custom_config.yml, directorios, configuración de cámara, ajustes de calidad

Ejemplos funcionales

Archivos de ejemplo completos y probados que muestran patrones comunes:

Plantillas de escenas

Copia y modifica estas plantillas para comenzar nuevos proyectos:

Referencia rápida

Estructura básica de una escena

from manimlib import *

class MyScene(InteractiveScene):
    def construct(self):
        # Crear mobjects
        circle = Circle()

        # Añadir a la escena (estático)
        self.add(circle)

        # O animar
        self.play(ShowCreation(circle))  # Nota: ShowCreation, no Create

        # Esperar
        self.wait(1)

Comando de renderizado

# Renderizar y previsualizar
manimgl scene.py MyScene

# Modo interactivo - abre shell en la línea 15
manimgl scene.py MyScene -se 15

# Escribir a archivo
manimgl scene.py MyScene -w

# Baja calidad para pruebas
manimgl scene.py MyScene -l

Diferencias clave con ManimCE

CaracterísticaManimGL (3b1b)Manim Community
Importaciónfrom manimlib import *from manim import *
CLImanimglmanim
Texto matemáticoTex(R"\pi")MathTex(r"\pi")
EscenaInteractiveSceneScene
Animación de creaciónShowCreationCreate
Cámaraself.frameself.camera.frame
Fijar en pantallamob.fix_in_frame()self.add_fixed_in_frame_mobjects(mob)
Paquetemanimgl (PyPI)manim (PyPI)

Flujo de trabajo de desarrollo interactivo

La característica estrella de ManimGL es el desarrollo interactivo:

# Iniciar en la línea 20 con estado preservado
manimgl scene.py MyScene -se 20

En modo interactivo:

# Copia código al portapapeles, luego ejecuta:
checkpoint_paste()           # Ejecutar con animaciones
checkpoint_paste(skip=True)  # Ejecutar instantáneamente (sin animaciones)
checkpoint_paste(record=True) # Grabar mientras se ejecuta

Control de cámara (self.frame)

# Obtener el frame de la cámara
frame = self.frame

# Reorientar en 3D (phi, theta, gamma, centro, altura)
frame.reorient(45, -30, 0, ORIGIN, 8)

# Animar movimiento de cámara
self.play(frame.animate.reorient(60, -45, 0))

# Fijar mobjects para que permanezcan en espacio de pantalla durante movimiento 3D
title.fix_in_frame()

LaTeX con la clase Tex

# Usar cadenas raw con R mayúscula
formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")

# Mapeo de colores con t2c
equation = Tex(
    R"E = mc^2",
    t2c={"E": BLUE, "m": GREEN, "c": YELLOW}
)

# Aislar subcadenas para animación
formula = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")
formula.set_color_by_tex("n", BLUE)

Patrones comunes

Embedding para depuración

def construct(self):
    circle = Circle()
    self.play(ShowCreation(circle))
    self.embed()  # Abre shell IPython aquí

Establecer plano base para 3D

self.set_floor_plane("xz")  # Hace que xy sea el plano de visualización

Backstroke para legibilidad de texto

text = Text("Etiqueta")
text.set_backstroke(BLACK, 5)  # Contorno negro detrás del texto

Instalación

# Instalar ManimGL
pip install manimgl

# Verificar instalación
manimgl --version

Errores comunes a evitar

  1. Confusión de versiones - Asegúrate de usar manimgl, no manim (versión comunitaria)
  2. ShowCreation vs Create - ManimGL usa ShowCreation, no Create
  3. Tex vs MathTex - ManimGL usa Tex con cadenas raw R mayúscula
  4. self.frame vs self.camera.frame - ManimGL usa self.frame directamente
  5. fix_in_frame() - Llámalo en el mobject, no en la escena
  6. Modo interactivo - Usa el flag -se para desarrollo interactivo

Licencia y atribución

Este skill contiene código de ejemplo adaptado del repositorio de videos de 3Blue1Brown por Grant Sanderson.

Licencia: CC BY-NC-SA 4.0

  • Atribución requerida - Acreditar tanto a 3Blue1Brown como al adaptador
  • NoComercial - No para uso comercial
  • CompartirIgual - Las obras derivadas deben usar la misma licencia

Ver LICENSE.txt para más detalles.

Individual skills in this repo

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

Skills relacionados