home  previous   next contents

Shout3D™ 2.5 Specification


Relationship to VRML97

Shout3D 2.5 differs from VRML97 in a number of ways. This document classifies these differences into four groups:

  • Removals: A removed feature is a feature of VRML97 that is not part of Shout3D 2.5. When reading or converting VRML97 input, these nodes and fields are simply ignored.
  • Syntax Changes: These are features that behave exactly like VRML97 in a viewer, but are represented differently in the Field or Node reference. Such features can be read from VRML97 files and converted to their representation in Shout3D with no loss of data or functionality.
  • Additions: These are features that are not available in VRML97. Their addition greatly increases the power of Shout3D.
  • Outright Changes: These are the four features that are simply different.

It is important to note that VRML97 files translate quite nicely into Shout3D. The Shout3D production team authors all its content with standard VRML97 authoring tools and either reads it directly into Shout3D applets or runs that content through a file converter for a more compact representation.

Removals

Removals: Concepts

Certain high-level concepts and constructs have been removed from VRML97 in creating Shout3D. From their removal, a great number of the removed nodes and fields will follow. These removed constructs are:

  • EventIn, EventOut -- all fields are just plain fields and are treated the same.
  • Navigation - the core does not require any built-in navigation for the viewer
  • PROTOS and EXTERNPROTOS
  • Scripting
  • Default Texture Mapping - To texture map an object, texture coordinates must be supplied. Otherwise, textures will not be applied.

Removals: Lighting Model

Shout3D 2.5 has two different kinds of appearance with two different lighting models. 

The Appearance node uses a simplified version of the VRML97 lighting model.   It same as in Shout3D 1.0 as in Shout3D 2.5.  What remains are the interactions between DirectionalLights (or no lights) and the emissiveColor, diffuseColor, and color-per-vertex properties of Materials and Geometry. What has been removed are the effects of ambientColor, shininess, specularColor, fog, SpotLights, and PointLights. There is a related addition to the lighting model, in that the transparency and diffuseColor will now modulate all textures applied to an IndexedFaceSet.

The MultiAppearance node greatly expands the rendering model to include multi-texturing and specular highlights.  This new node only comes with Shout3D 2.5, not Shout3D 1.0.  It is a completely new type of appearance that works with any of Shout3D's geometries (excepting IndexedLineSet and PointSet).  See the nodes reference for more information about the MultiAppearance.

Removals: Nodes

The following nodes have been removed from VRML97 in creating Shout3D.  Note that there are fewer removed nodes in the current version than before.  Shout3D now contains six VRML geometries that were missing before (Box, Cone, Cylinder, Sphere, Extrusion, ElevationGrid) as well as WorldInfo.

AudioClip LOD PointLight Text
Collision MovieTexture ProximitySensor TextureTransform
CylinderSensor Normal Script VisibilitySensor
Fog NormalInterpolator Sound
FontStyle PixelTexture  SphereSensor  
Inline PlaneSensor SpotLight  

 

Removals: Fields

Of the nodes that remain, some have had fields removed, in order to pare them down to the functionality that is relevant to Shout3D. These fields may be added in future releases.

Generally speaking, all the set_ and _changed fields have been removed because the EventIn/EventOut concept has been removed. In all cases, except where noted that a field has been removed, these names have simply been mapped to a regular field (e.g., the interpolator's set_fraction is now fraction), or removed if redundant (e.g., Transform's set_translation is removed but translation remains).

In addition, the following fields have been removed:

  • Anchor, Group, Transform -- bboxCenter and bboxSize.
  • Appearance - textureTransform
    Textures may not be transformed by matrices, the (u,v) coordinates are always taken directly from the textureCoordinate field of the IndexedFaceSet..
  • Background - see Outright Changes: Background
  • Billboard - axisOfRotation, bboxCenter, bboxSize
  • DirectionalLight - ambientIntensity
  • IndexedFaceSet - convex, normal, normalIndex, normalPerVertex
    Normals are generated automatically, based on the creaseAngle. They may not be specified via fields.
  • Material - ambientIntensity, shininess, specularColor
    These removals are in keeping with the simplified light model.
  • NavigationInfo - avatarSize, speed, type
  • TimeSensor - enabled
  • TouchSensor - hitTexCoord
  • Viewpoint - jump, bindTime

Syntax Changes

For all of the following, no data need be lost. File readers can parse the information from VRML97 files and cast this information into the Shout3D syntax.

Syntax Changes: Field Types

The Field types have been changed. This specification has twelve field types, based on six kinds of storage (boolean, double, float, integer, Node, and String) and the ability to store either a single value or an array of values. All of the VRML97 field types map into one of these field types, so file readers need only copy the data from the VRML97 node into the appropriate field type, as given in the Node Reference. This new scheme may at first appear to lose strong typing information, because VRML97 fields such as SFVec3f and SFColor are both cast into the same type of field, FloatArrayField, in this specification. However, the new usage types in this specification (see Additions:Field Usage Types) provide a basis for much more powerful and extensible strong typing.

Additions

Additions: Lighting Model

The lighting model has two additions in the way textures are modulated. First, the transparency in a texture is modulated by the transparency field, if present, in the associated Material node. Second, the diffuse color in the lighting model is always modulated by the diffuseColor field, if present, in the associated Material node. In VRML97 this was only the case for luminance textures. In Shout3D, RGB textures are modulated as well. This means that color per vertex will have an effect on textures objects as well.

Additions: API

The entirety of the programming API is new. A full desciption may be found in the programming API document.

Additions: Field Usage Types

Field Usage Types are new, and allow for strong typing. Field Usage Types describe how each field of each node is to be used, and the Node Reference specifies what the correct usage is for each of its types. Hence, a FloatArrayField can be used to store a 'COLOR,' 'COLOR_ARRAY,' 'COORD3,' 'COORD3_ARRAY,' etc. The set of usage types is extensible, so that nodes can be constructed that use the twelve basic field types in new ways.

Additions: Fields

The following fields have been added to nodes in Shout3D.

  • Anchor - touchTime
    This field fills a void left by the VRML97 Anchor. With it, one can know exactly when an anchor was clicked. This allows entities watching the field (see FieldObservers in the API) to know when the viewpoint or file is about to change.
  • Anchor, Billboard, Group, TouchSensor, Transform - hidden
    This boolean field provides a simple way to 'turn off' a part of a scene.
  • IndexedLineSet - lineWidth
    This feature is crucial for effective use of lines as a graphical primitive.
  • Light, DirectionalLight - affectedGroups
    This new field greatly increases an author's control of which groups are to be affected by a light. The default behavior is exactly like VRML97.
  • PointSet - pointSize
    An indisposable feature for making points a truly usable type of geometry.
  • Switch - children, hidden
    The Switch node has been made a grouping node, so it now inherits fields from the class Group.  The children field is not under user control. Rather, it is kept up to date, reflecting the selected child given by the choice and whichChoice fields.
  • TimeSensor - elapsedSeconds, numLoops
    This field allows users to avoid calculations required to determine the number of seconds that have elapsed since the last loop began.
  • TouchSensor - children, hidden
    The TouchSensor node has been made a grouping node, and can now detect when the user points to either the children of the TouchSensor node's parent group, or to the children of the TouchSensor node itself.

Additions: Abstract Node Classes

The abstract Node classes are new. In order to support an object-oriented, extensible API, we have added five new abstract node classes from which other nodes are derived: Bindable, Geometry, Interpolator, Light, Texture. These classes also support the Field Usage types. For example, the Appearance node's texture field has a usage type of TEXTURE_NODE, and so may be set to any node, currently existing or yet to be implemented, that is derived from the abstract node class Texture.

Additions: New Nodes

Shout3D contains many extra and new nodes that are not part of the VRML97 specification.  These are added features of Shout3D, and do not impact the behavior of the VRML97 nodes.

Outright Changes

Outright Changes: Binding Model

The binding model has been simplified.This specification does not use the binding stack of VRML97. Rather, a simplified model is used (see 2.5.8, Bindable Nodes). The binding stack was removed because many users found it confusing.

Outright Changes: Background

The Background node has been changed entirely. Rather than a model of sky/ground color gradation or surrounding bubble of textures, the new Background node supplies a simple colored or textured backdrop that does not change with the point of view.

Outright Changes: Billboard

Billboard nodes are always aligned with the projection plane and the viewer Y-axis.Specifically, they always rotate to face parallel to the near clipping plane, as illustrated by the following example (source here):

By way of comparison, here is the same example rendered as VRML97, which aligns billboards to face the viewer:

Outright Changes: Texture Format

GIFs are JPGs are the supported formats. PNG is not supported.. This is in contrast to VRML97, which uses PNG as the required format.


Copyright© 1999-2001, Shout3D LLC.