MotionGfx is a backend-agnostic motion graphics creation framework for Rust. Free and open-source forever.
- Backend agnostic: MotionGfx describes what changes and leaves drawing to the backend.
- Just code: Scenes are plain Rust, built with loops, functions and variables.
- Relative actions: Each action starts from the field's current value, so steps chain naturally.
- Two-way playback: Play at any speed, in either direction, or jump to any frame without re-simulating.
- Batteries included: Common easing and interpolation functions are built in.
// Move a ball up, then back down.
let track = [
b.act(ball, path!(Ball.y), |_| 30.0)
.with_ease(ease::quad::ease_out)
.play(ms(600)),
b.act(ball, path!(Ball.y), |_| 140.0)
.with_ease(ease::quad::ease_in)
.play(ms(600)),
]
.ord_chain()
.compile();- Website: guides and live demos.
motiongfx: the core crate, with a full walkthrough.bevy_motiongfx: the Bevy backend.- Moxie: a visual editor for MotionGfx.
motiongfx is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

