Goals for 2022
Having a better CLI
Currently, the CLI is a bit wonky. It can break at any moment for any reason. If
you try to compile a scene with a syntax error, it will crash without explaining
why it failed. The way it compiles scenes isn't great: instead of getting all
the needed data once, the CLI executes multiple times the Dart file. It may be
interesting to use the Embedding
Dart API. Also, there are
way too many options (--gl
, --webdev
, --html
, ...). It's difficult to know
which flag is important.
Support other rendering back-ends
Currently, the only supported rendering API is the HTML 2D Canvas. However, using Cairo to render non-interactive animations would be faster than the 2D Canvas API: the scene code could be compiled to a native executable which would run a lot quicker compared to a JavaScript file. I started implementing the Cairo backend, but it's not finished yet: gradients aren't implemented.
3D rendering could be done with OpenGL/WebGL. However, these libraries are made to render triangles or polygons not shapes defined with Bézier curves. So, it could take a while to implement.
Precompiled videos
(suggested by JCosmos)
When rendering complex animations, it would be better to render this animation in the compilation step. Otherwise, it may lag someone's computer when running this animation. It could be done right now but it's better to wait for the Cairo backend integration and the CLI improvement.
I hope it can be done quite easily with something similar to this:
class TestScene extends Scene {
@override
Future construct() async {
await part1();
await part2();
}
Future part1() async {
// animations here
}
@precompiled
Future part2() async {
// animations here
}
}
More documentation
One advantage of Dart is dartdoc
. It's a tool that'll generate documentation
based on comments in the code. For example, a well-documented class is the
AbstractDisplay
(API Reference
page)
AsciiMath integration
AsciiMath is an alternative syntax for . For example, when you want to draw this formula:
\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
.
However, the backslash character is reserved for strings and needs to be escaped
with another backslash: \\sum_{n=1}^{\\infty} \\frac{1}{n^2} = \\frac{\\pi^2}{6}
But, in AsciiMath, it's : sum_(n=1)^oo 1/n^2 = pi^2/6
. Also, most
code is valid AsciiMath code.
GUI for ManimWeb
It's very unlikely this goal will be achieved this year. However, it may be interesting to have suggestions on the way it would work.
Community goals
This year, it would be awesome to have projects that use ManimWeb. If someone wants to make a project with ManimWeb and has some problems, I'd gladly help.
Also, it could be nice to have a simpler logo for the Discord server and the website.