What we mean by teleportation is that the user can move themselves to specific new locations via interacting with the environment to jump to a new location. The ideal movement in VR is to allow the user to move the same distance in real space as they do in VR. Using teleportation you can allow the user to reorient and move their active VR space without them having the disconnect of using the joystick or other control to move themselves through space. This is a common tool in VR with games allowing you to select floor surfaces and more to choose the teleportation target. In Alice you can do this using the mouse click event to select objects that you can program to teleport the user to a new location. The Alice mouse click on object maps to the VR handset point at and click behavior.

VR Sickness and Teleportation

There are a couple different things to consider when jumping the player through space:

1. Speed – The speed of movement can increase nausea. It has been shown that normal rates of movement may actually be the most disorienting with slow speeds and rapid speeds resulting in less discomfort.

2. Acceleration and deceleration – As much as possible keeping the user at a constant speed will help. It is also important to try to keep movement as smooth as possible.

3. Orientation – Changing the users orientation especially roll and pitch can be the most disorienting

A standard practice when jumping a user long distances and changing their orientation is to fade out their vision while you do the move to avoid the above issues all together.

Camera SetUp for VR

The default camera in Alice is set up to have a slight downward angle. When you first start your VR project or are translating an existing world to VR be sure to use the following to straighten out the Camera view to avoid the disorienting feeling of being slightly tipped forward.

1. Go to the Scene Editor
2. Select the Camera
3. Select One Shots
4. Select OrientToUpright

Setting up a Teleport

First select or create an object for the user to select as the trigger for the teleportation. This can be an obvious object like a door or you can create your own visual way to highlight locations such as a large bright disc on the ground.

1. In the scene editor create a camera marker at the location and with the orientation that you want for the user to be in at the end of the teleport and label accordingly
2. If needed add the object that you want the user to interact with to trigger the teleportation
3. Navigate to code editor Event Listener tab
4. Add a mouse click on object event
5. Select add details set of visuals and add the object you want the user to click on to initiate the teleport
6. Within the event add a moveAndOrientTo and set the camera marker you created as the object
7. Test

Be sure that the user can see the object that is to be selected from their starting location or the other locations you want them to be able to access it from. Since testing with the ability to move the headset to see full field of view on desktop is not possible you may want to consider putting an objectMoveFor on the Camera just for testing if access to VR is limited. Also remember that you will want to give the user some indication of objects that can be interacted with through some visual language such as flashing, color, or some other means.

You can view the attached TeleportNoFadeDemo to see the implementation of a flashing object and a disc. The first interaction is to select the computer bank in front of you. A blinking color has been added to bring the users attention to the location. The second interaction is to select the large yellow disc on the ground in front of the door.

Using a Fade Out and Fade In

To ease the disorientation when transporting a user a good mechanic is to fade the scene in and out. A good way to do this is to use the scene parameter Fog to blend out their view. Be aware that the fog color is the same as the atmosphere color so you will be filling their field of view with that color unless you change it.

1. Inside your click event add a setFog value 1 before the moveAndOrientTo
2. Add a setFog value 0 (or where it started) after the moveAndOrientTo

Use the setAtmosphere color in a do together with the setFog if you want to fade the users view to a different color. To see the difference this has on the experience compare the attached demos:

vrLocomotionNoFadeDemo.a3p
vrLocomotionWithFadeDemo.a3p

Being Aware of the VR Space

Remember that when programming the camera marker you are in fact moving the center point of the VR play space. If the user has moved inside their available space they will be in that offset position when they finish the teleport. We are working on a way for you to visualize this space in your scene editor to try to account for where the player can be after a teleport to avoid sending them through walls or inside an object.