VRML feature summary
DOCT project white paper

David R. Nadeau / SDSC
Last updated: August 30, 1997

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

Table of contents

Introduction
Feature summary

Introduction
VRML stands for Virtual Reality Modeling Language. Development of the format begun in 1994 through discussion on a public email list. The format is designed to efficiently express complex 3D shapes and environments for cross-platform virtual reality applications on the Web.

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 summary

General

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.

Geometry

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.

Shading

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.

Texturing

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.

Transformation

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.

Grouping

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.

Lighting

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.

Sounds

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.

Backgrounds

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.

Fog

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.

Cameras

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.

Navigation

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.

Animation

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.

Interaction

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.

Extension

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.