Standard Formats
The following file formats are current or emerging standards for 3D data exchange.
- ISO VRML97
- THE ISO standard for 3D data exchange over the Internet. It is a complex standard so not all applications that claim to support it support the full feature set. Support for the geometry features is widespread but there are few implementations of the full event model. For web-based delivery, popular plug-ins include Cosmo Player, Blaxxun Contact, and ParallelGraphics Cortona. However, it is not 'just' a format for web-delivery and a number of VR and 3D systems can import/export VRML geometry, using it as a data exchange format.
- X3D/"ISO VRML 200x"
- X3D is a new version of VRML that is in the process of being finalised for standardisation. Put very simply it is an XML-ification of VRML97, but it is also a modular system, with a compact set of core functionality and additional profiles, including a VRML97 profile for backwards compatibility.
- MPEG 4
- MPEG 4 is a multi-media file format that uses VRML as the basis of it's 3D support. VRML code is encoded using a binary format called BIFS in order to improve compression of 3D data.
VRML/X3D-inspired formats
Several companies have produced demonstrations of their core X3D proposals. Two Java-based example implementations are Shout3D and Blaxxun3D, both of which are impressively small (the applets are only 50-60k). In addition to these, ParallelGraphics has created it's own Java-based subset of VRML, which is implementd as a JavaBean.
- Anfy 3D
- Anfy 3D is a PC-based tool based on Spazz3D. Anfy 3D can import VRML worlds and export them in a format that the Anfy 3D Java applet can read. Useful if you want to put a small animated 3D model on a Web page without requiring the user to download a plug-in.
- Blaxxun3D
- Blaxxun Interactive submitted an X3D proposal where a strict subset of VRML 97 us proposed for core X3D. Examples of the proposal can be found on Blaxxun's Web pages and can also be downloaded.
- Shout3D
- Shout Interactive's X3D proposal deviated from VRML97 more than Blaxxun3D. Shout has produced a very nice set of demonstration environments that use their java-based 3D technology. See their portfolio for these examples.
- Cortona Jet
- ParallelGraphics launched Cortona Jet at SIGGRAPH 2000. It is a JavaBean that can be used to create interactive 3D scenes using a sub-set of VRML 97.
Other Web3D formats
There are a wide variety of other formats that can be used to present 3D objects and worlds on the Web. In general, these require proprietary plug-ins produced by the companies that sell specific modelling tools.
Examples include:
-
- Cult 3D
- Cult3D is an interactive object viewer with animation capabilities. The Viewer is available for many platforms, but the tools for creating Cult3D files are for Windows only. Cult3D's claim to fame is that it runs reasonably fast on machines without hardware 3D accelation.
- Hypercosm3D
- Hypercosm3D can be used to create virtual environments similar to those that can be produced using VRML 97. An interesting feature of Hypercosm3D is OMAR, a powerful object- oriented scripting language.
- Viewpoint
- Viewpoint (alias MetaStream) is a format that is well suited to e-commerce (online shopping) type applications. An interesting feature is its ability to display complex objects quickly by streaming data from the server to the plugin, so that the object can be viewed as it is downloaded. The longer you wait, the more detailed the object gets until the entire file has been downloaded.
- Pulse 3D
- Pluse3D is a web browser plug-in that is primarily intended for displaying complex 3D animation sequences for entertainment and e-commerce purposes. Windows-based modelling tools.
Game Engines
A number of virtual worlds and VR applications have been developed using PC-based game engines such as the 3D engines used by Doom, Quake, and Unreal. Engines such as Unreal's have quite powerful scripting languages, but tend to work best for virtual worlds that are similar in structure to those that the engines were designed for. These engines tend to sacrifice general-purpose 3D support for performance and visual effects, so they do what they are designed to do very well but are not one size fits all solutions for 3D applications. Cross-platform support tends to be limited.
Proprietary VR Software Systems
There are a number of software systems that are targetted specifically towards developing VR applications, although a number of these products have been refocused towards 'virtual prototyping', concentrating on the CAD-CAM market. Unlike the Web3D formats, these systems typically come with support for different VR I/O devices and 'exotic' VR workstations and display systems. Examples include DIVISION, Vega, Opticore, Sense8. Unlike game engines, these VR systems tend to be generic in nature, supporting a wide variety of virtual worlds, with fewer limitations on the structure of the geometry data. The greatest strength of these systems lies in the tools that are provided for building virtual worlds.
High-level Application Programming Interfaces
The greatest flexibility and ease of use (for programmers) is offerered by high-level 3D graphics APIs. These enable programmers to build stand-alone applications with 3D capabilities relatively quickly and easily compared to using lower level APIs such as OpenGL. Most high-level APIs have 'loader' mechanisms that are used to read data into an internal datastructure which the programmer has access to via API calls. Most APIs have loaders for VRML, DXF, OBJ, and other common 3D file formats.
The most popular APIs include:
- Java 3D
- Java 3D is a network-centric, scene graph-based, platform independent API for building 3D applications and applets in Java. It is designed to run on top of a lower level APIs such as Direct3D and OpenGL. It is currently available for IRIX, HP-UX, Solaris, Linux and Windows.
- Open Inventor
- A scene graph-based C/C++ toolkit for building interactive 3D applications. It is built on top of OpenGL and has it's own file format for 3D data interchange (which was used as a basis for VRML). It is window system and platform independent. On the 15th August 2000, SGI made Inventor open source under the LGPL in order to facilitate porting to Linux. Inventor clones on Linux, such as SIM Coin, are also under development.
- Performer
- While Inventor is a general purpose 3D toolkit, Performer is designed for maximising performance for visual simulation
- systems with support for high-end multi-processor and multi-pipeline systems. While Inventor is great for animation, modelling and visualisation software that integrate with a traditional windowing environment, Performer excels for systems that are run full-screen, such as virtual reality systems and vehicle simulators. The Performer libraries have C and C++ bindings and are available for IRIX and Linux x86.
-