VRML was inspired by the simple observation that the world is three dimensional, and one needs to manipulate and view on the Web three-dimensional objects, as well as the images and text supported so well by the earlier technologies. The initial VRML 1.0 was not a programming language, but rather a data descriptor allowing one to specify arbitrary static three-dimensional scenes with general dynamic viewpoint allowing navigation. The three-dimensional scenes could embed clickable regions (spawning arbitrary Web locations) in a natural generalization of the two-dimensional image maps available in HTML. VRML was first proposed in Spring 1994 with the initial 1.0 version available a year later. There is now an extended standard VRML 2.0, which we will discuss briefly later on. Note that VRML is an acronym for Virtual Reality (VR) Modeling Language, but VRML is applicable to any application involving three-dimensional objects, and is more general than Virtual Reality.
We illustrate VRML in Figure 24, which shows six lines of VRML 1.0 defining two unit size objects separated by three units in the x direction. VRML is based on SGI's Open Inventor graphics object database format with some restrictions and extensions allowing linking objects with particular Web sites. VRML three-dimensional worlds are built in a hierarchical fashion in terms of nodes grouped together by separators. Cube and Sphere are types of node as is material shown in Figure 25. Nodes have attributes, such as diffusecolor and translation in Figure 25. Grouping is illustrated in Figure 26 where the extra separator limits the effect of the Material node to the cube. The detailed syntax in Figures 24-26 are the old VRML 1.0 standard. There are some changes in VRML 2.0, but the essential ideas are unchanged.
A sophisticated use of VRML is shown in Figure 27 with a terrain overlayed by clouds from a weather simulation. However, the use of this technology has been handicapped by its need for high performance for both CPU and network. Some of this is inevitable--it takes more data to specify and more CPU processing to render three-dimensional objects than to process HTML text. However, much of the performance degradation was due to simplistic language design (data was transmitted as uncompressed ascii) and immature VRML browsers. We expect a combination of improved hardware and refinements in language and software to increase the use and usefulness of VRML.
The new version VRML 2.0 addresses some of the performance issues, but more importantly adds the concept of events ``behaviors'' that are essentially computer programs (scripts) that can be attached to the VRML nodes, and modify their attributes. Currently, Java and JavaScript scripts are supported. This allows scenes with objects moving with respect to each other, and interacting in ways defined by the scripts. This will allow one to generate true virtual worlds and has natural application to both VR and Web-based computer games. Although there is an agreed VRML 2.0 standard, which is becoming ``official'' as VRML97, there are other approaches. One can extend (Java3D) the Java runtime to support three-dimensional objects in a similar way to its current two-dimensional image support. Clearly, the ideas present in VRML 1.0 and VRML 2.0 will be part of critical base Web technologies; however, the particular implementation is much less clear than for Java, and we can only follow the Web community and see what paths are chosen.