X3D navigation and viewing

The educational technology and digital learning wiki
Jump to navigation Jump to search

Draft

This article or section is currently under construction

In principle, someone is working on it and there should be a better version in a not so distant future.
If you want to modify this page, please discuss it with the person working on it (see the "history")

Introduction

Since navigation in 3D worlds is difficult and since 3D worlds can be used for different purposes, X3D provides some built-in functionalities to specify default navigation types and so-called viewpoints that are named fixed positions where users can jump into.

Both Viewpoint and NavigationInfo are so-called bindable nodes, i.e. only one can be active at a given moment.

In addition, so-called Billboards may be used to create so-called head-up displays (HUDs) or at least information panel that always will be oriented toward the user.

Finally, navigation, can be eased by design, both architectural and by using interactive artifacts.

Navigation information

The NavigationInfo node indicates how a browser might best support user navigation in the scene. Multiple NavigationInfo nodes may exist in scene, but only one can be active (bound) at a given point. E.g. one can bind different navigation methods to viewpoints by using some more advanced X3D features.

According to the ISO/IEC 19775-1:2008 specification, “The NavigationInfo node contains information describing the physical characteristics of the viewer's avatar and viewing model”

The NaviationInfo has a rather long list of attributes of which we only present a few for now.

type
Defines the Navigation type

There are several navigation types:

  • "EXAMINE" best for rotating solitary objects
  • "FLY" allows zooming in, out and around
  • "WALK" also allows exploration, but on the ground
  • "LOOKAT" use pointer to select geometry of interest
  • "ANY" lets user select any mode
  • "NONE" gives user zero control of navigation

In the type field we can define a list of multiple strings from the above combinations. The default is '"EXAMINE" "ANY"' which gives users plenty of flexibility. I.e. the user first will be able to rotate the object and then can select the navigation mode he/she likes.

avatarSize = 'fatness eye_height climb_height'
More formally speaking: (a) collision distance between user and geometry (near culling plane of the view frustrum) (b) viewer height above terrain (c) tallest height viewer can WALK over.
default is "0.25 1.6 0.75"

It can important to fix the avatar size depending on the world the user must navigate. Since the node is bindable as we mentionned, this also can be changed, i.e. it is possible to let a user enter a mouse hole at some point.

transitionType
determines type of path followed when transitioning between viewpoints
It can be one of the following: "ANIMATE": the browser chooses a smoothing algorithm, i.e a curved path; "LINEAR": will move the user in a straight interpolation of position, orientation. "TELEPORT" will immediately reposition to the destination.
speed = N
meters/second
default is 1m/s which can be slow for larger scenes
headlight = true|false
default = true
If you turn this off, then you must define other lights or the world will be black...

Example code fragment for a cat

 <NavigationInfo DEF='CatStyle' type='"WALK" "ANY"' transitionType='"ANIMATE"' transitionTime='1.0' speed="3", avatarSize = 0.1 0.1 1/>

View Points

According to Don Brutzman “It is helpful to think of X3D scenes as fixed at different locations in 3D space”. Viewpoints are like cameras that are prepositioned in locations (and directions) of interest.

Once they jump to a View Point (or a jumped to by a script), users can move their current camera viewpoint further and change direction they are looking at. This process is called navigation.

Making navigation easy for users is important. Therefore, authors should provide viewpoints of interest within scenes. Viewpoints are always available through a menu in the client. However, geometric objects can act as sign/teleportation posts, i.e. transport a user into another view. By using Anchors one also can move a user to another world or content type.

The default viewpoint position is (0 0 10) i.e. 10 meters away from the object on the Z-axis, looking backwards toward the origin.

The following attributes can/should be defined:

description
provides a human readable description
position
defines the position of the current view (Camera)
centerOfRotation
defines the user's current rotation center if the navigator is in EXAMINE (rotation) mode
fieldOfView
defines the angle of view. The default is 45 degrees = pi/4 radians = 0.785. I.e. this is a narrow view that does not include peripheral vision. I suggest making this a bit larger.

Examples from the KelpForestMain.x3d entry file of the "kelp forrest".

 <Viewpoint DEF='DefaultPositionLeft7Degrees' description='7 degree towards left'
            orientation='0 1 0 0.1222' fieldOfView='0.7854'/> 
 <Viewpoint description='Sardine Ride' fieldOfView='1.8' 
            position='0.0 1.0 -0.5'/>

Billboards

(to be written)

Credits and Licence/Copyright modification