Communitygithub.com

aminghaseminia/manim-animation

Produza animações matemáticas, científicas e técnicas com Manim Community — equações, provas, gráficos, sistemas de coordenadas, geometria, algoritmos, estruturas de dados e transformações precisas de diagramas. Use quando a exatidão das relações matemáticas for essencial, para vídeos educacionais, visuais de pesquisa ou conferências e para derivações animadas onde cada elemento deve ser colocado exatamente. Abrange instalação com uv, design de cenas, LaTeX/MathTex, câmera e cenas 3D, predefinições de qualidade de renderização e composição com outras ferramentas.

O que é manim-animation?

Esta habilidade permite que agentes de IA (como Claude Code, Cursor ou Codex) gerem e renderizem animações matemáticas e técnicas precisas usando o mecanismo Manim Community. Ela é ideal para criar vídeos explicativos que exigem exatidão em equações, provas, gráficos, geometria, algoritmos e estruturas de dados. Ao contrário de ferramentas de design tradicionais que aproximam formas, Manim trata cada elemento como um objeto matemático definido, garantindo que rótulos, transformações e animações sejam matematicamente corretos. A habilidade fornece um guia completo, desde a instalação isolada com uv até comandos de renderização com predefinições de qualidade (480p a 4K), design de cenas centrado em uma ideia por cena, composição com LaTeX e dicas de exportação com suporte a transparência. Ela também inclui validação para evitar erros comuns, como símbolos cortados ou sobreposição de rótulos. Suporta múltiplas plataformas (Linux, macOS, Windows) e oferece receitas práticas com Python para criação de cenas e transformações. A integração com Remotion ou Blender é facilitada por recomendações de composição, tornando-a adequada para fluxos de trabalho de produção de vídeo.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Animação Manim — Vídeo Matemático e Técnico

Manim é um motor de animação Python para visuais explicativos. Sua força é a exatidão: uma fórmula, gráfico ou construção pode ser animado como um objeto matematicamente definido, em vez de uma aproximação em uma ferramenta de design.

Leia references/MANIM-PLAYBOOK.md para padrões e código. Verifique as flags em relação à versão instalada: https://docs.manim.community/en/stable/

1. Quando escolher Manim

Escolha Manim quando:

  • Equações, símbolos ou provas são o assunto.
  • Sistemas de coordenadas, gráficos, vetores ou construções geométricas devem ser exatos.
  • Um algoritmo, estrutura de dados ou processo precisa de explicação visual passo a passo.
  • Rótulos devem estar alinhados a um objeto matemático, não a uma posição de quadro colocada manualmente.
  • O estilo deve ser contido e diagramático, não cinematográfico.

Não escolha Manim para: 3D cinematográfico, vídeo promocional com muita marca, tipografia gráfica em movimento ou entregas interativas. Esses pertencem ao Blender, Remotion ou gráficos web.

2. Instalação (isolada, reproduzível)

uv --version                     # instale uv primeiro se não tiver
uv init --python 3.12 manim-project
cd manim-project
uv add manim
uv run manim --version

Linux geralmente precisa de 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 e uma distribuição TeX como MacTeX se MathTex for usado. Windows: instale FFmpeg e MiKTeX/TeX Live; as Ferramentas de Build C++ da Microsoft podem ser necessárias para as wheels Cairo/Pango.

Verifique:

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

Não instale Manim no Python do sistema se um ambiente de projeto estiver disponível. Registre a versão no README do projeto.

3. Comandos de renderização

# visualização de baixa qualidade (rápida)
uv run manim -pql scenes/explain.py ExplainScene

# média
uv run manim -qm scenes/explain.py ExplainScene

# alta / produção
uv run manim -qh scenes/explain.py ExplainScene

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

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

# seção específica
uv run manim -qh scenes/explain.py ExplainScene -n 12,20

Predefinições de qualidade: -ql 480p15, -qm 720p30, -qh 1080p60, -qk 2160p60. Confirme na versão instalada. A saída vai para media/videos/<arquivo>/<qualidade>/.

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

4. Regras de design de cena

  • Uma ideia por cena. Divida em subclasses Scene; componha um vídeo mais longo por concatenação, não uma cena gigante.
  • Defina a paleta e as fontes uma vez em um módulo (theme.py) e importe-os, em vez de repetir valores hexadecimais.
  • Contenha a câmera. O MovingCameraScene do Manim é poderoso e fácil de usar em excesso; aplique zoom apenas para revelar uma estrutura que o espectador não poderia ver de outra forma.
  • Respeite a duração. Uma derivação de fórmula que funciona bem em 3 minutos parecerá apressada em 40 segundos. Calcule o tempo de permanência com base na velocidade de leitura, não na intuição.
  • Mantenha os rótulos anexados ao objeto que descrevem (Tex + next_to), para que uma alteração posterior no layout não quebre o alinhamento silenciosamente.
  • Use Transform/ReplacementTransform para significado, FadeIn/FadeOut para presença. Transformar formas não relacionadas confunde os espectadores.
  • Não anime cada elemento independentemente. Agrupe com VGroup e escalone intencionalmente.

5. Receita de composição

from manim import *

class ExplainScene(Scene):
    def construct(self):
        title = Text("Por que a derivada é um limite", 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. Exportação e entrega

  • -qh produz 1080p60 em alta taxa de bits; recodifique para entrega em vez de enviar o intermediário.
  • Transparência: -t escreve um .mov com alfa (ou uma sequência PNG com --format=png). Verifique o alfa sobre um tabuleiro de xadrez antes de compor.
  • Para combinar Manim com Remotion/Blender: corresponda FPS e resolução, depois monte no FFmpeg ou Remotion. Manim padrão é 60 FPS em -qh; altere config.frame_rate ou converta deliberadamente.
  • Para intros/outros com marca e legendas, renderize cenas Manim limpas e componha-as no Remotion — não lute contra o sistema tipográfico do Manim para o layout da marca.

7. Validação

  • Assista à renderização de baixa qualidade antes da de alta qualidade; erros matemáticos são visíveis em 480p.
  • Verifique se nenhuma fórmula está cortada na borda do quadro e se nenhum rótulo se sobrepõe a outro.
  • Verifique se o LaTeX foi compilado sem fallbacks silenciosos (procure avisos de texto vermelhos no console).
  • Confirme a duração final e a taxa de quadros com ffprobe.
  • Leia cada símbolo em voz alta em relação à matemática pretendida; um sinal invertido é um erro de correção, não uma escolha de estilo.

8. Falhas comuns

SintomaCausaCorreção
latex: command not foundNenhuma distribuição TeXInstale TeX Live/MiKTeX, ou use Text em vez de MathTex
Erro de build Cairo/PangoBibliotecas nativas ausentesInstale os pacotes de desenvolvimento listados acima
Fórmula renderizada como texto de erro vermelhoErro de sintaxe LaTeX ou pacote ausenteVerifique o console; adicione pacotes TexTemplate
Tudo parece borradoPredefinição de baixa qualidadeRenderize -qh/-qk para final
Texto grego/árabe quebradoFonte não tem glifos ou modelagemUse uma fonte com capacidade de modelagem, teste um quadro estático ou rasterize o texto
Renderização muito lenta60 FPS + 4K + caminhos complexosVisualize em -ql, simplifique caminhos, divida cenas
Transparência perdidaFormato erradoUse -t e um contêiner compatível com alfa; verifique

9. Referências oficiais

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.

Habilidades Relacionadas