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 deltaAnimation 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 vocabularyconcepts.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 blockrendering-backends/
Math TypesettingLaTeX→dvisvgm / MathJax / Typst / HarfBuzzbuilding blockmath-typesetting.md
Video Encodingffmpeg / libav / GStreamer / SVT-AV1building blockvideo-encoding.md
Comparisoncapability matrix + consensus + delta tablesynthesiscomparison.md
Sparkles Baselinethe D monorepo's greenfield starting pointsynthesissparkles-baseline.md
Engine Proposalmilestoned M1–M10 hybrid-engine designdesignanimation-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).