1. About VRML
1.1 What is VRML?
The Virtual Reality Modeling Language (VRML) allows you to describe 3D objects, and combine them into interactive scenes and worlds. The virtual worlds - which can integrate 3D graphics, multimedia, and interactivity - can be accessed through the WWW (http). The remote users can
explore the content interactively in much more sophisticated ways than clicking/scrolling.
VRML is not a programming language like JAVA, nor is it a "Markup Language" like HTML. It is a modelling language, which means you use it to describe 3D scenes. It's more complex than HTML, but less complex (except for the scripting capability) than a programming language.
VRML is a (text)file-format that integrates 3D graphics and multimedia:
a simple language for describing 3D shapes
and interactive environments.
You can create(write) a VRML file using either any text editor or "wordbuilder" authoring software. To view a VRML file you need either a standalone VRML browser or a Netscape plug-in.
You should always distinguish between VRML 1.0 and 2.0 (and hopefully in the near future VRML98) browsers/plugins/authoring tools. To view/explore a VRML 2.0 world you need a VRML 2.0 browser/plugin, in the other hand (in most cases) you can use VRML 2.0 browsers/plugins to examine VRML 1.0 files.
Obviously you cant't create VRML 2.0 content with a 1.0 authoring tool.
There are differences between the VRML 1.0 and 2.0 formats: we will study the 2.0 spec.
1.2 What's new in VRML 2.0?
VRML 1.0 allowed you to create static 3D worlds assembled from static objects, which could be hyperlinked to other worlds, as well as to HTML documents. Visitors of the worlds were able to "fly" or "walk" around the static objects, and the only way of interaction was possible by "clicking" on a hyperlinked object, which worked like a hyperlink on a www-page: dropped you to the target of the link.
In VRML 2.0 objects can be animated, and they can respond to both time-based and user-initiated events. VRML 2.0 also allows you to incorporate multimedia objects(for example sound and movies) in your scenes.
The new features can be grouped:
- Enhanced static worlds
- sound node
- extrusion node (actually a modelling tool that lets you create extrusions, surfaces of revolution, and shapes formed by bending, twisting, and tapering different types of curves)
- background node (lets you describe a background panorama for your scene, such as mountains, plains, or some other distant landscape, as well as color gradations for the sky and ground)
- fog node (you can create foggy atmospheres)
- new kind of texture node (allows you to show movie clips within your scene. Combining this movie texture node with the audio clip node provides you with true multimedia resources: video and sound)
- shape node (encapsulates both appearance and geometry: appearance properties
are no longer inherited within the file resulting a simplified scene graph)
- collision detection node (contains collision information> user
can no longer walk through walls in the scene)
- sensor nodes (they wait for a particular event to occur and then do
something in response to that event. This way you can sense the user's presence at a particular area of the scene, and respond to it. For example, one kind of sensor can wait until the camera gets to a certain point in the scene and then trigger a change in part of the scene in response to the proximity of the user-perhaps by opening a door or turning on a light.)
- Animation and behavior scripting
- interpolators (You can incorporate keyframe animations. You
supply the object description at certain critical points, and then the interpolator performs the calculations for the in-between descriptions.)
- Prototyping new VRML objects
VRML comes with a fixed set of objects (called nodes). The prototyping feature lets you create complex objects that you can reuse, changing certain characteristics of the objects when desired.
- VRML File Information
You can describe the defaults for the browser: navigation style(walk, fly, examine), the navigation speed, headlight on/off.