Conceptually speaking, every VRML world contains
a viewpoint from which the world is currently being viewed. Navigation
is the action taken by the user to change the position and/or orientation
of this viewpoint thereby changing the user's view. This allows the
user to move through a world or examine an object. The NavigationInfo
node (see "3.29 NavigationInfo")
specifies the characteristics of the desired navigation behaviour, but
the exact user interface is browser-dependent. The Viewpoint node (see
"3.53 Viewpoint") specifies
key locations and orientations in the world that the user may be moved
to via scripts or browser-specific user interfaces.
The browser may allow the user to modify the
location and orientation of the viewer in the virtual world using a
navigation paradigm. Many different navigation paradigms are possible,
depending on the nature of the virtual world and the task the user wishes
to perform. For instance, a walking paradigm would be appropriate in
an architectural walkthrough application, while a flying paradigm might
be better in an application exploring interstellar space. Examination
is another common use for VRML, where the world is considered to be
a single object which the user wishes to view from many angles and distances.
The NavigationInfo node has a type field
that specifies the browser the navigation paradigm for this world. The
actual user interface provided to accomplish this navigation is browser-dependent.
See "3.29 NavigationInfo"
for details.
The browser controls the location and orientation
of the viewer in the world, based on input from the user (using the
browser-provided navigation paradigm) and the motion of the currently
bound Viewpoint node (and its coordinate system). The VRML author may
place any number of viewpoints in the world at important places from
which the user might wish to view the world. Each viewpoint is described
by a Viewpoint node. Viewpoints exist
in their parent's coordinate system, and both the viewpoint and the
coordinate system may be changed to affect the view of the world presented
by the browser. Only one viewpoint may be bound at a time. A detailed
description of how the Viewpoint node operates may be found in "2.6.10 Bindable children nodes"
and "3.53 Viewpoint."
User navigation is independent of the location
and orientation of the currently bound Viewpoint node; navigation is
performed relative to the Viewpoint's location and does not affect the
values of a Viewpoint node. The location of the viewer may be determined
with a ProximitySensor node (see "3.38 ProximitySensor").
tip
Viewpoints are a powerful feature for improving
usability of your worlds. You can create guided tours by binding the
user to a viewpoint and then animating the viewpoint along a predefined
path (automatic navigation through the virtual world). Keep in mind
that many users will have difficulty navigating through 3D spaces; combining
viewports with the other interaction features in VRML creates "point-and-click"
worlds that are very easy to navigate.
A VRML file may contain Collision nodes (see
"3.8 Collision") and
NavigationInfo nodes that may influence the browser's navigation paradigm.
The browser is responsible for detecting collisions between the viewer
and the objects in the virtual world, and is also responsible for adjusting
the viewer's location when a collision occurs. Browsers shall not disable
collision detection except for the special cases listed below. Collision
nodes may be used to generate events when the viewer collides with objects,
and may be used to designate that certain objects should be treated
as transparent to collisions. Support for inter-object collision is
not specified. The NavigationInfo types of WALK, FLY, and NONE shall
strictly support collision detection. However, the NavigationInfo types
ANY and EXAMINE may temporarily disable collision detection during navigation,
but shall not disable collision detection during the normal execution
of the world. See "3.29 NavigationInfo"
for details on the various navigation types.
NavigationInfo nodes may be used to specify
certain parameters often used by browser navigation paradigms. The size
and shape of the viewer's avatar determines how close the avatar may
be to an object before a collision is considered to take place. These
parameters may also be used to implement terrain following by
keeping the avatar a certain distance above the ground. They may additionally
be used to determine how short an object must be for the viewer to automatically
step up onto it instead of colliding with it.