3D Technologies

Ken Webb, 1999

VRML is only one of many 3D technologies. I chose it after looking at a range of options. It's not the best technology available, but it's easy to use, it's standardized (ISO 14772), it's well documented, real products are available from many different vendors, there's a standardized API for interacting with VRML worlds, and basically it does all of what I need for prototyping. I can write applications that interact with VRML worlds using C++, Java, Visual Basic and probably other languages. VRML is designed to work either over the internet, or using files on a local hard disk.

Implementations are available for a variety of platforms including Windows NT/95/98, Silicon Graphics, other Unix platforms, Linux, and Macintosh. Users can view 3D worlds using a variety of free downloadable viewers, plugins for Netscape and Internet Explorer, as well as stand-alone viewers. Sun's Java3D includes a VRML loader. Free source code is available from a number of vendors, although subject to different licensing arrangements.

The current version is VRML 2, also called VRML97. Standardization efforts are well under way to produce an XML compliant version of VRML97, called X3D.

One alternative to VRML is to directly use the lower level rendering technologies such as OpenGL or Direct3. 3D games use these lower level interfaces directly. OpenGL is available on most platforms and was initially developed by Silicon Graphics for their own workstations, while Direct3D is Microsoft's 3D technology for developing games on Windows PCs.

There are also a lot of other 3D technologies under development including GEL, Maverick, etc. GEL is a distributed 3D technology. Most of these are university or other small-group projects.

Shared Memory

If all attributes of a RRT model were in shared memory, it would be relatively straight forward to get any type of statistics from the running system.

You could press Stop from the toolset and then run any client program that would read data in shared memory. Or there could be mutexes/semaphores to allow multi-process synchronization.