Distributed Open Inventor: A Practical Approach to Distributed 3D Graphics

Project duration: 1999-2000
Funding: Austrian Science Foundation under contract no. P-12074-MAT 
Contact: Gerd Hesina, Dieter Schmalstieg


Distributed Open Inventor (DIV) is an extension to the popular Open Inventor (OIV) toolkit for interactive 3D graphics. The toolkit is extended with the concept of a distributed shared scene graph, similar to distributed shared memory. From the application programmer's perspective, multiple workstations share a common scene graph. The proposed system introduces a convenient mechanism for writing distributed graphical applications based on a popular tool in an almost transparent manner. Local variations in the scene graph allow for a wide range of possible applications, and local low latency interaction mechanisms called input streams together with a sophisticated networking architecture enable high performance while saving the programmer from network peculiarities.


A general-purpose distributed graphics toolkit should not place programming complexity on the programmer, or it will not be used. In particular, the programmer should not be forced to change the usual work style because of distribution. Obviously, a straight forward approach to achieve this requirement is to extend a toolkit that programmers are already familiar with to support distribution in a transparent way so that existing code continues to work with no or only minor modifications and new applications can be written without learning a new framework.


OIV is implemented as an object-oriented class hierarchy in C++ and a library for runtime binding. The obvious choice of adding distribution properties to a class hierarchy is to modify one of the base classes to take care of distribution, so that this property is inherited throughout the class hierarchy. Unfortunately, Open Inventor as a commercial product is not available in source code, which ruled out this approach.

Instead, we resorted to a different approach which is equally feasible and works even if no source code is available: OIV has a built-in concept of notification that is used to propagate updates upwards in the scene graph hierarchy if a node is modified. These notification events can be monitored with a so-called node sensor. A user-specified callback function is executed whenever something changes in the sub graph associated with the node sensor. The callback receives as parameters references to the field which has changed and to the node containing the field. Update messages can trivially be constructed from this information, as only the new absolute value of the field needs to be transmitted (idempotent messages). If you are interested in more information please use the links below.



    I will make an open-source version available in the near future. (approx. Jan 2001)


Several distributed multi-user applications were implemented with DIV. To verify that DIV indeed provides a programming environment that is convenient for programmers familiar with scene graph toolkits, and that distribution is almost transparent, we have extended existing single user applications written for OIV.

Application: This shared maze game allows users to collaborate (or work against each other) using multiple workstations. We modified the original version (single user only, no distribution) of the maze game from SGI and used DIV for distribution.
Application: The shared spraying application (developed using our augmented reality environment Studierstube and DIV) allows multiple users to paint collaboratively. The right image shows a user drawing a rubber band, which is an example of a local graphical variation connected to an input stream. Note how the second user's view (left image) does not show the rubberband.

This page was last updated by Gerd Hesina on November 27, 2000.
If you have any comments, please send a message to hesina@cg.tuwien.ac.at.