JungWhoNam / ospray

An Open, Scalable, Portable, Ray Tracing Based Rendering Engine for High-Fidelity Visualization
http://ospray.org
Apache License 2.0
0 stars 0 forks source link

Increase the tracking range of flying gesture #9

Closed ghost closed 1 year ago

ghost commented 1 year ago

I am testing v2.11.0-alpha.1.

The flying gesture works fine when I am close to a Kinect sensor (about a meter away). However, when I move further away from the sensor (like 2-meters away), the gesture stops working.

Looking at an example program from Microsoft, Azure Kinect Body Tracking Viewer.exe, joints should be detected fine even when an user is 2-meters away.

ghost commented 1 year ago

Currently tracking data for certain joints should be reliable enough for the flying gesture to work (see modules/mpi/multiDisplays/tracking/TrackingManager.cpp).

// check if the tracking data is reliable for further detections.
if (state.confidences[K4ABT_JOINT_SPINE_NAVEL] < K4ABT_JOINT_CONFIDENCE_LOW ||
    state.confidences[K4ABT_JOINT_HAND_LEFT] < K4ABT_JOINT_CONFIDENCE_LOW ||
    state.confidences[K4ABT_JOINT_HAND_RIGHT] < K4ABT_JOINT_CONFIDENCE_LOW ||
    state.confidences[K4ABT_JOINT_NECK] < K4ABT_JOINT_CONFIDENCE_LOW) {
    return; // skips flying gestures
}

I wrote a simple program using Kinect SDK to see what are the confidence levels for these joints. And it turns out K4ABT_JOINT_HAND_LEFT and K4ABT_JOINT_HAND_RIGHT become out-of-range (aka unreliable) when the user far away (like 2-meters out).

It seems like the other two joints seems to work fine, and K4ABT_JOINT_WRIST_LEFT and K4ABT_JOINT_WRIST_RIGHT are good joints to track. Therefore, a possible solution might be using wrists instead of hands to trigger the flying gesture.