StereoKit
StereoKit copied to clipboard
Hand tracking problems when piching to grab an object
Description
Hand Tracking works poorly when there are multiple grabbable objects. See the video : https://youtu.be/X0cnyQcOt2w
Platform / Environment
rust binding on develop git branch. Quest 2 v62 and v63
Thanks for the video! I believe this is primarily related to the fact that hands have multiple interactors instead of just a single one. When you grab the object up close, the pinch gesture activates an interactor from your finger to your thumb, as well as an interactor from the hand to the panel!
I believe the solution here is to build some kind of relationship between the interactors to say "I can't be active if a higher priority interactor from the same source is active". I'm still thinking a bit about how best to do this, but it's towards the top of my list at the moment :)
There's also this annoying problem when you pinch the wrong button: How can you undo the action? On my PC, with the mouse, I simulate a drag&drop when this happens to me. I don't see an obvious solution there.
This is something I'm still thinking about! Previously, StereoKit used to activate buttons on JustActive for responsiveness, and I very recently switched to activating on JustInactive, which freshly introduces the thought "I should be able to cancel this!". To some degree I really like the stickiness of how it currently works, it feels really reliable when done intentionally and I want to preserve at least some of that feeling. But yeah, it should still be cancel-able now.
My current thought would be to break the activation connection either at some distance, or angle from the element. Or alternatively, interrupt the activation with some other input, like gripping, different physical button presses, pinching with a different hand etc. But I do also need to generally just introduce the concept of 'canceling' into the UI in the first place!