Navigation

Navigation modes

The manner in which a user is permitted to move around and interact with a virtual environment is an important design decision with regard to usablity.

VRLM97 supports four navigation modes:

  • WALK - user follows terrain under the effect of gravity
  • FLY - user moves freely in the virtual environment without following the terrain and without any gravity effect
  • EXAMINE - the world is treated like an object that can be rotated
  • NONE - the user cannot move at all using a built-in method, but may be provided with navigation controls that move the user using mechanisms (e.g. camera animation) defined in the virtual world (as opposed to built into the viewer software).

The default navigation mode for VRML97 is WALK mode.

The most effective mode for a particular environment depends on the nature of the environment and the tasks that the user has to perform in the virtual environments.

In general, restricting the user's movement to less than three dimensions reduces cognitive load and makes navigation easier. In models of human spaces such as buildings, then WALK mode is usually the most intuitive, but in large open spaces, FLY mode can be more effective, enabling the user to move quickly between destinations and achieve greater spatial orientation. Using FLY mode unnecessarily can result in the user spending more time navigating than absorbing information in the virtual environment.

EXAMINE mode is useful for viewing virtual products, or for viewing an environment from a god-like distance, which the NONE mode is useful if you want to completely control the users's navigation. NONE mode is common for things like 3D movies, where the user is not permited to control the camera, for example.

NavigationInfo

The VRML97 node that is used to define the user's avatar and how it can navigation is the NavigationInfo. In common with Viewpoint (more on those soon) and Background nodes (typically used to define sky and ground), it is possible to have several NavigationInfo nodes defined in a virtual world, but only one of them can be 'bound' (is active) at any time.

NavigationInfo syntax:

NavigationInfo {
  type            "WALK"                #exposedFiled MFString
  speed           1.0                   #exposedFiled SFFloat
  avatarSize      [ 0.25, 1.6, 0.75]    #exposedFiled MFFloat
  headlight       TRUE                  #exposedFiled SFBool
  visibilityLimit 0.0                   #exposedFiled SFFloat
  set_bind                              #eventIn      SFBool
  isBound                               #eventOut     SFBool
}

Note that the type is defined as an MFString. This means that you can supply an array of navigation modes, which are used as hints to the VRML viewer about which modes you want the user to have access to from a menu.

The avatarSize defines the width (radius), height (viewing height), and maximum step height that the avatar can walk over.

The speed determines how fast the user moves around the virtual environment

The headlight (a directional light fixed to the avatar's head) is TRUE or FALSE. If you have defined lights in your virtual world then you will usually want to turn the headlight off. The default value is TRUE so that a model with no lights will be viewable. Most VRML viewers enable the user to override this value and toggle the headlight on/off from a menu.

The visibilityLimit specifies the distance to the far clipping plane. Shapes that are further from the avatar than this distance will not be rendered. The default value of 0.0 specifies an infinite distance limit. See the section on Cameras in the Rendering module for a brief introduction to this technique.

The set_bind eventIn and isBound eventOut field are used to bind the NavigationInfo and to receive an event when it's bind status changes.

VRML Examples:

Binding NavigationInfo nodes

The VRML browser manages a stack of NavigationInfo nodes. The node at the top of the stack is bound (active). If it is unbound, then the next node in the stack takes it's place at the top of the stack, while if another NavigationInfo node is bound then it is move to the top of the stack. If all nodes are unbound (removed from the stack) then the VRML browser uses default NavigigationInfo node values.

This ability is useful if you want to switch between navigation modes, for example. In your virtual environment, you might want the user to be able to walk or fly most of the time, but have full control of the user (e.g. set navigation to NONE and move the avatar using camera animation) at other times. This can be achieved using a Script that binds the required NavigationInfo mode at an appropriate time.

Avatar size

Defining an appropriate avatarSize is vital if the scale of the virtual world is different to 1:1 in metres. The width is worth checking if your avatar is unable to pass through doors, and the step height is important if you want users to be able to walk over objects (e.g. walk up stairs), but can give unwanted results if it is too high (e.g. you would not usually want the avatar to be able to walk over high walls or over tables and chairs).

Note that the avatar size, speed and visibility limits are relative to the coordinate system of the current Viewpoint, so if that coordinate system is scaled then the size, speed and visibility limits of the avatar will be affected.

Tips

Bear in mind that most users of 3D virtual environments navigate using a 2D mouse and have a restricted field of view. Navigation tends to be clumsy. Users oversteer and then overcompensate. They regularly walk into walls and furniture when navigating. You can therefore make navigation easier for the user by avoiding sharp corners, narrow doors and corridors, and low pieces of furniture that are not seen when the user hits them.




Michael Louka, October 10, 2001