Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
Jose's avatar
Jose
Heroic Explorer
13 years ago

What is proper sensitivity for 1:1 hydra movement?

I'm trying to get 1:1 movement for hydra controllers in Unity. So far, I've been eyeballing it, and I've settled for 0.00066 sensitivity for XYZ.

But what is the "proper" sensitivity? How do I even find that out? Does the "proper" sensitivity value change between different gameplay sessions or different base station locations?

:?:

3 Replies

Replies have been turned off for this discussion
  • drash's avatar
    drash
    Heroic Explorer
    I had just been using a .001 multiplier whenever dealing with the Hydra's positioning, but I really just eyeballed it too. I have no idea if it's consistent from one location to the next, or from one base station to the next. That's a really good question!

    Probably the most thorough Hydra calibration sequence I've seen so far is in COZ (thread and download links here), so that's probably worth checking out if you're looking for some ideas on that.
  • The sensitivity does seem to vary a little depending on your distance to the base station. I've also found the sensitivity is not the same along all 3 axes. Finally, and most importantly, players have different arm lengths and shoulder widths, so "1 to 1" is relative to the player, it's not a hard coded value.

    For example, if one player's reach is 3 feet, you can set the sensitivity so the in-game character's arm is fully extended when the hydra has moved 3 feet from the shoulder. If their reach is 2 feet, but you've got the sensitivity configured for a 3 foot reach, then they will never be able to extend their arms fully in the game even when they have in real space, because they won't ever reach the full 3 foot extension. If you hard code for 2 feet, then a player with a 3 feet reach will overextend.

    In Coz, I try to compensate for this by having the player place his/her hands at a few set points in space, fully extended in front, above, and each shoulder location. I derive the Z sensitivity from the distance between the shoulder and forward extension, the Y from the above extension, and the X from the distance between shoulders (I assume, in the code, that the shoulder width is half of the reach, otherwise the X values would be way off).

    Also, and this is really important, whatever point in real space you use as a base reference (I use the shoulders) must also be the start location for the hand model in-game.

    Hopefully that all made sense :-P. Whatever you go with, some form of calibration is definitely needed to get the most out of the hydra to compensate for different player sizes and base-station placements.
  • aleiby's avatar
    aleiby
    Honored Guest
    Hydra units are reported in millimeters, so your multiplier will depend on what scale you use for building content in Unity. It's recommended to use 1 unit = 1 meter (which is what physics are tuned for) which would require you to multiply the units reported by the Hydra by 0.001 (1/1000) like drash already said.

    But as COZ already mentioned, the Hydra's magnetic field is easily distorted by your environment, and starts to get noticeably off beyond 3 or so feet from the base unit - I usually leave my base off to one side, and find that with both arms extended out to my sides, the farther arm can report up to a foot longer than the other!

    A fun experiment is to take a meter length of PVC pipe (don't use anything metallic) and duct tape a controller at each end, then visualize the over/under distance reported from the Hydra as you move the controllers around the space. Also note how the distance/positions changes just by changing the rotations of the controllers.

    You can get a sense for how Clang's Hydra calibration works in this video:
    https://docs.google.com/file/d/0Bz1TkfNuGaNjT3cxX1U1NzI3Yzg/edit?usp=sharing

    The separate blue and green lines represent the values reported by Hydra vs the in-game model (which also accounts for users of different sizes / proportions / sitting vs standing / etc. than the in-game avatar).