dantman / elite-vr-cockpit

A SteamVR Overlay providing a virtual throttle and joystick and holographic buttons for ship functions, with custom integration into Elite Dangerous
Other
326 stars 37 forks source link

Support Skeletal Input #88

Open dantman opened 5 years ago

dantman commented 5 years ago

We should support the Skeletal Input API to track fingers rather than controllers. Switching to SteamVR Input (#14) is a prerequisite.

We will not be able to provide a depiction of the player's hands in the overlay itself (the overlay API does not afford enough functionality) and we will not be able to control the in-game pilot hands without support from FDev for #73. However, it is worth using the skeletal input API on knuckles and VR gloves to switch from an interaction model where you intersect your controller and pull the trigger to an interaction model where you push a button with your index finger.

Handily it appears that OpenVR has also added a GetSkeletalTrackingLevel that tells you the fidelity of the skeletal input (Estimated=Wands/Touch I presume, Partial=Knuckles, Full=Gloves I presume). Which could be used to automatically switch to finger based input when the tracking level is Partial or better.

thibaultmol commented 5 years ago

With the Index controllers being sold to so many people now, this would be amazing to have!

dantman commented 5 years ago

Gloves of note:

dantman commented 5 years ago

We will not be able to provide a depiction of the player's hands in the overlay itself (the overlay API does not afford enough functionality)

The original plan was to add a fading out circle to represent the index finger and thumb.

However I just had a better idea. While the overlay does not afford us the ability to have articulated hands I can make an overlay use a static 3d model. So I could use a small model of a holographic-looking detached index finger to represent the index finger and do the same for the thumb as well.

dantman commented 5 years ago

HandshakeVR provides an API to handle both SteamVR Skeletal Input and Leapmotion. It's worth investigating however we may do the abstraction ourselves.