Studierstube Augmented Reality Project

   Home       Research       Development       Projects       Search   

SignPost 2 - Software Design

Idea

Traversing OpenInventor scene-graphs takes a lot of time. To reduce the size of the complete scene graph and to use the automatical caching feature of OpenInventor we developed a client/server-like architecture. The idea was, that the server provides a parameterizable scene graph, which can be customized by the clients in a quite flexible manner. To parameterize the scene-graph, we used OpenInventor, which can be influenced from the outside of the scene graph. This can be done using the so called states. The states are acessible from each node in the scene-graph and are modified during traversal. Several nodes rely their behavior on this states. We use following nodes: the SoSwitch node with its inheritance feature, the SoMultiSwitch, also with its inheritance feature, and a special set of nodes, conssiting of SoContext, which modifies a special context state and SoContextSwitch, which acts on the state modified by SoContext.

The Server

The SoBAUKit scene graph represents a building and its rooms. A building (BAUBuilding) contains several rooms. Each room contains geometry, portal and neighbor information.
The geometry information consists of several sets of polygons: wall, floor, ceiling, portal and special. For each of  them, different rendering styles can be set. The set of styles to be used is defined by the context value while traversing the ContextSwitch. To display only a subset of rooms, the MultiSwitch is used.




The Client

The client is a special node called BAUClient. it can be used like an ordinary OpenInventor node. Actually, the BAUInstance, an internally used node, contains a reference to the
BAUBuilding. The BAUBuilding reference is acquired automatically by the BAUClient during its initilization phase of the node: It searches for a BAUKit and invokes the createInstance method, which returns a pointer to the BAUBuilding. The BAUClient wraps these actions to 'hide' it from the programmer.





On the following image you can see the interaction between  BAUClient nodes and the BAUKit. The arrows denote dependencies in the following way: blue arrows denote references, red arrows inheritance and green arrows context-states.



The Applications

WIM - World-In-Miniature

The World-In-Miniature is a small representation of the building modell floating in fron of the user.



AUG - Augmentation

The Augmentation augments the reality with a wire-frame model of the rooms.


  Webmaster studierstube.icg.tu-graz.ac.at