Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
194 stars 9 forks source link

Expose Index Controller Finger Curl "trigger floats" on Index controller node in logix #810

Open InsaneGrox opened 4 years ago

InsaneGrox commented 4 years ago

I found out that in the steamVR input bindings there are some hidden values for the index, middle, ring, and pinky finger curl, and I thought it would be pretty neat to have access to these for logix reasons, specifically custom logix hand posing using the index controllers, since using invisible fingers and reading the rotation in order to get the finger curl seems a bit hacky and unneccecary. (also these values ignore skeletal input's tendancy to curl the hands based on orientation since they are pure input instead of skeleton based)

Binding code (taken from index_controller_profile.json)

"/input/finger/index" : {
  "type" : "trigger",
  "visibility" : "InputValueVisibility_AvailableButHidden",
  "binding_image_point" : [ 56, 86 ],
  "order" : 100
},
"/input/finger/middle" : {
  "type" : "trigger",
  "visibility" : "InputValueVisibility_AvailableButHidden",
  "binding_image_point" : [ 56, 86 ],
  "order" : 101
},
"/input/finger/ring" : {
  "type" : "trigger",
  "visibility" : "InputValueVisibility_AvailableButHidden",
  "binding_image_point" : [ 56, 86 ],
  "order" : 102
},
"/input/finger/pinky" : {
  "type" : "trigger",
  "visibility" : "InputValueVisibility_AvailableButHidden",
  "binding_image_point" : [ 56, 86 ],
  "order" : 103
},
Enverex commented 4 years ago

I was actually speaking to Dante about this yesterday when setting up a friend's gestures. Basically the addition of this would also allow you to recreate VRChat-like gestures (e.g. Victory, Rock and Roll, etc) which currently aren't possible as it requires knowing the position of the individual fingers.

Frooxius commented 4 years ago

I don't plan on exposing those directly, as it's technically redundant information, since the rotations are already there and it will kinda break the principles of Neos system, which is based around the actual skeletal model.

The proper way to handle this is to actually give the ability to compute the curl from the skeletal model, because then it doesn't matter where it comes from. It'll work with Oculus controllers, it'll work with Leap Motion and other forms of skeletal input and won't require transmitting redundant data.

I can add nodes and things to give access to the raw finger rotations of the skeletal model as well as pre-processed values like the curls.

3x1t-5tyl3 commented 4 years ago

Bumping this for support: I'd love to see a 0-1 float on a per finger basis or a node that'd allow to get specific singular values out of (any) controllers.

Be it the float for fingers on index or any future "controllers" or "vr-gloves" that might come out. I think it'd allow people who do have the hardware to fully use the capabilities to a more "easier to understand" level without having to deal with rotational calculations and things like that. (For example on the index, a halv curl on a finger is much easier from a float than a quaternian)

Hayden-Fluff commented 3 years ago

I was experiementing earlier, and the Finger Pose Source doesn't work entirely well for getting a 0-1 value for each individual finger curl, as those rotations are also effected by the passive rotations from SteamVR, currently my solution is to get the X from an unpack XYZW from the rotation of the bone that closest resemble 0-1, which from what I've seen, is still within a very large degree from fully being 0-1, not to mention these are effected by how the hand is rotated because of how SteamVR passively changes the resting pose.

Whether it be a dedicated node for getting the individual finger curl 0-1 of the Index controllers, added onto the existing Index Controller node, or a generic node that returns a 0-1 float of the given finger curl, either of these would work perfectly.

Hayden-Fluff commented 3 years ago

Any updates on this? I am continually encountering cases where this information would be very useful.

sveken commented 2 years ago

Noticing this myself, i have my gestures set up watching the finger rotations however if i have my hand pointing straight down for example the reading is different, even when the fingers are not rotating?