A Lottie file toolkit written in Rust. Lottie is a JSON format exported with Bodymovin plugin from Adobe After Effects describing animations. This crate aims to parse, analyze and render this animation format with multiple renderers.
The following samples are gathered from lottiefiles.com community and lottiefiles.github.io. Credits goes to original owners/creators of the files.
Name | Preview | Name | Preview |
---|---|---|---|
Confetti | Nyan Cat | ||
Techno Penguin | Delete Animation | ||
A (5x scaled) | B (5x scaled) | ||
Bounce Strokes |
The default player implementation uses Bevy to render the animation.
Currently supports bevy 0.13.0
.
cargo r --release -- --input ../../fixtures/ui/drink.json
There are some lottie files for demonstration purpose under fixtures/ui
bevy | lottie-rs |
---|---|
0.13 | main / 0.0.1 |
Exporting animation headlessly is also supported, aiming to render animations on a server. Currently
you can export animation to webp
file using the --headless
option.
cargo r --release -- --input fixtures/ui/drink.json --headless
A webp
file with the same name as input JSON will be generated.
Due to limitation of webGPU, some features are not supported and listed below.
- Blend mode: this involves complex texture exchanging and is really hard
This library uses font-toolkit to manage/load/use fonts, which is also MIT-licensed.
If a font is missing or a system default font is used (e.g. monospace
), currently lottie-rs
will
use Fira Mono as the default fallback if running on architecture
that allows local font loading. For WASM targets, this fallback logic is not present, a matching
failure will cause the text being skipped.