https://github.com/voxell-tech/bevy_motion_matching
Motion matching enables characters to smoothly transition between animations by finding the best matching pose and trajectory from an extensive database, without the need to create state machines.
https://github.com/voxell-tech/bevy_motion_matching
3d-animation bevy bevy-engine motion-matching
Last synced: 11 months ago
JSON representation
Motion matching enables characters to smoothly transition between animations by finding the best matching pose and trajectory from an extensive database, without the need to create state machines.
- Host: GitHub
- URL: https://github.com/voxell-tech/bevy_motion_matching
- Owner: voxell-tech
- License: apache-2.0
- Created: 2023-12-04T06:51:21.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-13T15:56:56.000Z (about 1 year ago)
- Last Synced: 2025-07-19T08:47:51.286Z (12 months ago)
- Topics: 3d-animation, bevy, bevy-engine, motion-matching
- Language: Rust
- Homepage: https://discord.gg/Mhnyp6VYEQ
- Size: 66.6 MB
- Stars: 46
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Bevy Motion Matching
> [!Note]
> This project is being split up into library and example crates, to be published on [crates.io](https://crates.io).
> If you are interested in helping out, feel free to [reach out](#community).
Motion matching enables characters to smoothly transition between animations by finding the best matching pose and trajectory from an extensive database, without the need to create state machines.
Gameplay logic can be embedded side by side with motion matching by querying animations with the desired attributes.
## Showcase
### Configuration

### Play Mode

## Development
### Prerequisites
- Rust
- MSRV: v1.85.0
- Cargo
- Linux: [Bevy dependencies](https://github.com/bevyengine/bevy/blob/main/docs/linux_dependencies.md)
- Optional, for the Visual Studio Code `start` task: `cargo-watch`
- `cargo install cargo-watch` or `cargo binstall cargo-watch`
### Building
```bash
cargo build
```
### Running
```bash
cargo run --features bevy/dynamic_linking
```
## Community
- [Voxell Discord server](discord.gg/Mhnyp6VYEQ)
## Reference
- [Learned Motion Matching](https://static-wordpress.ubisoft.com/montreal.ubisoft.com/wp-content/uploads/2020/07/09154101/Learned_Motion_Matching.pdf)
- [Machine Learning for Motion Synthesis and Character Control](https://www.youtube.com/watch?v=zuvmQxcCOM4)
- [LAFAN1 Animation Dataset](https://github.com/ubisoft/ubisoft-laforge-animation-dataset)
- [Unity Kinematica](https://docs.unity3d.com/Packages/com.unity.kinematica@0.8/manual/index.html)
## License
`bevy_motion_matching` is dual-licensed under either:
- MIT License ([LICENSE-MIT](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0](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](https://github.com/bevyengine/bevy/issues/2373) to include both.