Como usar
Leia os arquivos de regras individuais para explicações detalhadas e exemplos de código:
Conceitos Principais
- rules/scenes.md - InteractiveScene, tipos de cena e método construct
- rules/mobjects.md - Tipos de Mobject, VMobject, grupos e posicionamento
- rules/animations.md - Classes de animação, execução de animações e temporização
Criação e Transformação
- rules/creation-animations.md - ShowCreation, Write, FadeIn, DrawBorderThenFill
- rules/transform-animations.md - Transform, ReplacementTransform, TransformMatchingTex
- rules/animation-groups.md - LaggedStart, Succession, AnimationGroup
Texto e Matemática
- rules/tex.md - Classe Tex, strings brutas R"..." e renderização LaTeX
- rules/text.md - Mobjects de texto, fontes e estilo
- rules/t2c.md - tex_to_color_map (t2c) para colorir expressões matemáticas
Estilo e Aparência
- rules/colors.md - Constantes de cor, gradientes, RGB, hex, coloração GLSL
- rules/styling.md - Preenchimento, traçado, opacidade, contorno, brilho, sombra
3D e Câmera
- rules/3d.md - Objetos 3D, superfícies, Esfera, Toro, superfícies paramétricas, iluminação
- rules/camera.md - frame.reorient(), ângulos de Euler, fix_in_frame(), animações de câmera
Desenvolvimento Interativo
- rules/interactive.md - Modo interativo com a flag
-se, checkpoint_paste() - rules/frame.md - self.frame, controle de câmera, reorientação e zoom
- rules/embedding.md - self.embed() para depuração IPython, modo touch()
Configuração e CLI
- rules/cli.md - Comando manimgl, flags (-w, -o, -se, -l, -h), opções de renderização
- rules/config.md - custom_config.yml, diretórios, configurações de câmera, predefinições de qualidade
Exemplos Funcionais
Arquivos de exemplo completos e testados que demonstram padrões comuns:
- examples/basic_animations.py - Formas básicas, texto e animações
- examples/math_visualization.py - Equações LaTeX e conteúdo matemático
- examples/graph_plotting.py - Eixos, funções e gráficos
- examples/3d_visualization.py - Cenas 3D com controle de câmera e superfícies
- examples/updater_patterns.py - Animações dinâmicas com updaters
Templates de Cena
Copie e modifique estes templates para iniciar novos projetos:
- templates/basic_scene.py - Template padrão para cena 2D
- templates/interactive_scene.py - InteractiveScene com self.embed()
- templates/3d_scene.py - Cena 3D com frame.reorient()
- templates/math_scene.py - Derivações matemáticas e equações
Referência Rápida
Estrutura Básica de Cena
from manimlib import *
class MinhaCena(InteractiveScene):
def construct(self):
# Criar mobjects
circulo = Circle()
# Adicionar à cena (estático)
self.add(circulo)
# Ou animar
self.play(ShowCreation(circulo)) # Nota: ShowCreation, não Create
# Esperar
self.wait(1)
Comando de Renderização
# Renderizar e visualizar
manimgl cena.py MinhaCena
# Modo interativo - entrar no shell na linha 15
manimgl cena.py MinhaCena -se 15
# Escrever para arquivo
manimgl cena.py MinhaCena -w
# Baixa qualidade para teste
manimgl cena.py MinhaCena -l
Principais Diferenças do ManimCE
| Característica | ManimGL (3b1b) | Manim Community |
|---|---|---|
| Importação | from manimlib import * | from manim import * |
| CLI | manimgl | manim |
| Texto matemático | Tex(R"\pi") | MathTex(r"\pi") |
| Cena | InteractiveScene | Scene |
| Animação de criação | ShowCreation | Create |
| Câmera | self.frame | self.camera.frame |
| Fixar no quadro | mob.fix_in_frame() | self.add_fixed_in_frame_mobjects(mob) |
| Pacote | manimgl (PyPI) | manim (PyPI) |
Fluxo de Trabalho de Desenvolvimento Interativo
A função matadora do ManimGL é o desenvolvimento interativo:
# Iniciar na linha 20 com estado preservado
manimgl cena.py MinhaCena -se 20
No modo interativo:
# Copie o código para a área de transferência, depois execute:
checkpoint_paste() # Executa com animações
checkpoint_paste(skip=True) # Executa instantaneamente (sem animações)
checkpoint_paste(record=True) # Grava enquanto executa
Controle de Câmera (self.frame)
# Obter o quadro da câmera
quadro = self.frame
# Reorientar em 3D (phi, theta, gama, centro, altura)
quadro.reorient(45, -30, 0, ORIGIN, 8)
# Animar movimento da câmera
self.play(quadro.animate.reorient(60, -45, 0))
# Fixar mobjects para ficarem no espaço da tela durante movimento 3D
titulo.fix_in_frame()
LaTeX com a classe Tex
# Use strings brutas com R maiúsculo
formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")
# Mapeamento de cores com t2c
equacao = Tex(
R"E = mc^2",
t2c={"E": BLUE, "m": GREEN, "c": YELLOW}
)
# Isolar substrings para animação
formula = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")
formula.set_color_by_tex("n", BLUE)
Padrões Comuns
Inserir para depuração
def construct(self):
circulo = Circle()
self.play(ShowCreation(circulo))
self.embed() # Entra no shell IPython aqui
Definir plano de piso para 3D
self.set_floor_plane("xz") # Torna xy o plano de visualização
Contorno para legibilidade de texto
texto = Text("Rótulo")
texto.set_backstroke(BLACK, 5) # Contorno preto atrás do texto
Instalação
# Instalar ManimGL
pip install manimgl
# Verificar instalação
manimgl --version
Armadilhas Comuns a Evitar
- Confusão de versões - Certifique-se de usar
manimgl, nãomanim(versão comunitária) - ShowCreation vs Create - ManimGL usa
ShowCreation, nãoCreate - Tex vs MathTex - ManimGL usa
Texcom strings brutas R maiúsculo - self.frame vs self.camera.frame - ManimGL usa
self.framediretamente - fix_in_frame() - Chame no mobject, não na cena
- Modo interativo - Use a flag
-separa desenvolvimento interativo
Licença e Atribuição
Este skill contém código de exemplo adaptado do repositório de vídeos do 3Blue1Brown por Grant Sanderson.
Licença: CC BY-NC-SA 4.0
- Atribuição necessária - Dê crédito tanto ao 3Blue1Brown quanto ao adaptador
- NãoComercial - Não para uso comercial
- CompartilhaIgual - Derivações devem usar a mesma licença
Consulte LICENSE.txt para obter detalhes completos.