Communitygithub.com

aminghaseminia/manim-animation

Produce animaciones matemáticas, científicas y técnicas con Manim Community: ecuaciones, demostraciones, gráficos, sistemas de coordenadas, geometría, algoritmos, estructuras de datos y transformaciones precisas de diagramas. Úsalo cuando la corrección de las relaciones matemáticas sea central, para explicadores educativos, visuales de investigación o conferencias, y para derivaciones animadas donde cada elemento debe estar exactamente colocado. Cubre instalación con uv, diseño de escenas, LaTeX/MathTex, cámara y escenas 3D, preajustes de calidad de renderizado y composición con otras herramientas.

¿Qué es manim-animation?

Esta habilidad te permite crear animaciones matemáticas y técnicas precisas utilizando Manim Community, un motor de animación en Python que trata fórmulas, gráficos y construcciones como objetos matemáticos definidos con exactitud. Es ideal para explicadores educativos, visuales de conferencias o investigaciones, y demostraciones animadas donde cada elemento debe estar exactamente colocado. Compatible con Claude Code, Cursor y Codex, la habilidad guía la instalación aislada con `uv`, el diseño de escenas con reglas claras (una idea por escena, paletas centralizadas, transformaciones semánticas), y ofrece preajustes de calidad desde 480p hasta 4K. Incluye una receta de composición con ejemplo de código, validación con `ffprobe`, manejo de transparencia, combinación con Remotion/Blender, y una tabla de fallos comunes con soluciones, garantizando que cada animación sea correcta, legible y eficiente.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aminghaseminia/blender-animation-skill/tree/HEAD/skills/manim-animation

Preguntar en tu IA favorita

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

Documentación

Animación con Manim — Video Matemático y Técnico

Manim es un motor de animación Python para crear visuales explicativos. Su fortaleza es la exactitud: una fórmula, gráfico o construcción se anima como un objeto matemáticamente definido, no como una aproximación en una herramienta de diseño.

Lee references/MANIM-PLAYBOOK.md para patrones y código. Verifica las banderas contra la versión instalada: https://docs.manim.community/en/stable/

1. Cuándo elegir Manim

Elige Manim cuando:

  • Ecuaciones, símbolos o demostraciones son el tema central.
  • Los sistemas de coordenadas, gráficos, vectores o construcciones geométricas deben ser exactos.
  • Un algoritmo, estructura de datos o proceso necesita una explicación visual paso a paso.
  • Las etiquetas deben alinearse a un objeto matemático, no a una posición de marco colocada a mano.
  • El estilo debe ser sobrio y diagramático, no cinematográfico.

No elijas Manim para: 3D cinematográfico, video promocional con muchas marcas, tipografía de gráficos en movimiento o entregables interactivos. Eso pertenece a Blender, Remotion o gráficos web.

2. Instalación (aislada, reproducible)

uv --version                     # instala uv primero si falta
uv init --python 3.12 manim-project
cd manim-project
uv add manim
uv run manim --version

Linux a menudo necesita bibliotecas nativas:

sudo apt update
sudo apt install build-essential python3-dev pkg-config libcairo2-dev libpango1.0-dev ffmpeg
sudo apt install texlive texlive-latex-extra texlive-fonts-recommended   # para MathTex/Tex

macOS: brew install cairo pango pkg-config ffmpeg y una distribución TeX como MacTeX si se usa MathTex. Windows: instala FFmpeg y MiKTeX/TeX Live; es posible que se necesiten Microsoft C++ Build Tools para las ruedas de Cairo/Pango.

Verifica:

uv run manim --version
uv run python -c "import manim; print(manim.__version__)"

No instales Manim en el Python del sistema si hay un entorno de proyecto disponible. Registra la versión en el README del proyecto.

3. Comandos de renderizado

# vista previa de baja calidad (rápida)
uv run manim -pql scenes/explain.py ExplainScene

# media
uv run manim -qm scenes/explain.py ExplainScene

# alta / producción
uv run manim -qh scenes/explain.py ExplainScene

# 4K
uv run manim -qk scenes/explain.py ExplainScene

# fondo transparente
uv run manim -qh -t scenes/explain.py ExplainScene

# sección específica
uv run manim -qh scenes/explain.py ExplainScene -n 12,20

Preajustes de calidad: -ql 480p15, -qm 720p30, -qh 1080p60, -qk 2160p60. Confirma en la versión instalada. La salida va a media/videos/<archivo>/<calidad>/.

ffprobe -v error -show_entries stream=width,height,r_frame_rate,duration \
  -of json media/videos/explain/1080p60/ExplainScene.mp4

4. Reglas de diseño de escenas

  • Una idea por escena. Divide en subclases de Scene; compón un video más largo mediante concatenación, no una escena gigante.
  • Establece la paleta y las fuentes una vez en un módulo (theme.py) e impórtalos, en lugar de repetir valores hexadecimales.
  • Refrena la cámara. El MovingCameraScene de Manim es poderoso y fácil de abusar; haz zoom solo para revelar una estructura que el espectador no podría ver de otra manera.
  • Respeta la duración. Una derivación de fórmula que se lee bien en 3 minutos se sentirá apresurada en 40 segundos. Calcula el tiempo de permanencia a partir de la velocidad de lectura, no de la intuición.
  • Mantén las etiquetas adjuntas al objeto que describen (Tex + next_to), para que un cambio posterior en el diseño no rompa silenciosamente la alineación.
  • Usa Transform/ReplacementTransform para el significado, FadeIn/FadeOut para la presencia. Transformar formas no relacionadas confunde a los espectadores.
  • No animes cada elemento de forma independiente. Agrúpalos con VGroup y escalónalos intencionadamente.

5. Receta de composición

from manim import *

class ExplainScene(Scene):
    def construct(self):
        title = Text("Por qué la derivada es un límite", font="Inter").scale(0.7)
        self.play(Write(title), run_time=1.2)
        self.wait(0.6)
        self.play(title.animate.to_edge(UP).scale(0.8), run_time=0.9)

        formula = MathTex(r"f'(x) = \lim_{h \to 0} \frac{f(x+h)-f(x)}{h}")
        formula.scale(1.2)
        self.play(Write(formula), run_time=1.6)
        self.wait(1.2)

        self.play(formula.animate.set_color_by_tex(r"h \to 0", YELLOW), run_time=0.8)
        self.wait(1.5)

6. Exportación y entrega

  • -qh produce 1080p60 a alta tasa de bits; vuelve a codificar para la entrega en lugar de enviar el intermedio.
  • Transparencia: -t escribe un .mov con alfa (o una secuencia PNG con --format=png). Verifica el alfa sobre un patrón de damero antes de componer.
  • Para combinar Manim con Remotion/Blender: iguala FPS y resolución, luego ensambla en FFmpeg o Remotion. Manim por defecto usa 60 FPS en -qh; cambia config.frame_rate o convierte deliberadamente.
  • Para intros/outros con marca y subtítulos, renderiza las escenas de Manim limpias y compónlas en Remotion — no luches contra el sistema de tipografía de Manim para el diseño de marca.

7. Validación

  • Mira el renderizado de baja calidad antes que el de alta calidad; los errores matemáticos son visibles a 480p.
  • Comprueba que ninguna fórmula esté recortada en el borde del cuadro y que ninguna etiqueta se superponga a otra.
  • Verifica que LaTeX se haya compilado sin fallos silenciosos (busca advertencias de texto rojo en la consola).
  • Confirma la duración final y la tasa de fotogramas con ffprobe.
  • Lee cada símbolo en voz alta contra la matemática prevista; un signo invertido es un error de corrección, no una elección de estilo.

8. Fallos comunes

SíntomaCausaSolución
latex: command not foundSin distribución TeXInstala TeX Live/MiKTeX, o usa Text en lugar de MathTex
Error de compilación Cairo/PangoFaltan bibliotecas nativasInstala los paquetes de desarrollo listados arriba
La fórmula se renderiza como texto de error rojoSintaxis LaTeX o paquete faltanteRevisa la consola; agrega paquetes a TexTemplate
Todo se ve borrosoPreajuste de baja calidadRenderiza con -qh/-qk para la versión final
Texto griego/árabe rotoLa fuente carece de glifos o shapingUsa una fuente con capacidad de shaping, prueba un fotograma fijo, o rasteriza el texto
Renderizado muy lento60 FPS + 4K + trazados complejosPrevisualiza con -ql, simplifica trazados, divide escenas
Transparencia perdidaFormato incorrectoUsa -t y un contenedor compatible con alfa; verifica

9. Referencias oficiales

Individual skills in this repo

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

aminghaseminia/blender-animation

Build 3D animations in Blender headlessly with Python (bpy) — scene setup, materials, lighting, camera rigs, keyframe and procedural animation, Geometry Nodes, particles and simulations, EEVEE/Cycles rendering, and MP4/PNG-sequence output. Triggers include "animate in Blender", "blender python", "bpy script", "3D logo animation", "cinematic render", "particle animation", "product turntable", "render an .blend", "blender headless", or any 3D scene, camera move, or motion graphics job that needs real geometry, light, and depth.

aminghaseminia/motion-design

Art direction and motion-design craft for animation projects — creative briefs, storyboards, style frames, colour and type systems, composition, timing and easing, transition vocabulary, sound direction, accessibility, and right-to-left (Persian/Arabic) typography. Use before building scenes, when a video looks amateur or generic, when choosing palette and fonts, when a request says "make it feel premium/cinematic/modern", or when text, rhythm, or hierarchy is not landing. Tool-agnostic; pairs with blender-animation, remotion-motion-graphics, and manim-animation.

aminghaseminia/motion-studio

End-to-end animation and motion-graphics production from a natural-language brief. Routes work to Blender (3D), Remotion (2D/typography/data), Manim (math/science), motion-design craft, and FFmpeg (encode/composite/validate), then builds, previews, inspects, revises, and delivers an editable project plus final MP4. Use for any request to "make an animation", "create a video", "animate this logo", "render a motion graphic", "vibe-code an animation", or produce a promo, explainer, title sequence, or social clip.

aminghaseminia/remotion-motion-graphics

Create 2D motion graphics as code with Remotion and React — kinetic typography, logo reveals, explainers, animated charts, UI demos, social clips, subtitles, and data-driven or batch-rendered video. Use when the deliverable is primarily layout, text, and 2D graphics rather than real 3D; when a video must be generated from data or a template; or when a Blender 3D pass needs titles, captions, and transitions composited on top. Covers project setup, deterministic frame-based animation, easing, typography, audio, rendering, and licensing.

aminghaseminia/video-composition

Assemble, mix, normalize, and validate finished video from Blender, Remotion, Manim, screen capture, and audio sources using FFmpeg and FFprobe — concatenation, overlays, alpha compositing, subtitle burn-in, loudness, fades, speed ramps, GIF/thumbnail export, and platform-specific encodes. Use when combining scenes, fixing mismatched resolutions or frame rates, adding music/voice-over, burning captions, converting formats, or verifying that a rendered file is actually correct.

Skills relacionados