Skip to content

Mathematical Animation Engines ​

A breadth-first survey of the open-source ecosystem for mathematical animation videos — the Manim family and the wider paradigm and building-block space around it — mapped to inform a future sparkles D library targeting both native video and interactive web output. Every claim ties to a primary source (a cited repository path or official-doc URL, usually with a verbatim quote), and the load-bearing geometry and timing facts are backed by runnable D probes that CI compiles and runs.

Last reviewed: July 11, 2026

This survey answers eleven questions:

  1. What is the reference architecture of a mathematical-animation engine — object model, animation system, rendering, typesetting, encoding? → Manim Community (+ scene-graph, text-pipeline, caching) and ManimGL
  2. How is time expressed across engines — play-loop, generator, pure frame function, reactive, GUI timeline? → the engines + concepts § execution models
  3. Why is the Bézier basis (quadratic vs cubic) load-bearing, and how does the conversion cost fall? → scene-graph, ManimGL, bezier-eval.d
  4. How do the web-native engines differ in model and rendering surface? → Motion Canvas, Remotion, Theatre.js
  5. What does a reactive/observable plotting model contribute? → Makie.jl
  6. What does immediate-mode creative-coding look like? → nannou; and a Cairo frame-function layer? → Javis.jl
  7. What does a from-scratch native engine (the closest analog to a D one) actually do? → MathAnimation
  8. What is the declarative-diagramming alternative to the imperative Mobject model? → Penrose, Bluefish, TikZ/PGF, Asymptote, CeTZ, MetaPost
  9. Which 2D rasterizers could a D engine bind, and at what cost? → Rendering Backends
  10. How does mathematical notation become vector outlines, and how do frames become video? → Math Typesetting, Video Encoding
  11. Where does Sparkles stand, and what should it build? → Baseline + comparison delta → Animation Engine Proposal

The eight axes ​

Every deep-dive is analysed against the same spine, so the catalog is comparable; where an axis does not apply, the page says so, because the absence of a capability is itself a finding. Defined once in concepts:

#Axis#Axis
1Object & scene model5Output & encoding
2Animation & timing6Interactivity, preview & authoring
3Rendering & rasterization7Extensibility & API surface
4Typesetting & text8Determinism, caching & performance

Master catalog ​

SubjectWhat it isCategoryParadigmLink
Conceptsthe survey's shared vocabulary——concepts.md
Manim Communitythe reference engine (Cairo default, cubic)engineimperativemanim-community/
ManimGL3Blue1Brown's OpenGL-only original (quadratic)engineimperativemanimgl.md
Motion CanvasTS generator/play-head + editor (Canvas2D)enginegeneratormotion-canvas.md
RemotionReact "video = pure frame function"enginepure-frameremotion.md
Theatre.jskeyframe-timeline toolkit driving any rendererengine (seq.)GUI timelinetheatre-js.md
Javis.jlJulia frame-function on Luxor/Cairoengineimperativejavis.md
Makie.jlJulia GPU plotting, Observables reactiveenginereactivemakie.md
nannouRust immediate-mode wgpu creative-codingengineimmediatenannou.md
MathAnimationC++ from-scratch native engine + editorengineimperativemathanimation.md
Penrosediagrams by numerical constraint optimizationdiagrammingdeclarativepenrose.md
Bluefishrelational diagramming (local propagation)diagrammingdeclarativebluefish.md
TikZ / PGFthe TeX-native vector languagediagrammingdeclarativetikz.md
Asymptotedescriptive vector language with 3Ddiagrammingdescriptiveasymptote.md
CeTZTikZ-for-Typst, rendered by the Typst compilerdiagrammingdeclarativecetz.md
MetaPostHobby's equation-solved-points origindiagrammingdeclarativemetapost.md
Rendering BackendsCairo/Blend2D/Vello/Skia/… rasterizersbuilding block—rendering-backends/
Math TypesettingLaTeX→dvisvgm / MathJax / Typst / HarfBuzzbuilding block—math-typesetting.md
Video Encodingffmpeg / libav / GStreamer / SVT-AV1building block—video-encoding.md
Comparisoncapability matrix + consensus + delta tablesynthesis—comparison.md
Sparkles Baselinethe D monorepo's greenfield starting pointsynthesis—sparkles-baseline.md
Engine Proposalmilestoned M1–M10 hybrid-engine designdesign—animation-engine-proposal.md

Taxonomies ​

By authoring paradigm ​

ParadigmSubjects
Imperative play-loop / frame-functionManim CE, ManimGL, Javis, MathAnimation
Generator / play-headMotion Canvas
Pure frame functionRemotion
Reactive / observableMakie
GUI timeline / keyframeTheatre.js
Immediate modenannou
Declarative constraint / relation / equationPenrose, Bluefish, TikZ, Asymptote, CeTZ, MetaPost

By rendering model ​

ModelSubjects
CPU vectorManim CE (Cairo), Javis (Luxor), Makie (CairoMakie), Cairo/Blend2D/resvg
GPUManimGL, Makie (GL/WGL), nannou, MathAnimation, Vello/Lyon/NanoVG/raylib/Skia
Web canvas / DOMMotion Canvas, Remotion, Theatre.js
Vector document (PDF/PS/SVG)TikZ, Asymptote, CeTZ, MetaPost
Optimizer-laid-out (renderer-agnostic)Penrose, Bluefish

By language / ecosystem ​

EcosystemSubjects
PythonManim CE, ManimGL
TypeScript / webMotion Canvas, Remotion, Theatre.js, Penrose, Bluefish
JuliaJavis, Makie
Rustnannou
C / C++MathAnimation
TeX / Typst familyTikZ, Asymptote, CeTZ, MetaPost

By output target (maps to the hybrid D goal) ​

TargetSubjects
Offline video fileManim CE, ManimGL, Javis, Remotion, MathAnimation
Real-time native windowManimGL, Makie (GLMakie), nannou, MathAnimation
Interactive webMotion Canvas, Remotion, Theatre.js, Makie (WGLMakie)
Static vector figurePenrose, Bluefish, TikZ, Asymptote, CeTZ, MetaPost

Milestones ​

When the field's key capabilities landed. Coarse dates are [literature].

WhenWhat
~1994MetaPost (Hobby) — equation-solved points + Hobby splines [literature]
~2004–2005Asymptote and PGF/TikZ bring descriptive vector graphics to TeX [literature]
~2009–2014MathJax then KaTeX — web math rendering [literature]
~2015–20183Blue1Brown's manim authored then open-sourced; Makie.jl and nannou appear [literature]
2020Manim Community fork formalised; Javis.jl; Penrose (SIGGRAPH) [literature]
~2021–2023Remotion (React-as-video); Typst + CeTZ; Vello GPU vector; Motion Canvas public [literature]
~2024–2026Bluefish (UIST '24) relational diagramming; nannou 0.20 Bevy rewrite; Typst math + wasm mature [literature]
2026-07-11This survey's **Last reviewed:** date

The runnable probes ​

Dependency-free dub single-file programs under examples/; CI compiles and runs each (ci --example-files). They ground the survey's geometry and timing claims in code.

ProbeDemonstratesBacks
bezier-eval.dquadratic vs cubic; exact quad→cubic elevation + the one-way fit costscene-graph, ManimGL
rate-functions.dsmootherstep vs the community sigmoid smooth; lag_ratio staggerconcepts § easing
affine-transform.d3×3 compose = right-to-left composition; non-commutativityconcepts § affine
frame-capture.dsoftware framebuffer readback → checksum (the render→encode interface)video-encoding

Quick navigation ​

Suggested reading paths ​

Sources ​

Each deep-dive carries its own Sources section with the primary references behind its claims (repository paths pinned by commit, official-doc URLs, and papers). The four probes are the survey's own CI-run evidence; internal claim-by-claim grounding ledgers are kept under grounding/ (not published).