Locomotion Comfort
Updated: Oct 3, 2024
Comfort during Locomotion
Comfort and usability are crucial when designing a fully immersive locomotion system. A comfortable fully immersive experience minimizes sensory mismatches and aligns closely with physical world experiences. This page outlines the comfort techniques available for Locomotion in Interaction SDK.
If you want to learn more about comfort, please refer to the following pages:
When reducing the player’s field-of-view for comfort, the traditional approach has been to draw a vignette centered on the screen with a radius specified in UV coordinates. However, this means that the occluded field-of-view varies per HMD, and the vignette may not always be effective.
To address these issues, the
LocomotionTunneling
component makes use of the more generic
TunnelingEffect
in order to draw a vignette around the user’s point of view during movement. Currently it has the following features:
- The vignette direction is defined by a vector, allowing it to follow the eyes or point in any direction. This can be used to occlude the headset FOV, the center of the view or in pair with Eye Tracking.
- The vignette shader is directly defined in degrees, ensuring that the user will always experience the desired amount of occlusion regardless of the headset’s real field-of-view.
- The system supports gradients and feather.
LocomotionTunneling
works in pair with the
LocomotionEvents
and can react to them directly in three different ways:
- Rotation: occludes the field-of-view when the locomotor rotates at a certain speed.
- Movement: occludes the field-of-view when the locomotor moves at a certain linear speed.
- Acceleration: occludes the field-of-view when the locomotor accelerates. Note that this includes accelerations and decelerations.
The default parameters can be changed to control the fade-out speed, feather of the vignette, colors and specially the allowed field-of-view during the different locomotion events.
Virtual worlds are usually designed expecting the user to stand up and interact with the environment as if they were walking around there. But many users like to use virtual reality seated, specially if they are going to be in an experience for a prolonged time.
To avoid fatigue it is a good practice to offer a seated-mode that adds an extra height offset to seated players, pushing the virtual-floor down, so they reach all interactables placed at standing height. The
CapsuleLocomotionHandler
offers a
Height Offset
parameter that can be used to add this extra height.