ActiveVRML White Paper
This draft specification is published by Microsoft for the purpose of helping to create an open standard. Independent implementations of this specification are expressly permitted by Microsoft irrespective of whether the specification contains, constitutes, or reflects Microsoft patents or copyrights.
Microsoft anticipates that it will release a reference implementation in object and source code form. Microsoft expects to license this code in the following manner: (i) the object code may be reproduced and used without restriction or charge; and (ii) the source code may be reproduced and used for educational, non-commercial and internal use without charge, and for commercial use at a commercially reasonable charge.
This white paper presents the Active Virtual Reality Modeling Language (ActiveVRML), which is a powerful open framework for the creation of animated and interactive multimedia worlds that can run on multiple platforms. These multimedia worlds are alive with video, 2-D and 3-D animation, and sound. They are also interactive--elements in these worlds can respond to user actions and to each other.
As with HTML and VRML 1.0, one of the key goals for ActiveVRML is to simplify the content creator's job in creating such worlds. We accomplish this by providing a novel modeling approach based on reactive behaviors; these behaviors provide a uniform model for specifying and coordinating all media.
Worlds specified in ActiveVRML can run on multiple platforms and platform configurations. The ActiveVRML specification and the design of the accompanying browser simplify porting of the browser to other platforms, such as Apple® Macintosh® or SGI® computers. In addition, because the ActiveVRML specification is a high-level representation, the browser can adapt the quality of the rendered world to the capabilities of the computer on which it is running.
The remainder of this paper provides an overview of ActiveVRML and the types of new applications that can be written using ActiveVRML. It also describes key technical innovations provided by ActiveVRML and the resulting benefits to the programmer and the user community.
What is ActiveVRML?
ActiveVRML is a modeling language that is highly specialized for reactive behaviors; it is not a general-purpose programming language. The capabilities of the modeling language can be extended using other languages, such as Java, C++, or Visual Basic®, and ActiveVRML worlds can communicate with other programs (both local and remote) written in these languages.
Most importantly, ActiveVRML is an open specification that provides a powerful solution for the construction of interactive, 3-D, multimedia worlds, and we are proposing it as a specification for VRML 2.0.
New Applications for the World Wide Web
VRML 1.0 extended the World Wide Web by providing a means of specifying 3-D geometry. This allowed users to view and navigate through static 3-D worlds and hyperlink to new worlds or to other locations on the World Wide Web.
ActiveVRML adds the capabilities needed to build animated and interactive 3-D worlds that can respond to user actions with synchronized sound, motion, and video, and can also provide links to other worlds or Web pages. These capabilities can be used in games, educational applications, and for commercial purposes.
Imagine worlds that have autonomous creatures, such as a virtual zoo where you can examine animal behavior, or imagine interactive simulations that can teach elementary physics or astronomy. You can use an online encyclopedia to retrieve a page containing an illustration of the solar system. The illustration, however, is active; the planets orbit the sun and the moons orbit their planets. You can view the solar system from different viewpoints and at different scales. If you zoom in on earth, the cloud cover reflects current satellite data retrieved over the Web. Clicking the various planetary objects links you to photographs at JPL's Web site. Setting the date adjusts the position of all the planets and moons. You can launch an asteroid into the solar system and view the trajectory of the asteroid and perhaps witness a planetary collision.
Commercial communication is another area that will benefit from ActiveVRML. Web pages that use ActiveVRML can compactly represent animated 3-D logos, product models, and interactive audio.
Key Technical Innovations
ActiveVRML provides the following significant technical innovations:
Time is implicit
ActiveVRML is built on the notion of behaviors. Whereas VRML 1.0 and other modeling languages work with primitive values and objects that are static over time, in ActiveVRML all objects are implicitly time-varying. Rather than specifying animation via a loop that updates new values with each iteration, all objects can simply include time as a parameter. This means that anything can be readily animated--3-D geometry becomes animation, images become video, and sounds change over time. The content creator need not worry about generating individual animation frames nor deal with issues such as sampling the input stream, but can view time as a continuous parameter.
Interactivity is built-in
A further innovation is that behaviors are extended to encompass interactivity. The notion of reactive behaviors means that behaviors can respond to events by switching from one time-varying behavior to another. Such events are often triggered by actions that the user takes, such as clicking a button or shooting a spaceship. However, events also can be triggered by other behaviors--such as a behaviors that become true when a collision occurs--or they can originate from other local (or remote) programs. In ActiveVRML, reactive behaviors form the basis of interactivity.
All media are equal
ActiveVRML treats all media types in a uniform fashion, which greatly simplifies the creation of multimedia applications. The content creator is shielded from the diverse media APIs and can specify and synchronize all media (sound, images, video, graphics) in a consistent and unified way. Different media elements can be easily combined in various ways. For example, time-varying images can be displayed as normal video or used as an animated texture for a 3-D object. An audio element can be combined with a geometric model and given the position and velocity of the geometry; in this way, the sound of an ambulance can have the volume and Doppler shift associated with the distance and velocity of the ambulance.
Built upon existing formats
In spite of these innovative new features, ActiveVRML builds on the existing media formats, such as the .WRL format specified by VRML 1.0, the .GIF image format, and the .AU sound format. All of these can be readily incorporated into the ActiveVRML specification.
ActiveVRML's technical innovations benefit the programming and user communities as follows:
Open and extensible
ActiveVRML is both open and extensible. The capabilities of the modeling language can be extended using other languages, such as Java, C++, or Visual Basic, and applications can consist of modules specified in a variety of languages. This approach allows different languages and their programming environments to capitalize on their strengths, rather than trying to be all things to all people. The mechanism for extending ActiveVRML is based on the flow of events with data between ActiveVRML modules and other modules. Events and accompanying data that originate in external modules can trigger reactive behaviors in a manner similar to the way in which internal and user-generated events trigger reactions.
Simplicity and performance
ActiveVRML simplifies the task of specifying the behavior of a reactive multimedia world because of its technical features and because of the ActiveVRML approach. Unlike traditional programming approaches, ActiveVRML specifies behavior by declaring what should happen, rather than specifying the steps of how it happens. In addition, the ActiveVRML specification allows the browser to more readily optimize and adapt the rendering of multimedia worlds to computer platforms with different capabilities, as follows:
Because each specification of a multimedia world can be highly optimized, ActiveVRML is scalable to large and complex worlds.
- The specification leaves issues such as sampling rate, frame generation, image resolution, and so forth, to the browser; the browser can then adjust these parameters in response to the capabilities of the platform on which it is running.
- The style of specifying what should happen allows the browser to optimize the specification and determine how often behaviors need to be sampled or recomputed for the current platform.
ActiveVRML provides a high-level representation; therefore, the content creator does not need to worry about low-level issues, such as animation loops, event loops, and threading for simultaneous occurrences. The animation and event loops are implicit in ActiveVRML models, and the browser will automatically spawn threads as needed and as appropriate. In addition, an interactive world created with the ActiveVRML specification is compact and facilitates rapid download over a network.
Furthermore, the creation of a rich interactive world with 3-D geometry, sounds, and images cannot be done by simply using a text editor. The need for visual authoring tools for producing such content is obvious, and ActiveVRML, through its approach to time modeling and media, provides a solid foundation for developing such tools. It is much more tractable for visual authoring tools to construct entities in the ActiveVRML representation than in the form of imperative programs, as currently interactive animations are expressed. This will further simplify the task of tool builders and content creators.
The ActiveVRML specification is platform-independent and allows the content creator to author a single specification for multiple platforms. Note that as we discussed previously, a single specification can actually produce different renderings on different platforms in response to the platform capabilities. This allows the content creator to target a much wider range of platform performance with a single world specification.
The design of ActiveVRML and the browser simplify the porting of the browser to different processors and operating systems, including the Macintosh and SGI machines. On a Windows® platform, the ActiveVRML browser uses standard APIs, such as Direct3D and DirectSound, so that the user can immediately benefit from accelerator cards as they become available.
Architectural support for distribution
The component integration facilities that are mentioned above can be used for distributed and multi-user applications, such as multiperson games over the Internet. For example, you can have a space adventure game with video, 3-D graphics, and sound that is connected to multiple players.
Support for shared spaces among multi-users is not a targeted feature for the first release of the system. However, ActiveVRML's modeling approach was designed with distribution in mind and has provisions that facilitate having several viewers explore the same shared space. We plan to exploit these advantages and pursue multi-user support as a very important feature in future releases.
ActiveVRML specifications and the associated browser are secure because the specifications only define actions over the restricted domain of multimedia output. To ensure secure operation, the capability of the ActiveVRML browser is intentionally limited and no arbitrary code (in the form of scripts and so forth) is executed.
We believe that ActiveVRML provides the ability to author truly rich and interactive multimedia worlds in a simple manner. It provides a powerful and high-level specification that can be optimized and adapted to different platforms. It simplifies the content creator's job by providing new semantic constructs and a uniform approach to different media. It is multiplatform, so that a single ActiveVRML world can run on many architectures, operating systems, and systems with different capabilities. Finally, it is open and extensible while still providing support for distributed applications in a secure manner.
© 1996 Microsoft Corporation
Back to the main ActiveVRML page