Post

NavigationInfo

Overview

NavigationInfo describes the user’s viewing model, user navigation-interaction modalities, and also dimensional characteristics of the user’s (typically invisible) avatar.

The NavigationInfo node belongs to the Navigation component and requires at least level 1, its default container field is children. It is available since VRML 2.0 and from X3D version 3.0 or higher.

Hierarchy

1
2
3
4
+ X3DNode
  + X3DChildNode
    + X3DBindableNode
      + NavigationInfo

Fields

SFNode [in, out] metadata NULL [X3DMetadataObject]

Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node.

Hint

SFBool [in] set_bind

Receiving event set_bind=true activates and binds this node at the top of the binding stack. Receiving event set_bind=false deactivates and unbinds this node from the top of the binding stack. Thus setting set_bind to true/false will enable/disable the effect of this node.

Hint

  • Paired node operations can be established by connecting set_bind and isBound fields of corresponding bindable nodes.

Warning

  • It is an error to define this transient inputOnly field in an X3D file, instead only use it a destination for ROUTE events.

MFString [in, out] type [ “EXAMINE”, “ANY” ] [“EXAMINE”, “WALK”, “FLY”, “PLANE_create3000.github.io”, “LOOKAT”, “EXPLORE”, “ANY”, “NONE”]

Enter one or more quoted SFString values: “EXAMINE” “WALK” “FLY” “LOOKAT” “EXPLORE” “ANY” “NONE”.

Hints

  • For inspection of simple objects, usability often improves with type=”EXAMINE” “ANY”.
  • Types WALK and FLY force strict camera-to-object collision detection.
  • See Collision node for further details on camera-to-object collision detection.
  • MFString arrays can have multiple values, so separate each individual string by quote marks “https://www.web3d.org” “https://www.web3d.org/about” “etc.” ] Interchange profile hint: this field may be ignored, applying the default value regardless.

MFFloat [in, out] avatarSize [ 0.25, 1.6, 0.75 ] [0,∞)

avatarSize triplet values define three separate parameters: (a) collisionDistance between user and geometry, i.e. near clipping plane of view frustrum, default 0.25m, (b) viewer height above terrain, default 1.6m, and (c) tallest height viewer can WALK over, default 0.75m.

Hints

  • X3D specification recommends that browsers set near clipping plane to one-half of avatarSize.CollisionDistance value.
  • Aliasing and Clipping Interchange profile hint: this field may be ignored, applying the default value regardless.
  • Transformation hierarchy of currently bound Viewpoint node scales avatarSize, but translations and rotations have no effect.
  • Content must be visible to be collidable and to be pickable.

Warnings

  • Important design thumbrule is to keep (visibilityLimit / avatarSize.CollisionDistance) < 10,000 to avoid aliasing artifacts (i.e. polygon “tearing”).
  • Data type is MFFloat rather than SFVec3f, be sure that three values are provided in the array since validation tools are typically unable to detect erroneous data prior to run time.

SFFloat [in, out] speed 1 [0,∞)

Default rate at which viewer travels through scene, meters/second.

Warning

  • Default 1 m/s usually seems slow for ordinary navigation. Interchange profile hint: this field may be ignored, applying the default value regardless.

SFBool [in, out] headlight TRUE

Enable/disable directional light that always points in the direction the user is looking.

SFFloat [in, out] visibilityLimit 0 [0,∞)

Geometry beyond the visibilityLimit may not be rendered (far clipping plane of the view frustrum).

Hints

  • visibilityLimit=0.0 indicates an infinite visibility limit (no far clipping plane).
  • Set visibilityLimit to appropriate positive value in meters to define far culling plane of view frustum.
  • X3D specification recommends that browsers set near clipping plane to one-half of avatarSize.CollisionDistance value.
  • Aliasing and Clipping Interchange profile hint: this field may be ignored, applying the default value regardless.

Warning

  • Important design thumbrule is to keep (visibilityLimit / avatarSize.CollisionDistance) < 10,000 to avoid aliasing artifacts (i.e. polygon “tearing”).

MFString [in, out] transitionType “LINEAR” [“TELEPORT”|”LINEAR”|”ANIMATE”]

Camera transition between viewpoints. Enter one or more quoted SFString values: “ANIMATE” “TELEPORT” “LINEAR”.

Hint

  • “ANIMATE” behavior is browser-specific, “TELEPORT” is immediate, and “LINEAR” may proceed directly through intervening objects.

SFTime [in, out] transitionTime 1 [0,∞)

transitionTime defines the expected duration of viewpoint transition in seconds.

Hint

  • If transitionType is “ANIMATE”, transitionTime provides browser-dependent animation parameters. Interchange profile hint: this field may be ignored, applying the default value regardless.

SFBool [out] transitionComplete

Event signaling viewpoint transition complete. Interchange profile hint: this field may be ignored.

Warning

  • It is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.

SFBool [out] isBound

Output event true gets sent when node becomes bound and activated, otherwise output event false gets sent when node becomes unbound and deactivated.

Hint

  • Paired node operations can be established by connecting set_bind and isBound fields of corresponding bindable nodes.

Warning

  • It is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.

SFTime [out] bindTime

Event sent reporting timestamp when node becomes active/inactive.

Warning

  • It is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.

Advice

Hints

  • For inspection of simple objects, usability often improves with type=”EXAMINE” “ANY”
  • Background, Fog, GeoViewpoint, NavigationInfo, OrthoViewpoint, TextureBackground and Viewpoint are bindable nodes, meaning that no more than one of each node type can be active at a given time.
  • NavigationInfo types ‘“WALK” “FLY”’ support camera-to-object collision detection.
  • Regardless of viewpoint jump value at bind time, the relative viewing transformation between user’s view and defined position/orientation is stored for later use when un-jumping (returning to the viewpoint when subsequent viewpoint is unbound).
  • Customizable design pattern for dedicated Viewpoint/NavigationInfo pair: <Viewpoint DEF=’SpecialView’/> <NavigationInfo DEF=’SpecialNav’/> <ROUTE fromNode=’SpecialView’ fromField=’isBound’ toNode=’SpecialNav’ toField=’set_bind’/>
  • X3D Scene Authoring Hints, Viewpoints

Warning

Example

View Source in Playground

See Also

This post is licensed under CC BY 4.0 by the author.