Manim, um motor de animação para vídeos explicativos de matemática
(github.com/3b1b)- Manim é um motor de animação preciso, baseado em programação, para a criação de vídeos explicativos de matemática
- É um projeto desenvolvido pelo autor do 3Blue1Brown para seus próprios vídeos educacionais
- Também existe uma versão fork mantida pela comunidade, com avanços em usabilidade, contribuições e testes
- Funciona com base em Python e exige várias dependências de sistema, como FFmpeg, OpenGL e LaTeX
- É open source (licença MIT), permitindo que qualquer pessoa use e contribua livremente
Importância e vantagens do projeto Manim
- O Manim é um motor de animação open source desenvolvido para explicar visualmente, de forma eficaz, conceitos de matemática e ciência
- Diferentemente de outras ferramentas de vídeo, ele permite criar animações precisas baseadas em código, sendo excelente para visualizar ideias matemáticas complexas passo a passo
- É mantido diretamente pelo 3Blue1Brown e é visto como uma ferramenta única, moldada pela experiência prática e pelo know-how de produção de vídeos educacionais
- Uma versão fork da comunidade também está sendo desenvolvida ativamente em paralelo, formando um ecossistema amigável para desenvolvedores, no qual várias melhorias são incorporadas rapidamente
Visão geral do projeto
- O Manim é um motor de animação programável e preciso para explicações matemáticas, capaz de implementar livremente fórmulas, formas geométricas e o desenvolvimento de conceitos diversos em vídeo
- Originalmente começou como uma ferramenta para a produção dos vídeos educacionais do 3Blue1Brown, e o código dedicado relacionado a isso também é publicado em um repositório separado
- Em 2020, uma versão da comunidade foi criada por fork para que mais pessoas pudessem usá-lo com facilidade, formando um ecossistema com melhorias em estabilidade, contribuições da comunidade e testes
Principais características e requisitos
- Divide-se em ManimGL (original) e Manim Community Edition (fork da comunidade)
- Como a instalação e o uso diferem entre as versões, é preciso escolher antecipadamente qual delas você deseja usar
- Ao instalar via pip, é possível instalar a versão original pelo nome de pacote manimgl
- É necessário Python 3.7 ou superior e, em alguns ambientes, também são exigidos FFmpeg, OpenGL, LaTeX e Pango para Linux
Guia de uso (exemplo)
- São fornecidos exemplos de código, arquivos de cena e comandos de execução
- Também é possível consultar e aproveitar vários exemplos de cenas, a documentação e o código dedicado usado nos vídeos reais do 3Blue1Brown
- Na execução via linha de comando, são oferecidas várias flags para:
- salvar o arquivo resultante, pular a cena inteira, executar em tela cheia e suportar diversos modos de saída e ambientes personalizados
- É possível configurar detalhes do ambiente, como estilo, qualidade e caminhos, por meio do arquivo
custom_config.yml
Documentação e contribuição
- A documentação oficial é fornecida em um site separado, e também há uma versão em chinês e recursos adicionais de personalização
- Como todo projeto open source, pull requests e contribuições da comunidade são muito bem-vindos
- É distribuído sob licença MIT, permitindo que qualquer pessoa o modifique e redistribua livremente
Informações técnicas e estatísticas
- É composto principalmente por linguagens como Python (96.3%) e GLSL (3.7%)
- Conta com mais de 80 mil estrelas e 6.800 forks no GitHub, mostrando alta popularidade e forte participação da comunidade
- Mais de 167 contribuidores diferentes estão ativos no projeto
Resumo
- O Manim é um motor de animação programável especializado em visualizações matemáticas e científicas precisas e detalhadas
- É muito útil para criadores de vídeos educacionais, especialistas em visualização de dados e desenvolvedores que precisam de animações baseadas em código
- Curva de aprendizado rápida, ambiente customizável, liberdade para contribuir e crescimento da comunidade são diferenciais importantes
1 comentários
Comentários no Hacker News
Tenho percebido que isso funciona muito bem hoje em dia junto com assistentes de programação; com prompts como “preciso de um diagrama em que a equação X se transforme em Y”, quase sempre consigo exatamente o que quero de primeira. Acho que isso acontece porque a sintaxe é simples e há inúmeros exemplos open source de manim usados no treinamento. Parece um ótimo exemplo de quanto os agentes de código com IA economizam tempo. Se o vídeo final sai bom, não preciso me preocupar tanto com o processo detalhado, então esse jeito acaba sendo mais conveniente.
Lembro de ter ouvido em um podcast com o Grant Sanderson que ele tentou gerar código manim automaticamente com LLMs, mas comentou que o resultado não foi muito bom. Acho que isso no fim mostra que há uma grande diferença entre o nível de proficiência ou o padrão que nós imaginamos e o que o Grant considera adequado.
Fico curioso para saber como seria combinar isso com RAG sobre a documentação.
Já usei Manim em materiais de apresentação para aulas e foi uma experiência realmente divertida. Muita gente reconheceu o estilo, a apresentação foi muito bem recebida e, por sorte, conheci o Grant pessoalmente alguns anos atrás. Quando falei que tinha usado Manim, ele pareceu genuinamente feliz, e isso me marcou. Ele é uma pessoa incrível que contribui muito para o conhecimento e a compreensão da humanidade.
Acho que o 3b1b é realmente uma maravilha da internet. As animações são lindas e as explicações cuidadosamente lapidadas impressionam muito. Mas há uma coisa que eu não entendo: como uma única biblioteca consegue implementar em animação conceitos tão diferentes? Parece que tudo deveria ser um trabalho totalmente customizado, mas talvez o Grant opere em um nível mais alto de pensamento matemático.
Para a maioria das pessoas, acho que o link da versão fork da comunidade é mais apropriado: Manim Community GitHub
O projeto criado pelo Grant é realmente excelente, porque não é o caso de um simples mantenedor de biblioteca open source, mas de alguém genuinamente envolvido e especialista no domínio, que desenvolve e mantém algo porque não existia uma ferramenta adequada para a aplicação real dele. Já o fork da comunidade, na minha visão, é tocado por pessoas tentando construir infraestrutura e adaptar a ferramenta a muitos casos de uso, em vez de mantê-la alinhada ao propósito em si. No fim, isso a afasta cada vez mais do objetivo original e sacrifica a experiência do usuário. Vejo aí a diferença entre algo feito por um desenvolvedor especialista para realizar o próprio trabalho e um fork mantido mais por continuidade e divulgação.
Fico curioso se o fork foi criado por um bom motivo ou apenas por causa de controvérsia. Li a explicação sobre o fork, mas ainda não entendo exatamente o motivo, já que o Grant continua mantendo o original.
Estou procurando com bastante empenho um renderizador de animação baseado em código focado não em matemática, mas em infográficos, gráficos e motion graphics em geral. As opções tradicionais são After Effects, Davinci Fusion, Blender, Cavalry etc., mas desde que experimentei PovRay antigamente e depois Manim, não consigo parar de pensar em ferramentas de motion graphics baseadas em código/texto. Parece algo que poderia brilhar quando combinado com LLMs. Têm surgido serviços de motion graphics com base em ChatGPT, mas o que eu quero não é um gerador de vídeo web desses; quero uma ferramenta baseada em código ou linguagem de template, que possa renderizar repetidamente com qualquer dado e ainda funcionar offline ou em automação.
Quando usei Manim, uns 4 anos atrás, parecia sofrer de uma espécie de kwargs-itus, com praticamente todos os parâmetros colocados em kwargs, e isso até impedia type annotations, tornando o uso desnecessariamente difícil. Tentei contribuir com melhorias, mas não tive muita resposta, então fico curioso sobre como isso mudou recentemente.
Esse projeto aparece com frequência no HN e costuma render boas discussões, então deixo um link de busca em vez de um link de discussão: resultados de busca por manim no HN
Fico curioso se existe alguma awesome list que dê uma visão geral do ecossistema de software manim. Estou reunindo alguns materiais abaixo:
Pelo que eu sabia, o HN normalmente não permite duplicatas do mesmo link; será que é possível registrar repetidos?
Estou reunindo links de discussões antigas no HN e posts Show HN sobre Manim:
O que o Grant criou com 3blue1brown e Manim é realmente impressionante. Graças à alta qualidade dos vídeos e das visualizações, até temas abstratos ficam fáceis de entender. Isso já é mencionado no README, mas eu realmente gostaria de recomendar a demo em vídeo em que o Grant apresenta o processo de trabalho dele com Manim (link do YouTube).
Projeto realmente muito legal; cliquei nele porque imediatamente me lembrou um vídeo impressionante antigo, Animation vs Math no YouTube. Eu gosto de matemática, mas sinto que mostrar gráficos gigantes não é necessariamente a melhor forma de apresentar isso às pessoas.