This white paper provides a tabular feature summary of the VRML 1.0, VRML 2.0, and ISO VRML 97 3D shape grammars. The VRML file format is representative of graphics pipeline-based file formats, including Open Inventor, the Java3D API, and others. |
Introduction
Feature summary |
The table below provides an overview of VRML versions and the names by which they have become known.
Version | Released | Comments |
VRML 1.0 | May 1995 |
Begun in late 1994, the first version of VRML was
largely based upon
the Open Inventor file format developed by
Silicon Graphics Inc. The VRML 1.0 specification
was completed in May 1995 and included support for
shape building, lighting, and texturing.
VRML 1.0 browser plug-ins became widely available by late 1995, though few ever supported the full range of features defined by the VRML 1.0 specification.
|
VRML 1.0c | January 1996 |
As vendors began producing VRML 1.0 browsers, a number
of ambiguities in the VRML 1.0 specification surfaced.
These problems were corrected in a new VRML 1.0c (clarified)
specification released in January 1996. No new features
were added to the language in VRML 1.0c.
|
VRML 1.1 | canceled |
In late 1995, discussion began on extensions to the VRML 1.0
specification. These extensions were intended to address
language features that made browser implementation difficult
or inefficient. The extended language was tentatively
dubbed VRML 1.1. These enhancements were later dropped
in favor of forging ahead on VRML 2.0 instead.
No VRML 1.1 browsers exist.
|
Moving Worlds | January 1996 |
VRML 1.0 included features for building static, unchanging
worlds suitable for architectural walk-throughs and some
scientific visualization applications. To extend the
language to support animation and interaction, the VRML
architecture group made a call for proposals for a language
redesign.
Silicon Graphics, Netscape, and others worked together to
create the Moving Worlds proposal, submitted
in January 1996.
That proposal was later accepted and became the starting
point for developing VRML 2.0. The final VRML 2.0
language specification is still sometimes referred to as
the Moving Worlds specification, though it differs
significantly
from the original Moving Worlds proposal.
|
VRML 2.0 | August 1996 |
After seven months of intense effort by the VRML
community, the Moving Worlds proposal evolved to
become the final VRML 2.0 specification, released
in August 1996. The new specification redesigned
the VRML syntax and added an extensive set of new
features for shape building, animation, interaction,
sound, fog, backgrounds, and language extensions.
Beta versions of VRML 2.0 browser plug-ins have been available since late 1997. However, as of this writing (June 1997) there are still no fully-compliant, complete VRML 2.0 browsers available on the market.
|
VRML 97 | September 1997 |
In early 1997, efforts got under way to present
the VRML 2.0 specification to the International
Standards Organization (ISO) which oversees most of
the major language specifications in use in the
computing community. The ISO version of VRML 2.0
was reviewed and the specification significantly
rewritten to clarify issues. A few minor changes
to the language were also made. The final ISO VRML
was dubbed VRML 97. The VRML 97 specification
features finalized in March 1997, while the specification's
text finalized in September 1997.
One beta version of a VRML 97 browser plug-in is available as of this writing: Silicon Graphics Cosmo Player for SGI platforms. More VRML 97 compliant browsers are expected within the next few months. |
VRML 1.0 and VRML 2.0 differ radically in syntax and features. A VRML 1.0 browser cannot display VRML 2.0 worlds. Most VRML 2.0 browsers, however, can display VRML 1.0 worlds. VRML 97 differs in a few minor ways from VRML 2.0. In most cases, a VRML 2.0 browser will be able to correctly display VRML 97 files.
Feature | VRML 1.0 | VRML 2.0/97 |
Name | VRML = Virtual Reality Modeling Language | VRML = Virtual Reality Modeling Language |
Author | Internet community | Internet community |
Owner | Internet community | ISO |
Release date | 1995 | 1997 |
Primary rendering system | Interactive | Interactive |
Primary application areas | ACAD, scientific, virtual reality | ACAD, entertainment, scientific, simulation, virtual reality |
Primary content types | Environments | Environments |
Feature summary | VRML 1.0 content may contain multiple shapes, each with geometry, shading, texturing, and transformation specifications. Shapes may be grouped hierarchically, named, and instanced. Light sources may be placed in the environment. Content may include cameras. | VRML 2.0/97 content may contain multiple shapes, each with geometry, shading, texturing, and transformation specifications. Shapes may be grouped hierarchically, named, and instanced. Light and sound sources may be placed in the environment. Backgrounds and fog may be added. Content may include cameras, navigation controls, animations, and interaction controls. Procedural content may be created using Java, and JavaScript. The grammar may be extended via macros. |
Comments | VRML 1.0 was briefly in use for creating interactive Web content. With the release of VRML 2.0/97, VRML 1.0 is rarely used any more. | VRML 2.0/97 is in wide use for creating interactive Web content. |
VRML 2.0/97 added support for animation and interaction, broadening the application areas for VRML to include entertainment and simulation.
Feature | VRML 1.0 | VRML 2.0/97 |
Geometry types | Explicit:line, point, polygon
Procedural: box, cone, cylinder, sphere, text |
Explicit:line, point, polygon
Procedural: box, cone, cylinder, sphere, text, elevation grid, extrusion, surface of revolution |
Geometry languages | None | Java, JavaScript |
Line widths | Always 1 pixel wide | Always 1 pixel wide |
VRML 2.0/97 added elevation grid, extrusion, and surface of revolution geometry types (surface of revolution is a variation of extrusion). Through embedded Java or JavaScript program scripts, VRML content can procedurally create shapes expressed in one of the built-in geometry types.
Feature | VRML 1.0 | VRML 2.0/97 |
Shading availability | Yes | Yes |
Color spaces | Floating point RGB | Floating point RGB |
Lighting model parameters | Ambient color, diffuse color, emissive color, specular color, shininess factor, transparency factor | Ambient intensity, diffuse color, emissive color, specular color, shininess factor, transparency factor |
Shading models | Constant, smooth | Constant, smooth |
Shading languages | None | None |
VRML 2.0/97 replaced the lighting model ambient color (RGB) parameter with one to control ambient intensity (scalar). The new feature is less flexible, but easier to compute for low-end systems.
Feature | VRML 1.0 | VRML 2.0/97 |
Texture availability | Yes | Yes |
Texture types | 2D image | 2D image, 2D movie image |
Texture storage | Embedded, browser-defined file formats | Embedded, GIF, JPEG, MPEG, PNG |
Texture use types | One texture at a time, diffuse or emissive color map combined with optional transparency map | One texture at a time, diffuse or emissive color map combined with optional transparency map |
Texture transform types | Translation, rotation, scale, center, scale orientation | Translation, rotation, scale, center, scale orientation |
Texture transform use | Multiple transforms in any order | Single transform in a fixed order (VRML 2.0 and VRML 97 have reversed fixed transform orders) |
Line patterns | Textured lines | Always solid |
VRML 2.0/97 restructured the grammar syntax to specify textures, and their transforms, along with the shapes they texture. Doing so removed the ability to concatenate texture transforms. Instead, a single fixed transform order is available. VRML 2.0 and VRML 97 use a reversed texture transform order. The change was made to better match the needs of most users, though it does break some content.
While VRML 1.0 allowed textured lines and points, VRML 2.0/97 does not. This feature reduction was done to make line and point rendering easier on low-end systems.
VRML 2.0/97 adds movie textures and defines specific image file formats that VRML browsers must support. VRML 1.0 did not define which file formats were required.
Feature | VRML 1.0 | VRML 2.0/97 |
Transform availability | Yes | Yes |
Transform types | Arbitrary 4x4, arbitrary rotation, arbitrary scale, arbitrary translation, center, XYZ shear, XYZ taper | Arbitrary rotation, arbitrary scale, arbitrary translation, center |
Transform use | Multiple transforms in any order | Multiple transforms in any order |
VRML 2.0/97 removed support for arbitrary 4x4 matricies. This also removed the ability to shear and taper shapes.
Feature | VRML 1.0 | VRML 2.0/97 |
Group availability | Yes | Yes |
Group hierarchy | Yes | Yes |
Group naming | optional text names | optional text names |
Group types | Anchor, group, inlne, level-of-detail, separator, switch, transform separator | Anchor, billboard, group, inlne, level-of-detail, switch, transform |
Instancing types | Per-attribute, per-group, per-shape | Per-attribute, per-group, per-shape |
VRML 2.0/97 restructured the shape grammar to reduce state push and pop, enabling a performance increase on low-end systems. The restructuring added billboard groups and replaced VRML 1.0's separator and transform separator grouping types with the transform grouping type. These are not directly equivalent. VRML 1.0 content using separator groups usually can be translated into VRML 2.0/97 content using transform groups. However, VRML 1.0 content using transform separators is usually not translatable, particularly when those transform separators are used to scope light sources.
Feature | VRML 1.0 | VRML 2.0/97 |
Lighting availability | Yes | Yes |
Number of lights | Unlimited | Unlimited |
Number of active lights | Unlimited, but encouraged to be less than 8 | Unlimited, but encouraged to be less than 8 |
Light color space | Floating point RGB | Floating point RGB |
Light types | Directional, point, spot | Directional, point, spot |
Light parameters | Directional: color, direction, intensity, on/off
Point: color, intensity, on/off, position Spot: color, cone angle, cone sharpness, direction, intensity, on/off, position |
Directional: color, direction, intensity, on/off
Point: attenuation, color, intensity, on/off, position Spot: attenuation, color, cone angle, cone sharpness, direction, intensity, on/off, position |
Light scoping types | Per-group | Attenuation (point and spot), per-group (directional) |
VRML 1.0 light sources were scoped to the separator group in which they occurred. This was not widely implemented correctly. VRML 2.0/97 changed light source scoping, leaving directional lights scoped by group, while making point and spot lights global. Attenuation control on point and spot lights provides a spatial scoping not available in VRML 1.0.
Feature | VRML 1.0 | VRML 2.0/97 |
Sound availability | No | Yes |
Number of sounds | N/A | Unlimited |
Number of active sounds | N/A | Unlimited, but usually less than 8 |
Sound types | N/A | Point |
Sound parameters | N/A | Intensity, on/off, position, region |
Sound scoping types | N/A | Attenuation, region |
Sound storage | N/A | MIDI, MPEG, WAV |
Sound processing | N/A | Pitch shift, spatialize |
VRML 2.0/97 added sound support.
Feature | VRML 1.0 | VRML 2.0/97 |
Background availability | Yes via a common extension | Yes |
Number of backgrounds | 1 | Unlimited |
Number of active backgrounds | 1 | 1 |
Background types | N/A | Color gradient, panorama images |
Background storage | N/A | GIF, JPEG, PNG |
VRML 1.0 did not have support for background color control. A common extension supported by most VRML browsers enabled the background to be set to a single color. VRML 2.0/97 added support for multiple backgrounds, color gradients, and panorama images.
Feature | VRML 1.0 | VRML 2.0/97 |
Fog availability | No | Yes |
Number of fogs | N/A | Unlimited |
Number of active fogs | N/A | 1 |
Fog types | N/A | Linear, exponential |
Fog parameters | N/A | Color, density, on/off |
Fog scoping types | N/A | Global |
VRML 2.0/97 added fog support.
Feature | VRML 1.0 | VRML 2.0/97 |
Camera availability | Yes | Yes |
Number of cameras | Unlimited via a common extension | Unlimited |
Number of active cameras | 1 | 1 |
Camera types | Orthographic, centered perspective | Centered perspective |
Camera parameters | Field-of-view, orientation, position | Field-of-view, orientation, position |
VRML 1.0 supported specification of a single camera within the scene. A common extension supported by most VRML browsers added support for multiple cameras that the user could select among. VRML 2.0/97 restructured this mechanism, making it more flexible.
VRML 2.0/97 removed support for orthographic cameras.
Feature | VRML 1.0 | VRML 2.0/97 |
Navigation availability | Yes via a common extension | Yes |
Navigation constraints | None | Collision, optional gravity |
Navigation modes | Examine, fly, walk | Examine, fly, walk |
VRML 1.0 did not support explicit navigation control. A common extension enabled content to specify a global navigation mode. VRML 2.0/97 restructured this mechanism, enabling multiple navigation types to be specified and switched among. VRML 2.0/97 also added support for collision detection and gravity.
Feature | VRML 1.0 | VRML 2.0/97 |
Animation availability | No | Yes |
Animation types | N/A | Keyframe, procedural |
Animation languages | N/A | Animation circuit, Java, JavaScript |
Time resolution | N/A | Variable |
Time specification | N/A | Normalized, real-time |
VRML 2.0/97 added animation support.
Feature | VRML 1.0 | VRML 2.0/97 |
Interaction availability | Yes | Yes |
Input types | Input devices: none
User interfaces: buttons (anchors) Sensors: none |
Input devices: none
User interfaces: buttons, relative locators, valuators Sensors: billboard, collision, level-of-detail, proximity, time, visibility |
Response types | Preset (anchors) | Preset, procedural |
Interaction languages | None | Animation circuit, Java, JavaScript |
VRML 1.0 included support for click-able anchor shapes. No other form of interaction was supported.
VRML 2.0/97 added a generalized notion of interaction using sensors that could be wired together into an animation circuit without the need to use a programming language. Java and JavaScript program scripts could, however, be written to augment such an animation network and provide more sophisticated interaction control. Several preset interactions, including anchors, billboards, and collision detection are also provided.
Feature | VRML 1.0 | VRML 2.0/97 |
Extension availability | No | Yes |
Extension types | N/A | Macro (PROTOs) |
VRML 2.0/97 added PROTOs (short for prototype), a form of parameterized macro. Java and JavaScript programming languages also provide a form of grammar extension.