Web3D: A Virtual Reality Browser
My Bachelor's final-year project at IIT Delhi
Web3D features a new interpreted language that provides developers with simple yet powerful high-level constructs for describing three-dimensional scenes and animations in non-immersive virtual worlds. Virtual worlds described using these constructs give Web3D enough information to render those worlds efficiently. Virtual worlds are modelled using the four 3D geometric primitives: cubes, cones, cylinders, and spheres; point light and parallel light sources; and orthographic and perspective cameras (observer) placed at a given location and looking in a given direction in space.
Web3D supports various rendering modes: wireframe, hidden line, and flat shading. Visual realism is enhanced by setting surface attributes of objects (gloss, shine), and by describing foggy scenes (depth cueing). Each object is rendered using a fixed number of polygons. The level of detail in rendering a scene can be controlled by varying the number of polygons used to render each object in the scene. Web3D is capable of displaying both static and animated worlds. The animations implemented are real-time, which are described by specifying time-variant functions. These functions could range from simple linear motion to complex helical motion functions. Quaternion interpolations are used to achieve smooth rotations between specified key frames.
Besides describing graphical objects and their attributes, Web3D is also capable of embedding these objects within text documents and linking the documents by means of hypertexts, giving the user the ability to prepare 3D presentations online. Hyperlinks can be to other virtual worlds or to HTML documents, in which case Web3D invokes a standard WWW browser (Netscape, Explorer, or Mosaic). Web3D, too, can be invoked by a properly configured WWW browser. Web3D provides an integrated development environment for creating 3D worlds by incorporating an editor that can be used to create, edit, and view output of source files all in one interface. Web3D provides the basic display and interaction functionalities, and a pleasing user interface. Sample virtual worlds rendered using Web3D: sample 1, sample 2, sample 3.
Web3D uses a Cartesian, right-handed, three-dimensional coordinate system. By default, objects are projected onto a two-dimensional device by projecting them in the direction of the positive Z axis, with the positive X axis to the right and the positive Y axis up. Web3D has been developed in C for UNIX using X Window Motif user interface toolkit. It was developed on Sun SPARCstations, but Makefiles are provided for DRS6000 and SGI as well. The Bachelor's thesis is available here.