Distributed Open Inventor: A Practical Approach to Distributed 3D GraphicsProject 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.
|
|
Gerd Hesina, Dieter Schmalstieg, Anton Fuhrmann, and Werner Purgathofer appeared in: Proceedings of the ACM Symposium on Virtual Reality Software and Technology (VRST'99), pp. 74-81, 1999. |
|
|
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. |