feature

A Short History of VRML 2.0

While it's true that VRML didn't spring from the loins of the 3D graphics community fully formed, it did happen pretty fast; an SGI engineer tells how.

by Chris Marrin

The development of the Virtual Reality Modeling Language (VRML) has become the focus of a lot of attention lately, and with that attention comes curiosity about where VRML came from. Did it spring from the minds of SGI? Well, no. Was it Mark Pesces' baby? Well, no. Let's start at the beginning.

Halfway through 1994, an e-mail list was started at Wired Magazine's Internet site called ``www-vrml''. The Web was the latest buzzword of the 90s and a group of 3D enthusiasts (read: nerds) wanted a place to discuss their latest passion, VRML. Introduced earlier in the year at a Web conference, the Virtual Reality Modeling Language was heralded as the next big Web advance, a sort of HTML for 3D content; it was to be a file format that would bring 3D to the masses.

The VRML mailing list was the seed from which a thriving community of artists, engineers and visionaries sprang. This group produced the VRML 1.0 specification in record time purely through e-mail interactions, possible in part because it was based on the Inventor file format from Silicon Graphics. Inventor is a mature file format used by everyone from universities to the special effects titan, Industrial Light and Magic. A subset of Inventor was chosen which facilitated implementation on a wide variety of platforms. While this allowed several VRML browsers to be created, it also crippled the language to a certain extent. None of Inventor's advanced interaction and animation capabilities were included, so VRML 1.0 worlds were as still as a graveyard. Before the ink even had a chance to dry on the spec, work on bringing life to our VRML 1.0 worlds began.

A small extension to the 1.0 spec, called VRML 1.1,was tried. It contained audio, and some very primitive animation, but this was not nearly enough to create compelling content; VRML1.1 was stillborn. The VRML community set its sights on a major overhaul of the language, and dubbed this overhaul VRML 2.0.

Multi-User Worlds

Around this time the topic of multi-user worlds became very hot on the VRML mailing list. It seemed that every member of the VRML community had read both William Gibson's Neuromancer and Neil Stephenson's Snowcrash. These two visions of our ``cyberfuture'' inspired the group to fanciful descriptions of VRML as an environment where virtual sword fights and collaborative data mining could take place. Many saw this as the rightful aim of VRML 2.0.

At SGI we talked to several small companies with fledgling multi-user efforts of their own. Our goal was to understand how these efforts, which were all based on proprietary technologies, could be made to use VRML as the language to describe the appearance and behavior of their worlds. One of these companies, World's Inc., was just launching a multi-user chat world known as AlphaWorld. They felt, as we did, that VRML could be the foundation for multi-user worlds on the Web.

SIGGRAPH '95 (the Association for Computing Machinery Special Interest Group for Computer Graphics--http://www.siggraph.org/) was just around the corner. This 40,000 attendee show descends on some unsuspecting city in the US every July and has always been a showcase of SGI products and technology. Knowing the show was coming up, we decided to try to produce a multi-user demo for that show. We initially collaborated with World's Inc., but when a business arrangement could not be reached, work on that project was halted. I then proposed the insane idea that SGI should create the multi-user demo on its own, from scratch. There were less than three weeks till SIGGRAPH.

We succeeded in bringing that demo to SIGGRAPH, and it made making some aspects of VRML very clear. First, we learned that there are big problems to solve in doing the sort of high bandwidth, low latency technology needed for multi-user worlds. There were at least three demos other than our own on the show floor that year, all solving the problem in different ways. This made it clear that multi-user was not ready for prime time and we therefore should not tie implementors' hands by specifying how it should be done in the VRML spec. The other lesson learned was that an author needs a great amount of flexibility in creating compelling 3D content.

The Requirements

Gavin Bell was the SGI engineer primarily responsible for bringing the Inventor subset to VRML 1.0. In thinking about 2.0, he conceived of three requirements he felt were important for 3D Web content: composability, scalability, and extensibility.

Composability would allow an author to create a house, scale it down and place it on a tabletop. This table with the house model could then be placed in the office building of a virtual architecture company. This building could be placed on a city block with other buildings, which could in turn be placed in a city, which could be placed on a planet orbiting a sun. In this composition each piece is independent of the rest. The full-size house can be placed on a residential street somewhere else on the planet because everything that makes it a house, from the attic light that switchs on to the door that opens to the basement, is contained within the house model.

Scalability allows worlds of arbitrary size to be created. With VRML it must be possible to see a galaxy, zoom in on a star system, then to a planet, then a city, a block, a park, a man sitting at a bench and finally the mosquito sitting on his arm. This is difficult due to limits in the precision of computer hardware but it is important to prevent worlds from having arbitrary limits in size or detail set on them.

Extensibility allows an author to extend the capability of the language to serve some special purpose. This allows, for instance, multi-user worlds to be created, or new geometric objects to be added to VRML.

In the fall of 1995 several long-term contributors to the VRML community, led by Mark Pesce, formed the VRML Architecture Group to steer the VRML 2.0 effort. The VAG's original goal was to define the 2.0 spec, but it was soon clear that there was so much good design going on outside the VAG that the group would merely steer the existing work and approve the final spec. The group quickly developed a list of requirements, based on Gavin's three requirements, for VRML 2.0. To the list was added a requirement that the spec allow multi-user extensions to be added without requiring specific multi-user support.

Experimentation

Scripting was seen as the best way to achieve the extensibility requirement. This feature would allow an author to write small programs in a language such as Perl to control the virtual world. Any capability of the scripting language would be available to extend VRML. Several groups experimented with scripting in their VRML designs. Some chose to put these scripts outside the world, controlling it like the hand of God. At SGI we wanted them to be embedded within the world, so small pieces could be distributed throughout, each controlling a bit of local functionality, such as a hand waving or a windmill spinning. We chose Java as our scripting language, since it was becoming apparent it would be a major technology for the Web. We connected the scripts to the rest of the world using Inventor's connectivity capabilities.

During this experimentation we began work on our version of VRML 2.0. We wanted to make it possible for authors to implement simple behaviors and interactions directly, using scripts for more powerful behaviors and for communicating with the outside world. Additionally we wanted the ability to construct new scene components, called ``prototypes'', to extend the language or create some specific functionality for a world. So we started our redesigned VRML by adding these features to the existing VRML 1.0 spec.

In the meantime there was much discussion on the mailing list about the need for VRML files to have a simplified structure. VRML 1.0 had a notion of ``state''. This allowed, for instance, a single color defined early in the file to affect many objects appearing later. This structure has a few nice side effects but makes it more difficult to create a fast and efficient browser. So a new file structure was designed and incorporated into the SGI design.

Other design efforts were also underway. Engineers from Sony collaborated with Mitra on a design of their own. While the SGI design communicated animation and interaction data by wiring nodes together, the Sony/Mitra design communicated through events sent from one part of the world to another. Both designs had benefits and drawbacks, so engineers from SGI and the Sony/Mitra effort collaborated to recast the SGI design into a model of sending events between the existing world components.

VRML '95

VRML '95 was coming up in December in San Diego. This was the first ever VRML-specific conference and all the VRML community was excited to get together and make great progress on the new spec. The SGI/Sony/Mitra collaboration had produced a very complete spec proposal and other groups had their own proposals as well.

Suddenly, without warning, Microsoft entered the VRML arena just weeks before the conference. They released a preliminary proposal for a language called ActiveVRML. This project, transplanted from Sun, called TBAG, originally targeted the 3D programming market. The TBAG engineers saw that their technology could be valuable to the future of VRML and Microsoft marketing saw how attractive the name VRML had become. So ActiveVRML was born, and was touted as a competing proposal for VRML 2.0. ActiveVRML was drastically different from any other proposal; it had grown out of functional programming, an abstract and esoteric branch of programming languages, which few in the VRML community understood. Add to that the fact that Microsoft began blitzing the mailing list with long posts about ActiveVRML without having been involved in or understanding the VRML community, and the stage was set for an exciting and controversial conference.

A total of six proposals were discussed at the round table session that immediately preceded VRML '95. The ActiveVRML proposal had some initial support because, although it was a radical departure from VRML 1.0, its elegant behavior model was attractive to some. The SGI/Sony/Mitra proposal was dubbed ``Moving Worlds'' to make it easier to discuss. It had wide support because it was more of a natural extension of VRML 1.0 and many long-term contributors to the VRML community were behind it. Other proposals presented contained good ideas but it was clear that the ActiveVRML and Moving Worlds proposals were the front runners.

A decision was made at VRML '95 that the VAG would make a formal request for proposal (RFP) for VRML 2.0, based on the list of requirements previously laid out. Proposals would then be submitted, discussion would ensue and a vote would be taken. The vote was to be final in April '96, with the winning spec allowed to mature until its release in August, in time for SIGGRAPH '96.

Moving Worlds

During the discussion phase, the Moving Worlds teams decided to continue building support of the VRML community. The proposal was published just after VRML '95, a Moving Worlds-specific mailing list was started, and a voting booth was opened to get opinions about the proposal from the community. We also began publishing the names of companies who supported our proposal. This not only made many companies feel included in the spec process, but it got many individuals involved in reviewing the proposal and suggesting rewrites. When voting commenced we had over 30 companies supporting Moving Worlds.

When it came time to vote for proposals, two questions were posed. Respondents were asked to rate the suitability of each proposal to the needs of VRML 2.0, from very suitable to very unsuitable. Also, each respondent was asked to name his or her favorite proposal. In the end Moving Worlds had a 92% suitability rating and 74% of the respondents voted for Moving Worlds as their favorite. This is what Mark Pesce often refers to as ``consensus'' and led the VAG to choose Moving Worlds as the basis for VRML 2.0.

But the work was far from over. Gavin Bell, Rikk Carey and I had the primary responsibility for bringing the proposed spec through several levels of draft standard to the final spec. But before that could happen, it had to be reviewed, changed, clarified and tested to see if our virtual worlds could solve real world problems.

At SGI, we started by developing our experimental Java-enabled VRML 1.0 browser to full VRML 2.0 conformance. Actually, we started two browser projects, one for the SGI platform and the other for the PC. We knew that, while SGI machines had stunning graphics performance, the PC was the key to VRML acceptance. So a second group at SGI embarked on a PC implementation of VRML 2.0. Creating two separate browsers was a big benefit in refining the spec. The SGI browser encountered problems implementing some areas, while the PC browser had difficulty with others. Our browsers were built as Netscape plug-ins but Sony was busy implementing its own standalone browser with a multi-user focus. Their experience was useful in uncovering other problems with the spec and led to additional refinements.

We had endless meetings, some with engineers inside SGI, others with members of the VRML community who were able to make it to the SGI campus. Still other input came from mailing list contributors who rewrote entire sections of the spec and e-mailed them to us for inclusion. The names of all those who contributed content or review material are recognized at the end of the spec. This long list is a tribute to the collaboration that made VRML 2.0 possible.

This process of consensus-building and collaboration in producing VRML 2.0 was quite unusual. So unusual, in fact, that it caught the attention of the International Standards Organization (ISO). In June 1996 Rikk went to Japan to start the process of making VRML 2.0 an ISO standard. The ISO committee accepted the work of the VRML community intact, moving the spec quickly through its acceptance procedures. In addition, it is now looking at the VRML process as a way to speed up the slow and cumbersome ISO standards procedures.

Controversy

The success of this process was not without its controversy. Since the main authors of the spec were all employed by SGI, there were occasional accusations that the work being done on the spec was in the best interests of SGI rather than the VRML community. We did not help these rumors when, in June 1996 we decided quite innocently (and naively) to remove the appendix containing details of the Java scripting interface.

The problems began back in early May when we were having difficulty properly interfacing Java to our browsers. Java, being new and immature, was difficult to use efficiently in the browser. At the same time I was becoming increasingly uneasy at the steep learning curve of Java for doing simple operations, like deciding whether three numbers entered into a virtual keypad were the correct sequence to open a combination lock. I felt Java put too much burden on authors for such simple operations. So within SGI, I proposed replacing Java with a lighter weight language, which we ultimately decided to base on Netscape's JavaScript. We implemented this in less that two weeks, removing the Java interface altogether. Called VRMLScript internally, it proved to deliver on its promise of easy-to-write, simple scripts.

When proposed to the VRML community, VRMLScript had what seemed to be an equal share of proponents and detractors. Since there was no requirement to support any particular language in VRML, this was a reasonable situation and healthy discussion ensued. The problems began when we were revamping the spec to get closer to the first draft. Since we were going down the VRMLScript path, the Java appendix was in a state of neglect, with inaccuracies and inconsistencies throughout. We wanted to get someone with a vested interest in Java to take over the appendix and until we could do that, we decided to remove the inaccurate section altogether.

What followed was a controversy that threatened to tear the VRML community apart at the seams. There were those who felt this was a major change to the spec and that its most important feature was being removed for good. There were others who were certain this was a sneaky attempt by SGI to fundamentally change the spec for some secret agenda, known only to the authors. Misinformation and misunderstandings abounded on all sides. The community got closer than ever before to fracturing into splinter groups that would have been impossible to reassemble. In the end, sanity prevailed and it became clear that the problem was simply poor judgment on the part of the authors. In true VRML community fashion the problem was solved through consensus. The Java appendix was reinstated and Sony was given the task of bringing it up to date, since they had the most experience with the issues.

Finishing Up

Soon after that experience, the spec went to first draft level. It was June 1996 and everyone breathed a sigh of relief that the spec was finally nearing completion. At this level, and at the two successive draft levels, the spec became increasingly stable and changes became increasingly minor. After the third draft the spec became ``frozen'' and only minor corrections and clarifications were allowed. This happened in July and it was the first point at which browsers could be made compliant with the final form of VRML 2.0. The first two browsers, CosmoPlayer from SGI and Community Place from Sony, exhibited different approaches to browser design. The SGI browser runs as a Netscape plug-in, runs on SGI machines and PCs, and uses the VRMLScript language for scripting. Sony's browser runs standalone, has multi-user capability and uses Java for scripts. Both were valuable test beds for VRML 2.0. Other browsers are beginning to appear now, all of which will help popularize and solidify VRML's place on the Web.

After long months of work, at SIGGRAPH '96 in August, VRML 2.0 was released. Rikk, who had put endless hours into finishing the document, declared, ``VRML 2.0 is not frozen; VRML 2.0 is done!'' This was both an expression of personal relief and a plea to the community to begin focusing on content rather than improvements to the spec.

Several long-time contributors to VRML have echoed Rikk's sentiments. The VRML process must now turn to creating compelling content to show the world the value of 3D on the Web. From games to business graphics, from simple spinning logos to complex interactive architectural walk-throughs, VRML can take the Web to an exciting new level of stimulating content. Challenges lie ahead. The spec has been finalized by the VRML community but it must still pass through the ISO standardization gauntlet. ISO has stated that the VRML community has ultimate technical control over the spec, and ISO will merely formalize it. As an international standard, VRML will gain new acceptance in the market as a serious tool for the ever growing 3D capability on PCs and consumer-oriented electronics. More powerful computers and special graphics hardware will put 3D in the hands of everyone. VRML will put content on that hardware.


Chris Marrin can be reached at cmarrin@sgi.com.