Preview of interactive hands for virtual reality in Unity3d
This week, Passer VR released a free preview of the forthcoming VR Hand package. With this preview package you get full control of all fingers. It is possible to move and pickup objects while the hand is stopped by static objects.
The package is an advanced version of the scripts described in the Grabbing virtual hands in Unity and Virtual hands and static object collisions tutorials. This latest development implements procedural hand animations in which each finger can be moved independently. The fingers can be driven by input like mouse buttons, analog triggers or other digital of analog inputs. The package includes a demo using the mouse input, but devices like the Razer Hydra, STEM or VR gloves can be supported.
Objects can be picked up when the thumb and at least one the fingers grabs a rigidbody. This makes grabbing objects a realistic experience. When all fingers are flexed again, you will drop the object. You can grab an object at any point unless an Handle has been attached to the object. The Handle defines the position and rotation the object should have when it is grabbed. This ensures that a sword or tennis racket is always in the correct position when it is grabbed. Only when the object is grabbed in the area of the handle it will snap to the handle. This makes it still possible to grab the sword at the cutting end.
Handles are a script which can be attached to any rigidbody. In the scene view of unity you can see the position and orientation of the handle as a yellow box. The wired sphere shows the area in which the object will snap to the handle positions.
The hands will collide with rigidbodies using physics. This enables you to push them away for examples. This is not possible with static colliders like walls. My experiments showed that it feels much more realistic when hands are stopped by static colliders instead of moving through them. The downside of moving through static walls is that your real and virtual hands are no longer in the same location. This gives a strange feeling. This feeling is translated into something else which we cannot simulate easily at the moment: force. The different between the virtual and real hand position is translated into a force: the greater the distance, the greater the force. In the final version of the VR hand component this is used to interact better with the environment. You will need more force to move heavy objects for example. This will on the other side also create a reaction force at the hands. This may be translated into haptic reactions in the feature, driving controllers like the Reactive Grip from Tactical Haptics.
The component is not ready yet for its final release. The most important things which are missing is that the objects which you pick up can still move through static objects. It is also not possible to touch a grabbed object with your other hand. This and some other important features need a full redesign on which I am working now.
In the mean time: have fun with this free preview release!