Physics-Based VR Hands
Roles:
Designer, Developer
Tools:
Unity Engine, C#
Timeline:
Aug 2022 — Dec 2022
Additional Context:
Made solo as part of my development for Don’t Show. Don’t Tell.
As part of the work for Don’t Show. Don’t Tell., I designed and developed a pair of physics-based virtual hands for VR. The project’s focus on the experience of embodiment in VR made the player’s hands an important focus, and I wanted the hands to respond to objects in the environment (not just the other way around) in a more profound way than in most VR experiences.
The masses of in-game objects affect how easily a player can push/carry/throw them instead of becoming weightless when grabbed or being effortlessly pushed aside.
The hands don’t clip into objects, instead being stopped when they meet an object they can’t move. Additionally, fingers will curl and flex slightly when pressed into such an object.
When grabbing an object, fingers (tracked individually) curl to grip the object based on the object’s shape as opposed to snapping into a grabbed position or simply being replaced by the object itself as is often done in VR applications. The joints of the fingers have varying strengths, impacting the way the fingers bend and flex if a player tries to grip an ungrabbable object.
When the hands and fingers collide with an object, a haptic response is provided based on the velocity of the impact, giving users an improved sense for when contact has been made.
Thrown objects have intended trajectories estimated based on data from previous frames. The result of all of these attributes is a pair of virtual hands that the user can easily internalize as their own, enhancing the sense of embodiment at the core of the project.