Communitygithub.com

melhores-praticas-manimgl

Habilidade abrangente para desenvolvimento eficiente com ManimGL, incluindo cenas, animações, LaTeX, 3D e modo interativo.

O que é melhores-praticas-manimgl?

Este skill é um guia completo de melhores práticas para ManimGL (a versão mantida por 3Blue1Brown), voltado para desenvolvedores e criadores de animações matemáticas. Ele organiza regras detalhadas em arquivos separados por tópicos, cobrindo desde conceitos básicos como InteractiveScene e Mobjects até animações de transformação, renderização LaTeX, gráficos 3D e controle de câmera. Um dos grandes diferenciais é o foco no desenvolvimento interativo com a flag `-se` e uso de `checkpoint_paste()`, além de templates prontos e exemplos testados. O skill também esclarece as principais diferenças entre ManimGL e Manim Community Edition, ajudando a evitar erros comuns como confundir `ShowCreation` com `Create` ou `Tex` com `MathTex`. Suporta as plataformas Claude Code, Cursor e Codex, e é ideal para quem quer criar animações matemáticas de alta qualidade de forma eficiente.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/adithya-s-k/manim_skill/tree/main/skills/manimgl-best-practices

Perguntar na sua IA favorita

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

Documentação

Como usar

Leia os arquivos de regras individuais para explicações detalhadas e exemplos de código:

Conceitos Principais

Criação e Transformação

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

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:

Templates de Cena

Copie e modifique estes templates para iniciar novos projetos:

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ísticaManimGL (3b1b)Manim Community
Importaçãofrom manimlib import *from manim import *
CLImanimglmanim
Texto matemáticoTex(R"\pi")MathTex(r"\pi")
CenaInteractiveSceneScene
Animação de criaçãoShowCreationCreate
Câmeraself.frameself.camera.frame
Fixar no quadromob.fix_in_frame()self.add_fixed_in_frame_mobjects(mob)
Pacotemanimgl (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

  1. Confusão de versões - Certifique-se de usar manimgl, não manim (versão comunitária)
  2. ShowCreation vs Create - ManimGL usa ShowCreation, não Create
  3. Tex vs MathTex - ManimGL usa Tex com strings brutas R maiúsculo
  4. self.frame vs self.camera.frame - ManimGL usa self.frame diretamente
  5. fix_in_frame() - Chame no mobject, não na cena
  6. Modo interativo - Use a flag -se para 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.

Individual skills in this repo

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

Habilidades Relacionadas