home previous next contents # Shout3D™ 1.0 Specification |

# 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.