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
MovingCameraScenedo 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/ReplacementTransformpara significado,FadeIn/FadeOutpara presença. Transformar formas não relacionadas confunde os espectadores. - Não anime cada elemento independentemente. Agrupe com
VGroupe 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
-qhproduz 1080p60 em alta taxa de bits; recodifique para entrega em vez de enviar o intermediário.- Transparência:
-tescreve um.movcom 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; altereconfig.frame_rateou 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
| Sintoma | Causa | Correção |
|---|---|---|
latex: command not found | Nenhuma distribuição TeX | Instale TeX Live/MiKTeX, ou use Text em vez de MathTex |
| Erro de build Cairo/Pango | Bibliotecas nativas ausentes | Instale os pacotes de desenvolvimento listados acima |
| Fórmula renderizada como texto de erro vermelho | Erro de sintaxe LaTeX ou pacote ausente | Verifique o console; adicione pacotes TexTemplate |
| Tudo parece borrado | Predefinição de baixa qualidade | Renderize -qh/-qk para final |
| Texto grego/árabe quebrado | Fonte não tem glifos ou modelagem | Use uma fonte com capacidade de modelagem, teste um quadro estático ou rasterize o texto |
| Renderização muito lenta | 60 FPS + 4K + caminhos complexos | Visualize em -ql, simplifique caminhos, divida cenas |
| Transparência perdida | Formato errado | Use -t e um contêiner compatível com alfa; verifique |
9. Referências oficiais
- Documentação: https://docs.manim.community/en/stable/
- Instalação: https://docs.manim.community/en/stable/installation.html
- Tutoriais: https://docs.manim.community/en/stable/tutorials.html
- Galeria de exemplos: https://docs.manim.community/en/stable/examples.html
- Código fonte: https://github.com/ManimCommunity/manim