Giter VIP home page Giter VIP logo

motionmatching's Introduction

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

  • Samples/Animations: Contains motion capture (MoCap) files (with .txt extensions but originally .bvh files) and MMData files to define the animation database for the Motion Matching System.

  • StreamingAssets/MMDatabases: Contains the processed pose and feature databases, as well as skeletal information. This directory is automatically created when generating databases from an MMData file.

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

  • Enhanced Documentation: Work on a more comprehensive guide explaining the intricacies of Motion Matching. For now, you can refer to the author's master thesis.

  • Trajectory and Pose Feature Customization: Implement a more user-friendly system for modifying trajectory features, and expand the types of pose features available.

  • Motion Capture Library: Record additional motion capture data and create default avatars for immediate use in projects.

  • PathCharacterController Upgrades: Revise the current hardcoded path tools in favor of a more flexible system, possibly using splines or other advanced techniques.

  • Visual Debugging Tools: Develop a suite of visual debugging tools for easier inspection and adjustment during development.

  • Memory Optimization with Deep Learning: Investigate the use of deep learning algorithms to reduce memory usage in the system.

Completed Features

  • BVH Editor with Tagging: Introduced a BVH editor that supports real-time complex tag queries.

  • Unity Animation System Integration: Added tools and methods for seamless integration with Unity's native animation system. This allows, for example, the use of Unity's animation system for the upper body while utilizing Motion Matching for the lower body.

  • Unity Package Structure: Successfully restructured the project into a Unity package for easier distribution and integration.

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.

motionmatching's People

Contributors

jlpm22 avatar sulaimanwar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

motionmatching's Issues

Documentation and Verticality

Hi I'm loving the project
I've been diving into the code to see if there is anything I can contribute

I'm wondering about two things though

1)Is there any planned timeline for when the Reference in documentation will be updated? Or any updates at all for that matter?

2)I was wondering if this system could hypothetically support moving up along Y axis? I tried to force the transform of the controls to move up along Y axis but it keeps snapping back to the ground plane so I suspect there is some system in place that forces that behaviour. Because I would like the character to go up stairs or slopes. Or maybe I need to provide some animations for that too? Any insight or advice on this would be great

Quick Start Failed

I used the Unity Engine with 2021.3.24f version.

I tried to add the package using git url which is https://github.com/JLPM22/MotionMatching.git?path=/com.jlpm.motionmatching.

Even if tried many times but it is not working and I got these error messages:

[Package Manager Window] Cannot perform upm operation: Unable to add package [https://github.com/JLPM22/MotionMatching.git?path=/com.jlpm.motionmatching]:
Error when executing git command. fatal: not in a git directory
[NotFound].
UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()

Could you check about this issue?

Sync over network

am wondering how could i synchronize this system over network
I tested Network animator that come with netcode but didn't work
any idea ?
Thank you

About the determination of the virtual root joint

hi, I have some doubts about the determination of the virtual root joint. If the Xsens device is calculated with the hip bone as the root joint, can I understand that the original 3D of the hip joint is (0,0,0)? If so how did you establish the ground position? If it is judged by the grounding of the feet, how to deal with the movement of the feet not being grounded?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.