When acceleration takes place in VR, we experience it within the headset in the form of visual acceleration. Because we aren’t physically accelerating, the vestibular sense and proprioception don’t provide a corresponding sense of motion. This mismatch can lead to discomfort, and so it is useful to provide features to minimize or eliminate this disparity.
As a reminder, acceleration refers to any change in the camera’s/head’s motion vector, and therefore includes any increase or decrease in velocity along yaw, pitch, roll, or x-, y-, or z-axis translations. Starting or stopping rotation or translation in any of these degrees of freedom is experienced as a form of acceleration.
It takes time for the mismatch between our vision and vestibular systems to trigger discomfort. If accelerations are brief and infrequent, side effects can be reduced. Quick turns and position warp are based on this strategy.
Sometimes referred to as stepped velocity or fixed velocity is about limiting virtual movement to a few specific speeds. When the velocity changes instantaneously between specific speeds, there is only a momentary visual indication of acceleration, which minimizes the amount of visual-vestibular mismatch that the user experiences.
Providing stopped, walking, and running speeds is generally sufficient, however, including a very slow speed for sneaking may be useful for some designs. The implementation is usually quite simple, where each speed is associated with a band within the range zero to one of the magnitude of the thumbstick input vector. When switching between speeds, be sure the inputs are well within the new speed band to avoid the chance of input noise causing an oscillation between two adjacent speeds. Alternatively, different speeds could be triggered by combining thumbstick input with a button press, such as holding down a button or clicking in the thumbstick while tilting it to sprint in the corresponding direction all to ensure a distinct separation between different velocities.
It’s possible to eliminate acceleration entirely by performing movement as a series of rapid teleports, using the same rules for thumbstick direction mapping that are traditionally used to control the direction of movement. With this design, as long as the thumbstick is pushed, changes in position will occur as a series of small teleports with a short time interval between them.
Stepped translations are the translational equivalent to snap turns in rotation, and carry the same caveats and considerations with regards to usability and comfort. It can be difficult to maintain precise control of movement if the teleports always move people a constant distance. More control will be provided if the teleport distance is based on how far the thumbstick has been pushed.
Timing is an important element of this technique. If the thumbstick is pushed all the way out, the movement can occur immediately. If the thumbstick is only pushed a moderate amount, the input logic will need to detect that the thumbstick has been stationary for a small duration before performing a shorter movement.
Like snap turns, stepped translations serve to disrupt your brain’s perception of motion. You should ensure that the user cannot make eight or more small teleports within one second. At that frequency and above, users will once again perceive motion, which can lead to vection and discomfort.
This technique can also be implemented as a simpler version of the Projected Avatar technique, where the avatar is moving continuously from the perspective of other players and NPCs while the user moves with a series of small teleports, effectively catching up with the projected avatar. Depending on how frequently the teleports occur, it may be useful to disable the third person view of the avatar for the controlling player as they navigate the small distance to the new location.
Many users report a particular sensitivity to motion and acceleration along specific axes, such as lateral movement, also known as strafing, and yaw rotation. Limiting the axes of movement driven by the thumbstick can prevent vection along these problematic dimensions. The most restrictive approach is to limit thumbstick input to forward and backward movement relative to the direction the user is facing, which requires people to physically rotate their head and possibly their body in order to move in another direction. If using this control scheme, be sure to consider the range of motion needed for your experience, which can create issues for accessibility and space requirements.
Limiting the axes of movement to multiples of 15, 30, 45, 90, or 180 degrees can provide the flexibility necessary to suit individual preferences while making motion more regular and predictable. It is important to keep these restrictions in mind when designing your environment and interactions. If limiting the axes of movement forces the user to frequently take suboptimal paths through the environment, make additional corrective movements, or otherwise experience more vection and acceleration than they would experience with more precise movement controls, you might end up negatively impacting the comfort and usability of your experience instead of improving them.
Because the camera usually maintains a fixed distance above the ground, uneven slopes can trigger vertical acceleration just by walking across them. A similar effect will occur just by leaning forward when the ground has a slope, steps, or ledge. It can be very uncomfortable to lean forward in these scenarios, because our head will physically move slightly closer to the ground, but the virtual camera will actually rise up because the ground is slightly higher in the locations below the headset.
To reduce the side effects for both walking and leaning, modify the camera logic to ensure the perspective remains at a constant elevation. This is recommended even as the ground undulates below the user as they traverse the terrain, until a limit has been reached and the elevation is updated to reflect the elevation at that moment. This leads to occasional vertical repositioning of the camera. The repositioning can be performed with a teleport, which eliminates the vection; however, it does introduce a small amount of visual discontinuity. An alternative is to quickly warp the camera to the new elevation, similar to how artificial crouching should behave.
When camera movement is due to physical locomotion, it can be useful to delay the artificial vertical movement of the camera until artificial locomotion is triggered, or until larger and separately tunable distance limits have been met. This approach will allow people to move in their playspace, lean over objects, and explore without triggering the vertical motion quite as often. Cyan, developers of Myst, have described this technique in their Dynamic Slope Quantization for VR Comfort blog.
It is useful to enable your audience to adjust settings that control how much movement, both artificial and physical, can occur, before the camera will be artificially moved to the correct elevation for the current position. This will allow people to disable the feature by setting these values to zero if they prefer, and/or to tune the maximum travel distances for each type of movement.
When your design requires the camera to collide with the environment, this can lead to confusing or disorienting experiences. For example, if a user attempts to physically move to a point inside a virtual wall, the collision will prevent the virtual camera from moving through the wall. The user then perceives that the wall is moving away from the camera as the user approaches it, possibly leading to confusion or discomfort. This can be particularly jarring if the collision is unexpected, which can easily happen in many irregular environments This effect can be somewhat reduced by changing the collision response from a hard collision, which is an instant reaction that prevents the camera from moving through objects, to a soft collision. A soft collision is a more gradual reaction that will still prevent the camera from passing through objects, but instead of instantly stopping when it is very close to the wall, it will slow the camera down over a short distance before it reaches the point where it cannot move any further. Although this does introduce a sensory mismatch that would not take place with a hard collision, the effect is less jarring than an instantaneous stop. As a result, the user can more easily learn to detect and predict the onset of the soft collisions and self-correct their movement to avoid them in the future. Ubisoft’s Space Junkies demonstrates this technique very well.
See below for the remaining sections of this guide outlining the many design techniques and best practices to help inspire and inform your next VR locomotion system.