Babylon.js icon indicating copy to clipboard operation
Babylon.js copied to clipboard

Update MRTK-based controls to MRTK 2.0 specs

Open rickfromwork opened this issue 4 years ago • 2 comments

There's lots that still needs to be done, so this will be a bucket task to contain everything. Tasks are taken from MRTK's guide here: https://docs.microsoft.com/en-us/windows/mixed-reality/mrtk-unity/?view=mrtkunity-2021-05#ux-building-blocks

  • [ ] BoundingBoxGizmo: Introduce MRTK 2.0 visuals, behind a flag. Use MRTK 1 (current) by default
    • Replace each interaction joint with slender bars along the relevant edges
    • Hide non-relevant bars on interaction with a given bar
    • Draw faint bounding box when visuals are active
    • Hide most visuals when not active (ray/hand is not near)
  • [ ] TouchHolographicMenu: Introduce ability to add more controls, like a backplated slider
  • [ ] TouchHolographicMenu: Add manipulation visuals around edges
  • [ ] TouchHolographicMenu: Add snap-to-world toggle functionality

Quality of life changes:

  • [ ] TouchHolographicButton: Text scaling when sizing UI for AR/VR is too small
  • [ ] HolographicSlate: Fix slate depth on browser (appears inside near clipping plane)
  • [ ] Slider3D: Add text, description to slider thumb

Completed:

  • [x] TouchHolographicButton: pressing button should compress front, not scale button
  • [x] VolumeBasedPanel: Needs support for tall panels (just one column)
    • Already supported, just hidden. Explicitly setting VBP.rows will populate the panel one column at a time instead of one row at a time
  • [x] VolumeBasedPanel: Expose a way to customize padding amounts
    • Padding is determined at TouchHolographicMenu level, change was made there
  • [x] SixDofDragBehavior: Add support for near interaction rotation using wrist joint orientation
    • Pass orientation of controller/hand through via pick data, instead of just direction of raycast. This way we can also enable proper rotation manipulation for motion controllers.
  • [x] HolographicSlate: Have corner resizers respect the slate's aspect ratio
  • [x] HolographicSlate: Have scaling applied to slate be applied to the slate's bounding box as well
  • [x] Slider3D: Add backplate support
    • MRTK appears to use touch instead of grab when a backplate is present
    • Visuals on the thumb also change to a circular cylinder
  • [x] Slider3D: Change slider thumb visual to cylindrical oval
  • [x] TouchHolographicMenu: Backplate visibility shouldn't be tied to all buttons that share resources
  • [x] HandMenu: Lock menu to left hand so common-dominant hand can press buttons
  • [x] HandMenu: Trim backplate to snap to buttons
  • [x] HandMenu: Change visibility settings to disappear if hand is not palm up and focused, either with eye or head gaze

rickfromwork avatar Aug 10 '21 17:08 rickfromwork

image

@rickfromwork Hi, I'm new to WebXR and I'm not very clear about the concepts in the task list you listed above; Can you tell me whether “Near manipulation” done? it is found that "Far manipulation" is completed in WebXR Babylon demo,but i can't found demo about Near manipulation function

DLGL99GL avatar Oct 15 '21 08:10 DLGL99GL

image

@rickfromwork Hi, I'm new to WebXR and I'm not very clear about the concepts in the task list you listed above; Can you tell me whether “Near manipulation” done? it is found that "Far manipulation" is completed in WebXR Babylon demo,but i can't found demo about Near manipulation function

@DLGL99GL Near manipulation is implemented for browsers that support hand joint tracking in XR, however there is not yet a demo scene with it already activated. It should be available for use though as soon as you enable the hand tracking feature, such as in the following playground example: https://www.babylonjs-playground.com/#F41V6N#512

rickfromwork avatar Oct 19 '21 03:10 rickfromwork

We are closing this as MRTK for Babylon.js has been released. Feel free to open a new issue, for additional work.

thomlucc avatar Sep 29 '22 18:09 thomlucc