Skip to content

About

Turn any character image into an animation: add virtual bones to the character, animate, and export.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

PuppetMotion 2D

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.

Demo

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.

How it works

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.

Features

  • 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.

Download

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 .pm2d projects 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.

Current Development Status

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.

Build from source

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.

License

Licensed under either of

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.

About

Turn any character image into an animation: add virtual bones to the character, animate, and export.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages