Review



Love this repo. Requesting approval as a reviewer.

manim

Overview

I’m a mathematician who has been using Manim for years to create mathematical animations :movie_camera: for my classes.
ManimCommunity is a community-maintained repository, which offers the implementation of the animation engine Manim, designed for the creation of explanatory math videos. It should be noted that there are two projects around this graphic engine:

The latter is updated more frequently than the former and its usage is recommended to apply Manim for your own projects. In addition, the associated documentation is very complete.

To install or not to install…

Although the installation of Manim is well documented, and the repository provides clear instructions, installing all the dependencies has traditionally been one of the biggest problems faced by those using Manim for the first time, so here goes my recommendation:

If you are familiar with Docker :whale2:, the community maintains a image, found at on DockerHub, that you can use to render your own scenes :+1:.

Quick Example
To render a scene CircleToSquare ina file test_scene.py you can use

docker run --rm -it  --user="$(id -u):$(id -g)" -v "$(pwd)":/manim manimcommunity/manim manim test_scenes.py CircleToSquare -qm

You can even spin a local server running JupyterLab on whose Python kernel Manin is installed.

Documentation

The repository has good documentation that can help most initial projects. It has examples and the videos generated by the scripts, but still is a work in progress. When we get into more advanced projects, we find that it is common to have to dive into the source code to try to find out what function you need for certain aspects of your scene.
So we could say that “the documentation is very good… as long as it exists”.

OpenGl

One of the weaknesses of the Manim engine is that it runs entirely on CPU, and is very slow for long scenes. Developers intend to support OpenGl rendering, which would give GPU support and would be equivalent to near real-time rendering, but for now we can’t enjoy that feature.

In this regard, Grant Sanderson’s original project 3b1b/manim, added OpenGl into the Manim engine some time ago, but since this repository has hardly any documentation, as it is a personal project of its creator, who decided to publish the code at the insistence of the public, it is not very advisable to install this engine just to have OpenGl support.

If you want to try Manim because you have seen the 3Blue1Brown channel videos, I would recommend using the ManimCommunity version. Once you are comfortable with this engine, if you want to try yourself some of the scripts used to create the videos of that channel, you will need to install the original version (3b1b/manim).

Final thoughts

ManimCommunity is a great repository, with a huge effort of the community behind it, who constantly works adding new features, and fixing reported bugs. It has still room for improvement and growth, and we will be hopefully enjoying OpenGl rendering very soon.

taylor