creativeIKEP / HolisticMotionCapture

HolisticMotionCapture is an application and package that can capture the motion of a person with only a monocular color camera and move the VRM avatar's pose, face, and hands.
Apache License 2.0
143 stars 17 forks source link
avatar barracuda deep-learning facetracking handtracking holistic mediapipe neural-network pose-estimation unity vrm

HolisticMotionCapture

demo

HolisticMotionCapture is an application that can capture the motion of a person with only a monocular color camera and move the VRM avatar's pose, face, and hands.

Pose, face and hands can be moved simultaneously or individually.

You can also output the rendered video to other applications.

Install HolisticMotionCapture application

HolisticMotionCapture can be downloaded from release page.

For Windows

Download installer(HolisticMotionCapture-1.1.0setup.exe file) from 1.1.0 release page and execute it.

For Mac OS

Download installer(HolisticMotionCapture_installer.pkg file) from 1.1.0 release page and execute it.

Usage HolisticMotionCapture application

Select your VRM file

Image Device

  1. Select source input camera device from Input Device pull down.
  2. (Option) Set the resolution of camera images in W and H input field.
  3. Push the Start/Stop button for starting or stopping camera capture.

BackGround Select

Output Control

For Windows

Rendered images can be output as the virtual camera image if Output on/off toggle is on. You can show composited image in another applications when you select a camera named HolisticMotionCapture in another applications.

For Mac OS

Rendered images can be output as the Syphon image if Output on/off toggle is on. You can receive composited image in another applications compatible with Syphon.

Avatar Control

For Developers

HolisticMotionCapture provides a package to move VRM avatars independently of my application.

Install HolisticMotionCapture package

HolisticMotionCapture package can be installed by adding following sections to your manifest file (Packages/manifest.json).

To the scopedRegistries section:

{
    "name": "Keijiro",
    "url": "https://registry.npmjs.com",
    "scopes": [ "jp.keijiro" ]
},
{
  "name": "creativeikep",
  "url": "https://registry.npmjs.com",
  "scopes": [ "jp.ikep" ]
}

To the dependencies section:

"jp.ikep.holistic-motion-capture": "1.1.0"

Finally, the manifest file looks like below:

{
    "scopedRegistries": [
        {
            "name": "Keijiro",
            "url": "https://registry.npmjs.com",
            "scopes": [ "jp.keijiro" ]
        },
        {
            "name": "creativeikep",
            "url": "https://registry.npmjs.com",
            "scopes": [ "jp.ikep" ]
        }
    ],
    "dependencies": {
        "jp.ikep.holistic-motion-capture": "1.1.0",
        ...
    }
}

Usage demo HolisticMotionCapture package

using UnityEngine;
using HolisticMotionCapture;

public class Visualizer : MonoBehaviour
{
    // Animator of VRM avatar
    [SerializeField] Animator avatar;

    HolisticMotionCapturePipeline motionCapture;
    WebCamTexture webCam;

    void Start()
    {
        // Initialize
        motionCapture = new HolisticMotionCapturePipeline(avatar);

        webCam = new WebCamTexture("Your webcam name", width, height);
        webCam.Play();
    }

    void Update()
    {
        // Ability to operate avatars with textures only.
        // You can also specify some optional arguments.
        motionCapture.AvatarPoseRender(webCam);
    }
}

Demo image

Video for demo was downloaded from here

Dependencies

HolisticMotionCapture package uses the following packages:

HolisticMotionCapture application also uses the following packages:

Author

IKEP

LICENSE

Copyright (c) 2023 IKEP

Apache-2.0