Cómo usar
Lee los archivos de reglas individuales para explicaciones detalladas y ejemplos de código:
Conceptos básicos
- rules/scenes.md - InteractiveScene, tipos de escena y método construct
- rules/mobjects.md - Tipos de Mobject, VMobject, grupos y posicionamiento
- rules/animations.md - Clases de animación, reproducción de animaciones y temporización
Creación y transformación
- rules/creation-animations.md - ShowCreation, Write, FadeIn, DrawBorderThenFill
- rules/transform-animations.md - Transform, ReplacementTransform, TransformMatchingTex
- rules/animation-groups.md - LaggedStart, Succession, AnimationGroup
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
- rules/colors.md - Constantes de color, degradados, RGB, hex, coloreado GLSL
- rules/styling.md - Relleno, trazo, opacidad, backstroke, brillo, sombra
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
- rules/interactive.md - Modo interactivo con el flag
-se, checkpoint_paste() - rules/frame.md - self.frame, control de cámara, reorientación y zoom
- rules/embedding.md - self.embed() para depuración IPython, modo touch()
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:
- examples/basic_animations.py - Formas básicas, texto y animaciones
- examples/math_visualization.py - Ecuaciones LaTeX y contenido matemático
- examples/graph_plotting.py - Ejes, funciones y gráficos
- examples/3d_visualization.py - Escenas 3D con control de cámara y superficies
- examples/updater_patterns.py - Animaciones dinámicas con actualizadores
Plantillas de escenas
Copia y modifica estas plantillas para comenzar nuevos proyectos:
- templates/basic_scene.py - Plantilla de escena 2D estándar
- templates/interactive_scene.py - InteractiveScene con self.embed()
- templates/3d_scene.py - Escena 3D con frame.reorient()
- templates/math_scene.py - Derivaciones matemáticas y ecuaciones
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ística | ManimGL (3b1b) | Manim Community |
|---|---|---|
| Importación | from manimlib import * | from manim import * |
| CLI | manimgl | manim |
| Texto matemático | Tex(R"\pi") | MathTex(r"\pi") |
| Escena | InteractiveScene | Scene |
| Animación de creación | ShowCreation | Create |
| Cámara | self.frame | self.camera.frame |
| Fijar en pantalla | mob.fix_in_frame() | self.add_fixed_in_frame_mobjects(mob) |
| Paquete | manimgl (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
- Confusión de versiones - Asegúrate de usar
manimgl, nomanim(versión comunitaria) - ShowCreation vs Create - ManimGL usa
ShowCreation, noCreate - Tex vs MathTex - ManimGL usa
Texcon cadenas raw R mayúscula - self.frame vs self.camera.frame - ManimGL usa
self.framedirectamente - fix_in_frame() - Llámalo en el mobject, no en la escena
- Modo interactivo - Usa el flag
-separa 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.