Recenter the HMD Before Starting Your ApplicationOctober 10, 2014
How do you figure out what a user’s resting head position is? It’s important to determine this, because excess head movements can make a user sick faster, and forcing a user to position their head or their body in a funny way will also lead to sickness.
You may want to assume that the user’s head is directly in front of the positional tracker, 5 feet away as the Oculus guides recommend, but this is not a great approximation. Imagine a user sitting in a narrow chair that’s slightly off center of the positional tracker. Suddenly they’re off center in your car, or cockpit, and they can’t “see” properly around the cabin.
The height of the user might change (a short person hands the Rift to a tall person) and now suddenly they’re higher or shorter than they should be. For a game like Euro Truck Simulator where the dashboard in front and below the user can obscure the view of the road ahead, this is a big deal.
In this case, the best practice is to provide a recentering screen when the user starts your application. The goal of this scene should be to allow the user to get comfortable and provide their resting head position and orientation to your application.
This entails more work for the application developer. You have to compute distances and rotations relative to the user’s default head position, rather than (0, 0, 0). However, the alternative is a slightly off-center experience, so you should be prepared to perform the additional transformations in your code. In VR, always assume that taking shortcuts is going to make people sick.
The recenter dialog is placed in the same direction as the positional tracker. In the consumer version, positional tracking should work in 360 degrees, so users may place the tracker behind them or to the side. This may make it awkward to find the initial text. A better practice would be to float the text in front of the user as they turn, so it’s always on the screen, or provide the same text in multiple locations so the user can always read it no matter what their orientation is.
The user is asked to press the “r” key to continue. Many users are hunt-and-peck typers, or may be playing on a friend’s keyboard with a different layout or orientation, which means that they may not be able to find a specific key while wearing the headset. Taking off the headset to press the key defeats the purpose of recentering the headset. A better practice would have the user press any key to continue, or the space bar key, which tends to be the easiest for people to find due to its shape and position at the bottom of the keyboard.
Finally, once the “r” key is selected, the view is immediately shifted to the new orientation.
Sudden shifts in the camera angle are warned about in the Best Practices Guide and were a frequent cause of sickness in Navy flight simulators. A better practice would be to fade out the view before bringing it up again in the correct orientation.
Titans of Space does a few things differently. First, the recenter dialog is visible on screen whichever way you look. (In general this is a bad idea, but at the beginning when you don’t know the user’s resting head position, it is a good practice). The dialog is also transparent, which is a good practice to avoid sickness.
Titans of Space chooses a recognizable key, spacebar. which is good because it’s more likely that users will be able to find it. Allowing the user to press any key would probably be best, but the spacebar is probably fine.
Finally the game avoids putting any UI on the screen until the user recenters the dialog, which avoids the view-shifting problem in Lava Inc.
Do the following in your game:
Allow users to recenter the display before beginning.
The recenter dialog should move with the user’s head. The dialog box should be transparent to avoid sickness.
Allow users to press any key to recenter the display.
If a UI is visible, fade the screen to black before fading in in the correct orientation.