A high-performance 2D character animation engine written in Rust.
Turn a single drawing into a game-ready animation. Open a picture of a character, place its bones, animate it on a timeline, and export in multiple formats.
Watch Full Demo - How to Animate a character in PuppetMotion
🌐 Web Version: PuppetMotion2D Web
💻 Windows Desktop: v0.2.0 Release (Faster performance for high-resolution images)
Free and open source, written in Rust with egui.
| Step | What you do |
|---|---|
| Review | Open a drawing. The app finds the character and dims the background, so you can check it was cut out cleanly. |
| Rig | A skeleton template (front or side view, facing left or right) fits over the character. Drag the joints into place, and each coloured area moves with its bone. You can also build your own skeleton for monsters and animals. |
| Animate | Pick a ready-made motion, or drag hands and feet to pose; the whole limb follows. Press K to keep a pose at a frame, move along the timeline, and pose again. The in-betweens are filled in for you. |
| Export | Preview the result, then save a looping GIF, a sprite sheet or PNG frames for a game engine. |
No drawing at hand? The start screen has four samples to try, each rigged in one click: a hero, a fox, a slime and an octopus.
- Automatic cutout: works with transparent PNGs and with drawings on plain or slightly textured paper, including sketchy outlines with small gaps. The settings are picked for each drawing, so most need no tuning.
- Skeletons: templates for people (front and side view), four-legged animals, tentacled creatures and blobs, joints that snap onto the drawing, a free-form bone editor, rotation limits, and saving your own templates.
- Posing: two-bone IK, so dragging a hand bends the elbow. Children follow their parents, and a draw-order list puts the far arm behind the body.
- Bending: the drawing is a mesh that bends smoothly at elbows, knees and other joints, with one softness setting from stiff cut-out to soft and squishy.
- Weight brush: paint where each bone pulls the drawing (Add, Remove, Smooth), for example so hair follows the head. A heat map shows the result as you paint.
- Fill behind parts: guesses what's hidden behind an arm or the head, so moving them shows more body instead of a hole.
- Quick motions: Idle, Walk, Run, Jump, Punch and Wave for person rigs, plus Breathe, Sway, Wiggle, Shake and Hop for any skeleton, including monsters, tails and blobs.
- Timeline: keys per bone, Smooth / Linear / Hold easing per key, dragging keys to retime them, frame-rate snapping, copy / cut / paste of keys (even between projects), zoom, and range select.
- Export: GIF, sprite sheet with JSON frame data (Phaser, Godot, Unity), or PNG frames, cropped to the moving character, at any size and frame rate, with a transparent or coloured background.
Get the latest Windows build from the Releases page:
PuppetMotion2D-Setup-….exe: installs for your user only (no admin rights needed), adds a Start menu shortcut, and opens.pm2dprojects with a double-click. Uninstall it from Windows Settings like any other app.PuppetMotion2D.exe: the portable version, a single file with nothing to install.
This is an early version that's being actively developed. Currently in development:
- Auto Rigging and Controlled Animation using AI models: one click rig generation using AI, Auto generate keyframes for different animation cycles with AI (Walk, Run, Attack etc..) and fine tune them manually.
- Layered characters: import each part as its own image (or a PSD) for clean side-view walk cycles.
- A bigger motion library to reuse walks on any character, and MP4 export.
You need Rust (stable).
git clone https://github.com/Adarsh0603/PuppetMotion2D.git
cd PuppetMotion2D
cargo run --release -p puppetmotion
The app is built as target/release/PuppetMotion2D.exe. To build the installer too, install Inno Setup 6 and run iscc installer\puppetmotion.iss (the setup lands in target\installer\). The Release workflow (run by hand from the Actions tab) builds both on GitHub and attaches them to a draft release.
Run the tests with cargo test --workspace.
The code is split into three crates:
| Crate | What it does |
|---|---|
core/ |
All the logic, with no UI: cutout, skeleton, part split, posing and IK, animation, project files |
app/ |
The editor window (egui) |
export/ |
Renders frames on the CPU and writes GIF, sprite sheets and PNG |
Ideas and bug reports are welcome in Issues.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in this work, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
