MotionGfx

A backend-agnostic motion graphics framework for procedural animation.


Procedural, Not Keyframed

Describe how a value changes and let the timeline compile it. No hand-placed keyframes to keep in sync.

Rust
// subject, field, and its new value
let grow = b.act(RADIUS, path!(<f32>), |_| 70.0)
.with_ease(ease::cubic::ease_in_out)
.play(s(1));

let track = grow.compile();
Live Playground

Running live, in this page, right now.

Start With Bevy

Bevy MotionGfx wires everything up for you: add the plugin, describe what should change, and it plays. No boilerplate to write.

Using a different engine, or your own renderer? See Building a Backend to plug it in.


Scrub Forward and Backward, for Free

Every timeline bakes once, then plays at any speed, in either direction, or jumps straight to a frame. No extra computation, no re-simulation.


Ready to animate?

Read the Quickstart →