This one has been a very long time coming, I’m super excited to reveal the new player hand models!
With these there’s finally a visual explanation for how the player can fly around at insane speeds, and it solidifies that you are a person in a high-tech suit, not some kind of spectral entity like the default Oculus hands implied.
Unity Animation Implementation
Getting these hooked up to the Rift controllers was pretty simple, VRTK handled most of the configuration there. By assigning an avatar mask to each finger you can have per-finger controls just like in the first-party Oculus demos, and in theory this method is forward compatible with the new Vive Knuckle controllers.
There’s a bit of nuance involved with getting this to play nicely with animations that affect the entire hand at once. For example, the flight animation forces the hand into a fist, even though the controls that normally govern the finger anims are currently telling them to remain open.
The trick here is to keep all animations that don’t care about the fingers’ independent animations on the base layer, but accessed via a blend tree. That way the animation will override any masked animations, and still have nice analogue controls just like the individual finger animations.
VR Avatar Dissonance
Having non-placeholder hands actually forced me to consider the control scheme a bit more closely. Currently, on Rift Touch controllers, trigger makes you fly, grip summons your weapon, and with a weapon summoned trigger… well… pulls the trigger. In my opinion it’s a very intuitive control scheme, but now that I have real hand models I have to consider how closely the player’s hands match their in-game representation.
The hand animation for flight mode is closing your fist, which raises the thrusters out of their housing and propels you forward. But the action to trigger that is just to squeeze your index finger, not the entire hand, so there’s some dissonance there.
The obvious answer is to put flight mode on the grip button, but that’s already used to summon your weapons. One alternative is to have flight mode on grips, and have the trigger summon and immediately fire your weapons. This has a couple of advantages: It reduces shooting to one button press rather than two, and the physical gestures to control it are closer to their animations. But there is definitely a certain satisfaction to “grabbing” your weapons out of thin air with one action, and firing them with another.
It’s an interesting problem that only VR games have to contend with – is it more important for the control scheme to provide the most interesting gameplay possible, or to mirror the user’s actions precisely to enhance their immersion?
So, not a big update this week in terms of features, but a huge one in terms of polish in my opinion, and with these hand models finished I’m free to work on more gameplay features. Until now I’ve been wary of any mechanics that move your hands without direct input from the player, since chances are I’d have to work pretty hard to get the Oculus Avatar SDK to work nicely with it. Now I’m not using it, that opens the door to weapon recoil, flight turbulence, and gun weight. All little stuff that can massively improve the feel of the game.