Virtual Reality Modeling Language
Document Change Log
Version 2.0, ISO/IEC WD 14772
August 4, 1996
- Released VRML 2.0 Specification.
- Many minor fixes (spelling, links, grammar, etc.)
- Changed CylinderSensor's offset
type from SFRotation --> SFFloat.
- Changed default Viewpoint
position to 0 0 10 - this was an agreed upon change from
a while ago that I forgot to integrate. Helps novices
with world building.
- Moved "Concepts - Grouping and Children
Nodes" from 4.9.3 to 4.3.1.
- Updated Java Reference from Sony.
- Changed Fog's default
visibilityRange from 1000 to 0 (off by default!).
- Clarifed Extrusion node - either 1 or N scale
and orientation values are required. If 1, then
apply to all spine pts - if N then one for each spine pt.
This changed the scale defaults BACK
to the original 1 1 (rather than the [1 1, 1 1]
change made after Draft 3).
- Added PLAIN style to FontStyle
- Many, many small clarifications.
- Added new Script functions
to "Concepts - Scripting": loadURL(...)
- Changed FontStyle justify
field from SFString to MFString as per the Puk-Marrin-Jan
- New section in Concepts "4.9.7 Time Dependent
Nodes" describing shared info on TimeSensor,
MovieTexture, and AudioClip. Several
important time-based behavior issues were clarified.
- TimeSensor, MovieTexture, and AudioClip
have been re-written and clarified. Some important
clarifications have been made.
- TimeSensor ignores stopTime if stopTime
<= startTime (this used to be a strict inequality)
This change provides consistency with AudioClip
and MovieTexture and enables a "restart"
of time dependent nodes via events at a single point in
- Assorted small fixes.
- Clarified Viewpoint binding and jump behavior.
- Added Box/Cone/Cylinder figures.
- Many clarifications and small fixes.
- Clarified "Concepts - Sensors" section (added
- concepts: MIME types model/vrml and x-world/x-vrml.
- Many small corrections and clarifications.
- Clarified PROTOs; especially the IS rules.
- Clarified Background and AudioClip (thanks
to Daniel Woods and Chris Fouts).
- TimeSensor clarifications (thans to Dan Woods and
Chris Fouts). Especially w.r.t. fraction_changed outputting
1.0 at end of cycle.
- Changed AudioClip's duration_changed
eventOut type changed from SFFloat to SFTime. This was a
- Updated latest java.html from Sony.
- Clarified PROTO:
- first node is the type of the proto (not first
node with an IS)
- DEF's within a PROTO are not exported
- Changed Inline to support
generic VRML file syntax (not restricted to child nodes).
This was done to be symmetric/consistent with VRML files
and prototype rules.
- Many typos and grammar fixes.
- Changed Exrusion scale
scale [ 1 1, 1 1 ].
- Clarified SpotLight text and added figure.
- Clarified the Binding Node behavior in concepts.html.
Bind means top-of-stack, etc.
- Clarified that instanced binding nodes have undefined
- Changed Viewpoint bindTime_changed
- Publish official Draft #3.
- Fixed lots of links.
- Lots of minor error correctsions and clarifications.
- Released unofficial draft of Draft #3.
- Combined all examples into the spec/part1/examples.html
- Changed Switch's whichChild to whichChoice
to be consistent with choice field naming.
- Added "+" and "-" to illegal first
characters for names.
- Clarified PlaneSensor to default to the local XY
plane (the text had refs to both XY and XZ).
- Fixed lots of typos and minor errors.
- Added links/ref from nodesRef.html to concepts.html on
Grouping nodes (addChildren et al fields) and
Bounding boxes (bbox* fields), and removed
- Changed *Interpolator's value exposedField
to keyValue. This avoid the confusion that the value_changed
eventOut is tied directly to the value
- Added Gavin Bell's execution model section to
concepts.html. This reordered the section and impacted
Scripting and Time sections.
- Added/updated missing/old sections (java, conformance,
- Clarified that DEF, USE, PROTO, EXTERNPROTO, TRUE, FALSE,
NULL, eventIn, eventOut, field, exposedField, IS, and TO
are illegal names (concepts.html).
- Sony: Java.html: Remove base node class which implements
7/8/96 (Sony) (to Java Reference):
- Add base node classes which implement Node.
- Numerous style and structure changes as per
- Changed SFImage (and thus PixelTexture) to use
RGBA (A = alpha), rather than RGBT (T=transparency). This
change was motivated by the fact that most image formats
and rendering libraries specify in terms of alpha or
opacity, not transparency.
- Created new sections as per ISO (empty for now).
- Added section numbers to Concepts section.
- Moved long examples out of Concepts into examples.html.
7/3/96 (rc): (note: many of
these changes were part of cm's pre-nuptial spree, the rest were
undo's of cm's changes...rc)
- Viewpoint description field was restored to
non-exposed as per Draft 2b. Since this field is a hint
to the browser, it may not have any effect and thus
should not be encouraged to be changed.
- TouchSensor hit* eventOuts where changed to
be hit*_changed as per naming convention.
- Shape appearance and geometry fields
- PointLight and SpotLight default radius
changed to 100 meters (from 1m).
- NavigationInfo's avatarSize field defaults
were changed to a more typical avatar size (from a radius
of 1 meter to an avatar with a radius of 0.25m, eye
height of 1.6m, and maximum step height of 0.75m). Also,
the bind_changed event out was changed to isBound
as per the field naming exceptions.
- isActive eventOut was added to MovieTexture
to be consistent with the AudioClip node.
- Added set_*index eventIns to IndexedFaceSet
and IndexedLineSet. This enables the geometry to
be changed from a script.
- FontStyle fields were restored to not
exposed to keep the implementation easier and since
multiple FontStyles can give most of the effect needed.
- Fog was changed as follows: the size field
was removed, Fog is now a bindable node (thus only
one is active at a time and no need for size), fogType
was added for more fog effects, and set_bind and isBound
events were added to allow binding. This change was made
mostly to make the implementation easier (multiple Fog
nodes with limits was extremely difficult to implement).
Default visibilityRange changed from 1 to 1000.
The two values of fogType are: LINEAR and EXPONENTIAL
(originally the second type was named "FOG" and
thus not very clear). ; )
- CylinderSensor, PlaneSensor, and SphereSensor
had offset and autoOffset exposed fields
added - this fixes a major problem with these sensors.
See concepts.html#DragSensors for for a summary and see
nodesRef.html for specifics per node.
- Background's bind_changed changed to isBound
as per style exception in Concepts.
- Clarified field naming exceptions in Concepts (see
- All events with the name *Time_changed that
represent actual timestamp had the _changed suffix
removed, as per the style exception defined in Draft 2.
This was done for readability and comprehension.
- All bbox_size fields defaults changed from (0,0,0)
to (-1,-1,-1). Where (-1,-1,-1) means unspecified by the
user (and thus up to the browser to compute), and (0,0,0)
defines an infinitely small, (i.e. point), bbox. Added
section to Key Concepts on bboxes
- Removed "_" from add_children and
remove_children fields of group nodes.
- duration eventOut on AudioClip was changed
- Decided not to pluralize the MF fields - made all fields
singular (w/ exception of children).
- Updated to Working Draft #3 titles and date. Most of
these are described in the 7/3 log.
7/5/96 (Sony) (to Java Reference):
- The return value of createVrmlFromURL() changes from Node
- The return value of createVrmlFromString() changes from
Node to Node.
- Add 'createVrmlFromURL' and 'addRoute' example(thanks to
Justin Couch (firstname.lastname@example.org))
7/3/96 (Sony) (to Java Reference):
- Change from 'interface Node' to 'class Node'.
- Inline script part is deleted.(thanks to Mik
7/1/96 (Sony) (to Java Reference):
- Add 'File extension' and 'MIME type' section.
- Add 'Exception' classes example(thanks to Gad
6/27/96 (Sony) (to Java Reference):
- The return value's type of Node's getValue()
method changed from 'ConstField' to 'Field'.
- Add 'shutdown()' method to 'Script' class.
- Add 'getWorldTitle()' and 'setWorldTitle()'
methods to 'Browser' class.
- Add the description on how to resolve user-defined
classes(thanks to Mik Clarke (RAZ89@DIAL.PIPEX.COM)).
- Lots of undocumented changes. NOTE: I have attempted
to document then in later log messages above.
- Updated External API to reflect discussions.
- Offer HTML, compressed HTML and compressed Postscript
versions of spec.
- Added first draft of External API and externalBindings
- Added Script voting page
- Released Draft #2b.
- Reinstated the Java Reference section (added link
to front page).
- Moved the VRMLScript Reference section to an equal
level to the Java Reference.
- Removed any statements REQUIRING a scripting language
(until further notice).
- Added link to the External API section (TBD).
- Renamed ElevationGrid fields:
verticesPerColumn/Row to x/yDimension, renamed
gridSize to x/ySpacing - due to many
requests and inquiries.
- Various document fixes and final cleanup, spell-check,
- scriptType was removed from the Script node
- use the data: or vrmlscript: syntax.
- Added bboxCenter, bboxSize, add_children and
remove_children eventIns to Anchor, Billboard, and
- Background's sky/groundRange field renamed
to sky/groundAngle for clarity.
- Daniel Woods re-wrote the Interpolators sections
in concepts.html and nodesRef.html (all
Interpolators) - mostly clarifications and
- Background URL fields changed from pos/neg/xyz to
backUrl, bottonUrl, frontUrl, leftUrl, rightUrl,
and topUrl to remain consistent with keeping url
in all URL field names.
- Browser camera is child of the current Viewpoint
(at all times). Current NavigationInfo is
automatically parented to current Viewpoint too.
- Added jump exposedField to Viewpoint node -
if TRUE, then when binding to Viewpoint, browser
must move current view to this Viewpoint.
- Binding rules for Background, NavigationInfo,
and Viewpoint (see concepts) were clarified -
multiple set_bind of TRUE simply move the node to
top of stack (not added twice), while set_bind
FALSE of an unbound node have no effect.
- For nested hierarchies of ProxitySensors or VisibilitySensors,
all sensors output. If instanced, the user the union of
the boxes to test against.
- Various clarifications and consistency improvements to TouchSensor,
CylinderSensor, PlaneSensor, and SphereSensor.
- Merged DiskSensor into CylinderSensor - one
sensor can do both.
- For nested hierarchies of TouchSensor/CylinderSensor/PlaneSensor/SphereSensor,
the lowest node outputs. If siblings, then each one
outputs. If instanced, then check each instance every
- For nested hierarchies of Collisions, the nearest
collision and lowest node outputs. If instanced, then
check each instance every test.
- Changed all eventIns and eventOuts to use the recommended
naming syntax: set_foo and foo_changed (exceptions for
Bool and Time eventOuts - use isFoo for Bool and fooTime
- Spec does not comment on whether Examine view mode (or
any mode for that matter) performs collision detection -
this left up to the browsers.
- ProximitySensors do send pos/orient outputs
when viewer exits.
- LineSet and PointSet nodes do not perform
collisions (since they have no area).
- Clarified sensors edge conditions - browser needs to
- Significant changes to TimeSensor - defaults have
changed and evaluation has been clarified and changed.
- Changed bind and isBound to set_bind
and bind_changed in Background, NavigationInfo,
and Viewpoint nodes to be consistent with naming
- Clarified TouchSensor to output hit* events
when pointer moves regardless if isActive is TRUE -- this
enables drag-n-drop actions.
- Moved file syntax defs to top of node sections in Node
- NavigationInfo - recommend that near plane = 1/4
- Re-wrote VisibilitySensor section - clarifications
- Changed VisibilitySensor's bboxCenter and
bboxSize exposedFields to center and size
in order to clarify that these boxes are not
necessarily bounding boxes and to make more consistent
with ProximitySensor's box specs.
- Added the missing isActive field to PlaneSensor.
- Replaced TimeSensor's discrete field with cycleTime
eventOut - much simpler.
- Re-wrote TimeSensor and AudioClip for
- Removed VisibilitySensor's isActive field
and added the field enabled.
- Spell check on NodeRef.html.
- Moved sections at the top of Node Reference (e.g.
Lights and Lighting) to Key Concepts.
- A variety of minor style changes and clarifications to Node
Reference and Key Concepts.
- Improved TimeSensor section
- Miscellaneous clarifications
- Clarified ideal spatial Sound implementation
- ProximitySensor bbox size of (0 0 0) no longer
uses the parent's bbox - it disables the sensor.
- Changed all url fields to be exposedFields (Anchor,
AudioClip, Inline, *Texture, Script)
- Removed numPoints from PointSet.
- Changed comma to be a whitespace character
- Added parameters field to Anchor
- Changed Anchor fields to be exposed
- Fixed lots of links and caught some instances of old node
- Fixed error in Anchor example caught by mott
- Got rid of duplicate FontStyle description caught
- Got rid of image field in ImageTexture node
- Fixed error in NavigationInfo of misnamed and
duplicated avatarSize field
- Changed ClickSensor to TouchSensor (as per
- Major update/rewrite Text and FontStyle
nodes and description (thanx to Jan H.).
- Redesigned texture nodes: renamed Texture2 to ImageTexture,
created MovieTexture, and created PixelTexture
(no URL, just pixels)
- Changed Fog's maximumVisibility to visibilityRange
- Changed BoxProximitySensor to ProximitySensor
(since there's only one now)
- Removed hit* fields and enabled field from PlaneSensor
- Changed all URL fields (e.g. filename) to `url' - let's
face it these are URLs, not files (e.g. data:...").
- Removed WWW prefix from all nodes . Too many nodes
now have URLs in them - prefer to keep the names simple
- Made the following changes to simplify: Coordinate3
-> Coordinate, Texture2Transform -> TextureTransform,
TextureCoordinate2 -> TextureCoordinate.
- Changed Cube to Box ( to be more
geometrically correct), and merged fields into a single
size Vec3f. (Note that Sphere is a sphere since it is
defined by a radius, not 3 radii.)
- Minor Fog re-write and field name change
- Added bind and isBound fields to NavInfo, Viewpoint,
Background, and wrote the section Bindable Leaf
- Added clickTime to TimeSensor and re-defined time
as absolute (not relative)
- Re-organized and alphabetized nodes in Node Ref
- Added Billboard
- Replaced PointSound and DirectedSound with Sound
- Changed/updated GeneralCylinder to Extrusion
- Texture2Transform fields exposed
- Disallowed exposed fields in Script nodes
- ColorInterpolate's "eventOut outValue" changed
from MF to SFColor to match the Material node
- Re-wrote the Interpolator's section - added more detail
- Lots of minor re-org to improve readability
- Added WWWMovieTexture and ImageTexture
- Changed Texture2 to WWWTexture2 - removed image field
3/5/96(cm): Removed voting booth. Added
BNF syntax section to spec. Misc. edits to spec.
1/24/96(cm): Added questions to the
1/24/96(cm): More spec refinements, more logos
and a Sample Software section.
1/23/96(cm): Added API and major spec update.
1/16/96(cm): First public version.
1/8/96 (gb): Created.
Local site : http://www.topedge.com
This material is featured under the TopPanel called TeaPot courtesy of Gavin Bell and Chris Marrin.