JLPM22 / MotionMatching

Motion Matching implementation for Unity
https://jlpm22.github.io/motionmatching-docs
MIT License
369 stars 41 forks source link
animation character-animation motion-capture motion-matching unity unity3d

Motion Matching


📚 Documentation

Welcome to the Motion Matching implementation designed for the Unity game engine. This project originated from the author's master thesis, providing a deep dive into both the Motion Matching technique and the workings of this specific Unity package. Download the complete thesis here for an extensive overview. The project is a work-in-progress, aiming to offer a comprehensive Motion Matching solution for Unity. It can serve as a useful resource for those keen to learn or implement their own Motion Matching solution or even extend this existing package.

Quick Start Guide

Follow these steps to get started with the Motion Matching package for Unity. Visit the 📚 Documentation for an in-depth description of the project.

Installation Steps

  1. Ensure you have Unity 2021.2+ installed (untested on other versions).

  2. Open the Unity Editor and navigate to Window > Package Manager.

  3. In the Package Manager, click Add (+) > Add package by git URL....

  4. Insert the following URL into the git URL field and click Add:

    https://github.com/JLPM22/MotionMatching.git?path=/com.jlpm.motionmatching

    Note: All sample scenes use the Universal Render Pipeline (URP). Conversion may be necessary if you are using a different render pipeline.

  5. [Optional] In the Package Manager, click on Motion Matching, then import the example scenes by selecting Samples > Examples > Import.

  6. [Optional] Go to Examples/Scenes/JLTest in the Project Window to explore the sample scenes.

Project Overview

Directories

Key Components

Demo scenes consist of two primary GameObjects:

  1. Character Controller: Creates trajectories and imposes positional constraints, like limiting the maximum distance between the simulated and animated character positions.

  2. MotionMatchingController: Handles all Motion Matching operations. It provides adjustable parameters for enabling/disabling features like inertialize blending or foot locking.

Feel free to tweak and explore these components to get a better understanding of the system.

Roadmap

Here's a list of upcoming features and improvements to enhance the capabilities and usability of the Motion Matching package for Unity:

Planned Features

Completed Features

Your contributions and suggestions are always welcome as we continue to develop this project into a comprehensive Motion Matching solution for Unity.

Citation

If you find this package beneficial, kindly attribute it to this repository or cite the author's master thesis using the following citation:

@mastersthesis{ponton2022mm,
  author  = {Ponton, Jose Luis},
  title   = {Motion Matching for Character Animation and Virtual Reality Avatars in Unity},
  school  = {Universitat Politecnica de Catalunya},
  year    = {2022},
  doi     = {10.13140/RG.2.2.31741.23528/1}
}

License

This project is distributed under the MIT License. For complete license details, refer to the LICENSE file.