01 / Animation
Your first scene
Create two objects, arrange them, and give them a little motion.
View Python sourceAn experiment in animation
Noon is an experimental animation engine inspired by Manim. It is written in Rust, with performance in mind, and supports authoring in Python and Rust.
The goal is to make creating animated visuals feel frictionless — for explanations, simulations, interactive design, and ideas that do not fit a category yet.
Experimental software. APIs and feature coverage are still changing.
A few things to make
These are captures of real Noon scenes, not illustrations of planned features. Play a clip here, or open its source in the playground and change it.
01 / Animation
Create two objects, arrange them, and give them a little motion.
View Python source02 / Visual explanation
Add two circular wave fields and change their relative phase.
View Python source03 / Motion design
Combine typography, animated color, procedural grain, and a frosted caption.
View Python sourceClips are visual excerpts, not performance measurements. For input-driven scenes, try click selection or dragging objects in the gallery.
Choose your starting point
The playground includes an editor and runnable Python examples. Choose a scene, edit its source, and press Run.
The engine runs as WebAssembly, with WebGPU or WebGL2 rendering and Python through Pyodide. The first run needs to load the runtime.
Open your first scenefrom noon import *
class Demo(Scene):
def construct(self):
circle = Circle(color=BLUE)
square = Square(color=PINK)
square.next_to(circle, RIGHT)
self.play(Create(circle), Create(square))
self.play(
circle.animate.shift(UP),
square.animate.rotate(PI / 4),
run_time=2,
)
self.wait(1)About the project
Noon began years ago as a minimal working prototype. It was recently redesigned with AI agents, which now contribute much of the development. It is an ongoing experiment, not a finished product.
Noon follows much of Manim Community Edition’s authoring semantics and visual behavior for supported features. It is not a drop-in implementation of every Manim API. Compatibility is useful, but it is not a strict long-term constraint; new features may take Noon in different directions.
Python works in the browser and natively; Rust has native and WebAssembly paths. Feature coverage and playback capabilities differ between hosts. Some callback-driven or interactive scenes have replay restrictions. Start with a runnable example, and consult the reference before depending on a particular feature.