Forum Discussion

codesrc's avatar
codesrc
Protege
21 days ago

OS Level change DESTROYS quality of pointer functionality.

After a discussion with tech support, we've established that the Oculus organization is convinced it has done this, relative to hand pointer action in Unity with the All-In-One SDK:

"Hand tracking updates

We’ve made hand tracking more stable and responsive when navigating the universal menu and in apps, making it easier to interact with your hands in mixed reality. The cursor is now stabilized as you pinch your fingers together, so making selections should be more accurate. We also improved the responsiveness and stability of drag-and-drop interactions like dragging a Browser tab into a new window. The cursor should also perform more predictably and naturally when your hands are close to your body. Finally, new cursor visuals should help locating and targeting elements with your hands."

In reality, this is not what you have done.  What you've actually done, in Unity, is prioritize a limited 2-dimensional panel use case on hand pointer function that requires your interface is in the upper quadrant of your field of view and is set about 18 inches from the user.  If you have that, then you still have some level of accuracy with your hand pointers anchored in the new location you've elected to anchor them; the wrists. 

However, this is ABSOLUTELY NOT what everyone is doing with hand pointers.  The prior design anchored the hand pointer to the forearm.  This was a key insight of the Leap Motion team, who were added to the oculus team about 5 years ago.  With forearm anchoring, the user has the physical strength to aim the hand pointer carefully all over the virtual space--above, below, around a full 360 degrees, allowing them to explore a full virtual space and pick up 3 dimensional objects and relocate them, with good control out to at least 4 meters.  The hand pointers worked great for that use case, previously.  That use case, is a use-case you've single handedly destroyed with this change of anchoring.  The new system accuracy for that use case is absolute garbage now.

With a wrist anchored hand pointer, you have extremely noisy aiming which limits range from the previous range of approximately 4 meters, down to about 18 inches.  With the wrist anchored hand pointers, if you aim downwards in your space, you find random noise injected by AI approximation on hand pointer aiming that actually oscillates around on its on without any extra hand input signal.  This is enough to make hand pointers unusable for anything but that highly restricted use case you guys seem to think is most important.  You guys made a really poor decision here and from your press releases you seem to be proud of this awful, inexperienced and uninformed change.

People have been working with this system the way it was for years, and you've just broken the software relative to all that effort.

What you've done is forget the institutional memory that understood how to manage hand pointers, and you've replaced it with a naive, and short-sighted interpretation of hand pointer operation.  If you MUST support 2D panels in the upper quadrant at 18 inches away, fine, provide the new anchor point as an option, but PLEASE, DO NOT DESTROY the previous function which ALL DEVS WHO USE HAND POINTERS would have been relying upon.

Please put a switch in the software to allow continued support of the hand pointer function you've had for at least the last 5 years.  This small change you've forced upon your users is enough to destroy entire user interface designs.  All the user to select which anchor point you set for the hand pointers.  The way it is now is just plain old bad, and not the improvement you seem to think it is.  You could fix what you've done by adding a check box change which switches between the two competing geometries for hand pointer anchoring.

The hand pointer was fine in version 74 of the OS.  It is version 77 that breaks it, and with tech support, we proved that the change is a feature of the operating systems, not of end user code.  I'm opening up discussion about this with this post.  I invite any other developers having the same problem to add to the discussion and I myself am prepared to argue for and lobby the organization to restore the prior function so the years of work I've put into my software isn't wreaked by short sighted decisions in your organization.

Thank you, in advance, for correcting this mistake, please.

8 Replies

  • I'll also add that the new change creates a sensation in the user that the hand pointers are floating upward, as if to reach for the usability range constraint that you guys think is the right answer.  It feels awful, and it makes me wonder who was it that was asking for a change like this? 

  • +1 Hating the forced change. As suggested, please give developers a choice to switch back to the previous implementation

  • I had a typo in my first post:  Where I said-"All the user to select which anchor point you set for the hand pointers,"  I should have said--"Allow the user to select which anchor point you set for the hand pointers. "

  • Also, note, the appropriate location for a switch that would move between the two competing hand pointer mechanics would be in the Unity Editor controls for OVR Manager. 

    You could put it under Quest features->General, or Quest features->Experimental, or you could put it under Tracking, high up in the OVR Manager editor interface, or you could put it under Hand Tracking, lower in the OVR Manager interface.  Any of these locations would be an appropriate location for an entry like "Legacy Forearm Anchoring for Hand Pointers" vs. "Experimental Wrist Anchoring for Hand Pointers."  You could do it with a check box, or if you wanted the more self-explanatory options like those I just highlighted there, you could do this with a drop-down list.

    A good way to do it might be under the "Hand Tracking" header, with an entry called "Hand Pointer Anchoring" with a drop-down list option set that had "Legacy Forearm Anchor" vs "Experimental Wrist Anchor".

    With a switch like that you could support the new metaphor you guys seem to want, while allowing everyone else to continue to use the system that wasn't broken outside of the "too-narrow a context" you guys have in your minds right now...  I mean, you have made hand pointers unusable on your platform, so the only other option we have...  is to move to a platform where things work properly--that means dropping the Meta platform altogether.  It doesn't matter how many headsets Meta has in their market if our software doesn't work there anymore.  The corrective action is to leave the ecosystem.  You can't force interactions with a 3D environment with polar coordinates into a 2D square directly in front of you.  It won't work and it's not a feasible refactoring.  You need to support hand pointers that work in a complete 3D space.  Not every VR interaction looks like the home menu in the Quest OS and you can't force all of them to be that.  Your thinking is too narrow to justify this critical a change on the entire group of developers...

  • Just tested this in OS v.78:  STILL A HOT GARBAGE HORRORSHOW OF UNAIMABILITY.

    Here's how you know:  Just hold your arm steady pointed outward like you are shooting a ray of energy out of your hand at the wall in front of you, while you have a hand pointer ray drawing in your space, and do everything possible NOT TO MOVE.  You'd expect the hand pointer to be stable and locked on target, right?
     
    Result:  It is not.  Hand Pointer Ray will be doing a random walk around in your interface within +/- 5-10 degrees in horizontal and vertical axes.  You cannot hold it still.  It is no longer aimable, even if you are as still as a statue.  The further away your target the worse the inaccuracy.

  • The situation is worse if you point the ray straight down.  There it doesn't just do a random walk, it actually makes discrete jumps around from side to side, based on the tiniest of movements of the hand.  Everyone who uses hand pointers in Unity on a legacy project must hate this...  It is absolutely awful.

  • You see, the reason for attaching the hand pointer anchor to the forearm is that it gives you a longer lever arm with which to calculate the ray direction.  When that lever arm gets too short it amplifies the noise in the system and that's why the accuracy goes to hell.  The longer lever arm reading from the forearm data damps out that noise and gives you a more stable pointer, which extends the range at which you get a clean aim.  Just ask the Leap Motion guys who were working for you, if you haven't let them go...

  • I've created a MetaQuest Developer Hub issue:  

    I have created a MQDH issue 
    Feedback Report ID
    1063622452052338
     
    DEVASTATING HAND POINTER GEOMETRY CHANGE