top of page

Oculus Touch - hand to controller

I'm trying to work out the socket offset (bone offset, rotation, scale) for a hand that'll follow the Oculus Touch controller and do the hand gestures like point, grip, stick wiggle... It seems like at least each main finger should be easily bendable to lie on their respective buttons (thumb=joystick, index finger = trigger, mid finger = grip). This isn't nearly as easy as, um, doing it with your hand. Maybe this would be easier to describe with a picture:

While holding the Touch controller, the rest position of your thumb is probably such that the crease of your 3rd thumb joint touch the edge of the joystick. At rest, the crease of the index finger's 2nd joint touches the inner edge of the trigger button. Likewise the crease of the the middle finger's 2nd joint touches the inner edge of the grip button. At least that's what my hand does. I don't have long guitar player's fingers, but the Touch controller seems custom made for my size hand.

When animating the hand position for the A B (or X Y buttons there are two ways for switching the thumb. You can click each button with the tip of the thumb, bouncing your whole thumb from button to button. Or you can roll your thumb, pressing the top-most button with your thumb tip and the bottom-most with the pad of the thumb (back near the crease). The latter feels slightly more efficient (maybe). It might be wise to set up both and allow users to set a preference ... but then again, some people might do both. Additionally, you have to provide an animation or pose for both A B pressed together. The hand is almost begging to be drawn with a ghost or xray shader so you can see the buttons pressed, because the thumb covers both buttons and its movement are somewhat subtle from one to the other.

While pressing the trigger or grip, the thumb may or may not drift sideways to rest on the curved plastic wrapping round the fingers, instead of staying over the thumb. There's no way to predict this relatively big thumb movement. Similarly, it's likely that some people's thumb may tend to drift over the A B button more than over the thumbstick.

The hamburger options button can be accidentally pressed by the crease of the thumb while pressing other buttons. It would probably be a good idea to include checks for button exclusivity when running button execute events. What should the hamburger button do if pressed while the trigger is also held, for instance?

For creating poses to match with Controller inputs via AnimBlueprint state machine poses in UE4, you have to decide whether or not to pose individual fingers rather than entire hand poses. If you create an animation per finger between straight and curled, then you can handle the animation composite using 1D blend spaces with per bone filtering.

The four digits of the hand only curl. They have boolean (true/false) poses for the controller. But the pinky and ring finger are almost always held fast against the lower grip. The possibility space of the thumb though is wider:

no thumb action

press stick

stick X

stick Y

button1 (A or X)

button2 (B or Y)

special/hamburger

combinations of the above buttons like A+B

combinations with grip (fist as opposed to thumbs up)

Matching the hand with the controller, thumb motion on the stick can be filtered by a boolean that is true when either X or Y values are not equal to 0.0 for the Controller ThumbStick values.

When it's false when can branch through the other buttons the thumb relates to, and if they are false, we can send the thumb into a neutral or inactive pose.

Notice in the Oculus Rift Home app, the ghost hand thumb idle is a thumbs up, which is clearly meant to signal the thumb is not touching anything even though the thumbs up pose is not a good resting pose. The Touch controller responds to capacitative touch, so it can rest on the thumb stick even when the thumb stick is not actually pressed, but it doesn't know where the thumb is when nothing is hovered or pressed. Personally, I tend to rest my thumb on the curved side plastic arch to the right side or the left rim edge, the two points are almost a 90' angle for the thumb to cover. A possible compromise for handling the unhovered rest state of the thumb is to put it on the stick side if the stick was last used, or put it on the button side if the buttons were the last used. If the index finger points, put the thumb on the arched plastic, which is more likely to match the point direction comfortably than a thumb's up (we don't typically add a strong thumb's up to a pointing action if we are holding something).

Also remember the hand socketed to the Touch controller will roll with the controller when the player supinates their arm.

Featured Posts
Recent Posts
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page