Distributing 3D information over the internet using VRML
D. Brent Henderson
Smallworld Systems, Inc.
5600 Greenwood Plaza Blvd, Suite 300
Englewood, CO 80111, USA
Background of VRML
The Virtual Reality Modeling Language (VRML) is a three-dimensional (3D) interchange
format. It is simply a file format specification to allow 3D information to be communicated over
the Internet and viewed using common Web browsers with VRML controls. The VRML file
format provides basic geometric modeling features. It also provides semantics for specifying
advanced computer graphics effects such as hierarchical transformations, light sources,
viewpoints, geometry, animation, fog, material properties, and texture mapping.
VRML first came into existence in 1994 with the development of the initial specification, VRML
1.0, which was released in 1995. The following year the VRML 2.0 specification was produced
and was submitted to the International Standards Organization (1S0) as a draft (Bell, 1996). In
December, 1997, the 1S0 approved the VRML specification and released it as ISO/IEC 14772-
1:1997, commonly called VRML 97. VRML 97 was based on the VRML 2.0 specification and
is 98°/0 compatible with VRML 2.0. The current VRML specification may be found at the
VRML Repository web site whose address is http: //www.vrml.org/Specifications/VRML97.
The development of the VRML specification has been the result of a collaboration of many
individuals and companies. In 1996, a group of companies formed the VRML Consortium to
develop and promote the specification. Charter members of the Consortium include 3Dlabs,
Inc., Apple Computer, blaxxun Interactive, Cosmo Software, IBM Corp,, INTEL Corp.,
Intervista Software, Inc., Micrsoft Corp., Mitsubishi Electric Corp., Oracle Corp., PLATINUM
Tech., Samsung Electronics Co., Sony Corp., and Superscape Inc. Today there are over 50
organizations in the non-profit Consortium. The Consortium is lead by a Board of Directors.
The Consortium also elects a VRML Review Board (VRB) with eight members who oversee the
Working Groups. The VRB members are volunteers who are recognized technical experts in 3D
Web technologies. The Working Groups help guide the future of VRML by providing proposals
to the VRB recommending practices and modifications to the standard.
Recently the VRML Consortium announced a proposed expansion of its charter to include all 3D
Web technologies. One thrust of this expansion will be to integrate VRML with other 3D
technologies and features such as Java3D. Java3D provides an application programming
interface (API) for drawing 3D graphics. One example of how Java3D and VRML can be
integrated is a recently released Java3D-based VRML 97 viewer applet from Sun Microsystems.
Structure of VRML files
VRML files maybe created from scratch using a simple text editor or through authoring tools
and data translators. VRML files consist of four components: a header, prototypes, shapes
(including nodes, interpolators, sensors, and scripts), and routes. Of these four main components
only the header is required. The header specifies that the file is a VRML type file, the VRML
version, and type of character set used. Prototypes allow the addition of new node types that
specify the shape, appearance, or behavior of a structure that may be reused elsewhere in the file.
Shapes are provided to buildup scenes from standard geometries and controls. Finally, routes
are mechanisms for sending messages between nodes to enable dynamic 3D scenes and
animations (Ames, 1997).
Typically VRML filenames use "wrl" for their extension. Building a 3D scene is done by
speci~ing shapes and nodes. The VRML standard provides over 50 different nodes types for
speci~ing geometric shapes, animations, and effects. Standard shapes include box, sphere,
cylinder, text, and cone. Control of the position and orientation of shapes is provided through
transform commands. A simple VRML file is shown below. This file defines a box object
which is rotated 0.785 radians about the X-axis.
#VRIVILIV2 .0 utf8
Transform {
rotation 1.0 0.0 0.0 0.785
children [
Shape {
appearance Appearance {
material Material { }
}
geometry Box { }
}
}
}