Problems with fingers detection

Problems with fingers detection

I've found an interesting behaviour - my app tracks for "index" to let a user to paint on the screen, from time to time API reports me the index in the thumb or ring or pinky position (this is impossible, i'm not able to cross my fingers like this) even if i'm showing open hand to camera. 

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Dmitry,we will investigate and get back with you soon. Thanks! David

This is a known limtation. The finger tracking module cannot yet distinguish fingers in all positions.
For finger pointing, please try the fingertip geometric node, which is more robust than the index finger.

Hello, is there an ETA on when finger tracking is going to be more reliable? For the application I am trying to build I need to track the fingertip of all fingers. In other words using the fingertip geometric node does not solve the issue I ran into. Also, another problem I ran into, related to finger detection,  is tracking all ten fingers at the same time. Looking at the gesture viewer demo I can see it working, but in my applicationI can only get one hand at a time. Primary hand tracks all fingers OK, but secondary hand gets only the center of the hand. The only difference between my program and the gesture_viewer is that I use positionWorld as position image is not 3D. 

EDIT: I have found a solution for the tracking all 10 fingers. The issues was related to the boolQueryGeoNode() method in the pxcupipeline.cs (Unity "wrapper"). What I was doing in Unity was querying all 12 Nodes separately and this seems to break when getting the information for the secondary hand. Looking in the gesture documentation I noticed that the same call that returns information about one node can return an array of nodes, but calling the  bool QueryGeoNode() to get and array of nodes did not work any better. Still got the same issue as before. Looking in the implementation of the  bool QueryGeoNode(.... data_array) does a for loop and calls the same bool QueryGeoNode(). What I had to do in order to get this working is change the implementation of  "PXCUPipeline_QueryGeoNode" in the libpxcupipeline.dll so it would call pxcStatus QueryNodeData(pxcUID user, Label body, Data *data) when onlu one node is requested and pxcStatus QueryNodeData(pxcUID user, Label body, pxcU32 ndata, Data *data_array) when multiple nodes are requested. 

Any ideas on how to overcome the above?


I ran into the same issue as Alin.. Finger tracking is surprisingly unreliable on Unity framework implementation.

Leave a Comment

Please sign in to add a comment. Not a member? Join today