Viewpoint Manipulation

Positioning the camera is one of the most common tasks in traditional CAD tools. However in VR we can't move the camera because it is stuck to your head! So we actually move the scene instead. You shouldn't notice most of the time, but occasionally there are differences in behavior from tools you might be used to.

When you are looking at the 3D scene, there are three basic view manipulation controls you can do:

Orbit rotates the scene left/right and up/down (but does not "twist" it!)
Pan translates (slides) the scene left/right/up/down
Zoom brings the scene closer to your eye

With the mouse, these tools are usually on hotkey modifiers, and Simplex is no different. Currently we support Maya hotkeys - you hold down the alt key and then left mouse orbitsmiddle mouse pans, and right mouse zooms

With the gamepad, we don't have hotkeys, but we do have two joysticks. We use the shoulder buttons to toggle to the view controls. When you hold the left shoulder button, then the left stick orbits, and the right stick pans. When you hold the right shoulder button, then the left stick zooms and the right stick pans. So, you actually have more control when navigating the scene using the gamepad than you do with the mouse.

View Target Point

We mentioned above that Orbit rotates the scene, but rotates around what point? Always rotating around the origin doesn't make sense once you have panned around the model. Similarly Zoom toward what point? In 3D tools there is always a View Target point somewhere in 3D space.  This is sometimes called the pivot point. Often this point is not explicitly shown, but it moves around with the camera and you can tell where it is based on how the camera moves.

In Simplex we show the Target point whenever you are currently in a view manipulation model, for example when holding the alt key or the gamepad shoulder buttons. The Target is rendered as a small red sphere, seen below-left. This serves two purposes - it tells you where the Target is, and what mode you are in.

Note: a current bug in Simplex is that sometimes you may get stuck in the view control mode, particularly if you switch apps by alt-tabbing. In this case the red ball will not disappear. If that happens, try hitting alt on the keyboard several times, or tapping the shoulder buttons. If the red ball disappears, you should be fixed.

The View Target is fixed when you Orbit and Zoom, but is translated when you Pan. You can also explicitly position the View Target at a 3D location using the Center option in the popup radial menu. You bring this menu up by right-click or right-trigger on an object in the scene, or the ground plane. When you select Center, the Target will be positioned where the orange dot is located, and the scene will animated-pan so that the Target point lies at the center of your view.

 

Egocentric View Controls

The Orbit/Pan/Zoom model works well when you are outside an object, as if it were something you are holding in your hand. You rotate the object, not your head, to get a look at the other side. However, if you are inside a building, you don't look to the left by rotating the building - you rotate your head. 

"Outside" or Exocentric view controls are the standard in CAD tools. However the whole point of VR is to be able to get up close to things, like you are standing next to them. In this case you will want to switch to "Inside" or Egocentric controls. You can do this with the Viewing Control toggle buttons in the Cockpit, which you'll see if you glance down and to the right. The exo button is for when you are looking at an object from the outside, and the ego button is for when you are navigating through a scene.

The controls in ego mode are similar to what you would find in a first-person video game. So, you don't Orbit, you Fly or Walk. This means that up/down (on the mouse) moves you forward and backwards, and the left/right with turn left/right. Pan is similar, you will change your height with up/down and slide or strafe left/right. Finally in ego mode you don't really Zoom, so the Zoom control isn't strictly necessary. Currently it acts as a forward/back Walk but a left/right strafe.

The ego controls are also a little different from the exo controls because they are rate-controlled. This means that instead of "clawing" to specify movement, the movement direction and speed is determined by how far you move the cursor relative to the starting click point. In a small radius around the click point there is a "dead zone" where you will not move. As you move the mouse further from the click point (try this by slowly moving the mouse), you will begin to move at a slow speed and then ramp up to a maximum speed. 

We are using rate-controlled input for the first-person-style controls because we think these will help you control motion sickness. VR video games are carefully designed to avoid too much first-person movement, as this can easly make the player sick. However that doesn't make sense for a design tool, where sometimes you are just going to need to go where you need to go!

Note that you may still want to use exo if you are inside a scene, to tumble around a specific object. Just make sure you set the Target point first with the Center command, as described above. And if you get completely lost, you can always hit the Reset button and the view will go back to outside the object

 

Teleporting

There are two problems in VR with using the explicit view controls described above to move around the 3D scene. First, you'll find that in VR you will want to get closer to things than you do in a normal 3D tool, and all that back-and-forth can be tedious. Second, too much crazy view manipulation can make you nauseous, particularly when you are moving around inside virtual spaces.

A safer and faster alternative is to Teleport. When you teleport, you select a new location, the screen fades to black, and when it comes back you are in the new spot. This is well-known to mitigate motion sickness. However, in a video game the Teleport locations are usually placed by the game makers.  In a 3D design tool you need to be able to teleport anywhere! So, we have included multiple Teleport types. 

You access the Teleport options from the popup radial menu, either with right-click or right-trigger. There are a few options:

Teleport - this is the simplest option. We cast a ray to the cursor location (since you have to move the cursor to select from the menu, the ray is cast at the orange dot). When the view comes back you will be looking at this point from the same angle as when you started, set back a fixed distance (currently 1 unit). The Target point will be set to this hit location.

Teleport Level - same as Teleport except that the view is rotated so that the scene is parallel to the ground plane. So you'll be floating next to the Target point, looking at the side of the Target sphere.

Teleport Normal - This is an extension to Teleport Level that tries to be clever. If you use this Teleport with a vertical surface, like the side of a vertical column, you will be positioned such that you are set back along the normal from the hit point, and looking down that normal. So, basically it is a kind of "look directly at" option, vs the standard Teleport Level, which doesn't have this behavior. However in addition, if you use Teleport Normal on a near-horizontal plane (like a ground plane), instead if looking directly down at the ground, you will be placed standing on that plane, with your feet at the click point. So you can think of this option as both "Look There" and "Stand Here", depending on where you click. 

Teleport Here - this option only appears when you bring up the menu over a Pivot object. Your eye will be placed exactly at the Pivot location. As a result, Pivots can be used to "save" viewpoints, for example if you want to set up a scene where you can quickly jump to specific locations.