Closed ghost closed 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.
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.