This paper describes preliminary ideas for extending the World Wide Web to incorporate virtual reality (VR). By the end of this decade, the continuing advances in price/performance will allow affordable desktop systems to run highly realistic virtual reality models. VR will become an increasingly important medium, and the time is now ripe to develop the mechanisms for people to share VR models on a global basis. The author invites help in building a proof of concept demo and can be contacted at the email address given above.
VR systems at the low end of the price range show a 3D view into the VR environment together with a means of moving around and interacting with that environment. At the minimum you could use the cursor keys for moving forward and backwards, and turning left and right. Other keys would allow you to pick things up and put them down. A mouse improves the ease of control, but the "realism" is primarily determined by the latency of the feedback loop from control to changes in the display. Joy sticks and SpaceBalls improve control, but cannot compete with the total immersion offered by head mounted displays (HMDs). High end systems use magnetic tracking of the user's head and limbs, together with devices like 3D mice and datagloves to yet further improve the illusion.
Sound can be just as important to the illusion as the visual simulation: The sound of a clock gets stronger as you approach it. An aeroplane roars overhead crossing from one horizon to the next. High end systems allow for tracking of multiple moving sources of sound. Distancing is the tech nique where you get to see and hear more detail as you approach an object. The VR environment can include objects with complex behavior, just like their physical analogues in the real world, e.g. draw ers in an office desk, telephones, calculators, and cars. The simulation of behavior is frequently more demanding computationally than updating the visual and aural displays.
The Virtual environment may impose the same restrictions as in the real world, e.g. gravity and restricting motion to walking, climbing up/down stairs, and picking up or putting down objects. Alter natively, users can adopt superpowers and fly through the air with ease, or even through walls! When using a simple interface, e.g. a mouse, it may be easier to learn if the range of actions at any time is limited to a small set of possibilities, e.g. moving forwards towards a staircase causes you to climb the stairs. A separate action is unnecessary, as the VR environment builds in assumptions about how peo ple move around. Avatars are used to represent the user in the VR environment. Typically these are sim ple disembodied hands, which allow you to grab objects. This avoids the problems in working out the positions of the user's limbs and cuts down on the computational load.
At first sight there is little relationship between the capabilities of systems at either extreme. In prac tice, many VR elements are composed from com mon elements, e.g. rooms have floors, walls, ceilings, doors, windows, tables and chairs. Out doors, there are buildings, roads, cars, lawns, and trees etc. Perhaps we can draw upon experience with document conversion and the Standard Generalized Markup Language (SGML) and specify VR environments at a logical level, leaving browsers to fill in the details according to the capabilities of each platform.
The basic idea is to compose VR environments from a limited set of logical elements, e.g. chair, door, and floor. The dimensions of some of these elements can be taken by default. Others, like the dimensions of a room, require lists of points, e.g. to specify the polygon defining the floor plan. Addi tional parameters give the color and texture of sur faces. A picture frame hanging on a wall can be specified in terms of a bitmapped image.
These elements can be described at a richer level of detail by reference to external models. The basic chair element would have a subclassification, e.g. office chair, which references a detailed 3D model, perhaps in the DXF format. Keeping such details in separate files has several advantages: