Relationship to
VRML97
This specification 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 1.0. 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
The lighting model
has been greatly simplified
from VRML97. 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.
Removals: Nodes
The following nodes
have been removed from VRML97 in creating Shout3D:
AudioClip |
Fog |
PlaneSensor |
Text |
Box |
FontStyle |
PointLight |
TextureTransform |
Collision |
Inline |
ProximitySensor |
VisibilitySensor |
Cone |
LOD |
Script |
WorldInfo |
Cylinder |
MovieTexture |
Sound |
|
CylinderSensor |
Normal |
Sphere |
|
ElevationGrid |
NormalInterpolator |
SphereSensor |
|
Extrusion |
PixelTexture |
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, visibilityLimit
- 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.
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 the
required format, PNG is optional. This is in contrast to
VRML97, which uses PNG as the required format.

Copyright© 1999-2000, Shout Interactive, Inc.
|