Collaboration in CAVE6D.

        Difficulties and the Solution
        Information transmitted across the Network.
        Network Topology.

Using CAVE6D.
        Compile Instructions
        Running Instructions.
Related Links.

Contact Information.



Cave6D, co-developed by Abhinav Kapoor, Jason Leigh, and Andrew E. Johnson, at the Electronic Visualization Laboratory, is a Collaborative Virtual Environment , that allows multiple users of Cave5d to share a same environment and  interact with each other synchronously. It merges CAVERNsoft into Cave5d to give it the Collaborative abilities that are needed to enable multiple users to interact with each other.



Cave5D, co-developed by Glen Wheless and Cathy Lascara from Old Dominion University and Dr. Bill Hibbard from the University of Wisconsin-Madison, is a configurable virtual reality (VR) application framework. Cave5D is supported by Vis5D, a very powerful graphics library that provides visualization techniques to display multi-dimensional numerical data from atmospheric, oceanographic, and other similar models, including isosurfaces, contour slices, volume visualization, wind/trajectory vectors, and various image projection formats.  The Cave5D framework integrates the CAVE VR software libraries with the Vis5D library in order to visualize numerical data in the Vis5D file format on the ImmersaDesk or CAVE and enables user interaction with the data.



CAVERNSoft provides the software infrastructure for supporting Collaboration in CAVE5D. It retrofits CAVE5D, previously a non Collaborative application, with Tele-Immersive capabilities.  The existing functionality of CAVERNSoft is too extensive to describe here. See the CAVERNSoft homepage for more details.

Briefly, this framework employs an Information Request Broker (IRB) as the nucleus of all CAVERN-based client and server applications. An IRB is an autonomous repository of persistent data managed by a database, and accessible by a variety of networking interfaces. This hybrid system combines the distributed shared memory model with active database technology and real-time networking technology under a unified interface to allow the construction of arbitrary topologies of interconnected, tele-immersed participants.


Collaboration in CAVE6D:

The  tele-immersed participants see the world in their own perspective, and can navigate around freely in the space. One hand and the head of the participants are tracked which are then depicted as an "avatar". This avatar could convey gestures such as nodding of the head, pointing at the objects etc.

Fig1. An Instance in a 4-Way CAVE6D Collaborative Session

The purpose of collaboration though, is not just to provide a sense of virtual co-presance of the other users, but also allow them to interact with each other. A set of Interface Panels, enable the participants to activate the objects to be visualized, and set other parameters such as control the time clock, or change the x,y,z scales of the world . Besides, they can also communicate through audio, via a telephonic conference call. Audio is the most important and perhaps a neccesary component of a Collaborate Session. The Visualization Parameters such as Salinity, Circulation Vectors, Temperature and Wind Velocity Slices, larval fish distributions etc. that can be visualized in Cave5d, have been extended in Cave6d to allow participants to collectively operate them. The participants can turn the graphical objects in the environment on/off locally, where the changes effect one's own view, or globally, affecting everyone's view.  All  participants have equal control over these options and one can turn on or turn off the global option at any time. This way the user is given the flexibility to either follow the set up laid by another participant, or disregard them and set their own environment.

There is a global time synchronization, and so the time dependant variables are concurrently changing. This way the participants can visualize the time varying data synchronously,at the same instant of time in the time cycle, which is a scaled down period of time over which the data is collected for visualization. Unlike the option of locally setting one's own set of graphical data objects, the time control is intentionally made  globally synchronised at all the time.



The backbone of all the collaborative abilities of CAVE6D is the Information Request Broker (IRB). The IRB provides a unified Interface to all the Networking and Database needs of the Collaborative Environment  to support the distribution of data across the clients. Each Client/Server has its own 'personal' IRB, which is used to cache data retrieved form the other IRBs. This is done by creating a communication link, a channel, between the personal IRB and the remote IRB and declaring its properties. Once the channel is set up, a number of keys can be created across the channel, and linked together by giving them a unique identification. A Key acts as a sort of a handle to the storage location in the IRBs' database. These can then be set to trigger a callback whenever they get filled by some data ,  which can then transmit the data to the remote key through the link. This way the personal IRB transparently manages data sharing with the remote subscribers. Any information received by a key is automatically propagated to all the other linked keys.

Difficuilties and the Solution

 An IRB Interface present between an IRB and the  application, provides a tightly coupled mechanism, to automatically transfer messages between the two. In Cave5D however, this idea could not be properly exploited due to a conflict in the integration of Cave5d and CavernSoft. CAVERNsoft is based on pthreads ( the POSIX threading model)  which are not supported by the 'sproc' model of threading, as used in CAVE5D. Thus the IRB interface could not be embedded directly into Cave5d. Instead a shared memory arena was used between them, as shown in the diagram below

Fig.1 A High Level Flow Diagram of CAVE6D

Two shared memory arenas are created, one on which the IRB writes the data it gets from the remote IRB, to be read by the local CAVE6D application, and the other, where the local application writes its data, and from where the local IRB reads and sends it over to the remote IRB.

Information transmitted across the network
It is to be noted that, all the  Clients have a replicated database which is being visualised. This is not transported across in the network. The data which is actually sent across is a fixed size packet, consisting of information such as the user tracker information, the state and location of the graphical parameter objects and other environment state variables and parameters. Tracker information is sent so that the avatars can be drawn in place of participants in the virtual scene. The time frame values are sent, which are used to keep the clients in synch so that all of them  see the same time frame in the simulation of the data. The graphical objects state information help to enable the global control over their settings. A future goal, though, is to have a shared centralised database and provide a real time access to it.

Network Topology

A Shared Centralized Network topology is used in Cave6d, wherein all the clients connect to a Server. All the client IRBs invoke a link to send the information to this central Server IRB.  Each client links a key to the Central Server's key, the latter being capable of accepting links from all the Clients. Each client IRB transmits continuous packets of data of the local state information to the Server, at constant small time intervals. The Server on the other hand, recieves all these packets, and each time it recieves such a packet it sends this packet to all the connected Clients. It also sends its own local information, at constant time intervals like the other Clients. In this way, each client gets information of all the other connected remote Clients.


Using CAVE6D
    Hardware - The distribution package needs 25MB of space, which has in it 2 demonstration data
                              set files. The Chesapeake Bay data set is another 250MB. Would be best viewed on
                               an Idesk driven by SGI Onyx 2 / Octane. 
     Software  - CAVE Library, CAVERNSoft Library, pthreads patched IRIX Operating System.

Compile instructions:

Certain paths in the Makefile would need to be changed
to point to the libraries and includes on your system
(See Makefile)

then type

make cave6d
(to compile cave6d)

then type
make irbsend
(to compile irbsend)

Running Instructions:

In CAVE6D one machine will act as the server and all
the others, will link up to it as clients.

1. CAVE6D running as the server

On the machine which is designated to be the server, eg. on
laurel, type :

irbsend &

This process should be started before anything else, and can be kept running on itself without
the application, so that all the clients can link up to it and establish the connection at any time.

After the irbsend process is ready ie. after it prints a message:


the application can be started. The information on how to run the application is mentioned below.

2. CAVE6D as a client
On the machine which would be the client, eg. hardy, and connecting to the server eg. laurel,
type the following on the client ( hardy)

irbsend laurel &

Again, when the irbsend prints the message ..

CAVE6D application can be started.

NOTE: The irbsend uses the default frequency of sending 10 packets
      a second, to the remote end. The frequency can be set from the
      command line, using the following command:
      irbsend [server-name] [ -<f || freq || frequency> <rate> ]
      where rate is the frequency rate you might want to set,
      and any of -f , -freq or -frequency option can be used, before
      it. eg.
      irbsend -f 15 & ( for the server irbsend process sending at
         15packets/sec.) or
      irbsend laurel -f 15 & ( for the client process )
      irbsend laurel -frequency 20 ( for client process sending at
               20 packets a second )

3. Running CAVE6D

The Command line for cave6d is:

cave6d <config-file> <name> [avatar-color]

where <config-file> is the path to the data-set file (see below).
      <name> is the name of the user,
      [avatar-color] is OPTIONAL and need not be mentioned,
                     unless you want your avatar to be of a
                     particular color.
Currently CAVE6D can connect upto a maximum of 5 participants. The
avatar-color could be one of cyan / magenta / red / blue / white.

4. Config Files

There are 2 sample data sets included in the package:
a. demos/lamps.cave5d
b. demos/tstorm.cave5d

The command line config-file could be one of these files.

The Chesapeake Bay dataset is around 250 MB, so it is not included this package, but can be obtained
seperately on request. It is included in the CAVE6D CDROM.

To prepare a config-file to be used by cave6d, it should have the  proper paths to all the data files.
So you must open the relevant  .cave5d file and see if all the paths are mentioned correctly.

The first data set, the lamps.v5d dataset was generated by the Limited Area Mesoscale Prediction System
around1986, and thus represents an early effort at mesoscale weather prediction. It shows warm and cold
fronts moving across the continental United States, as part of a simulation of an extratropical cyclone.


1. Press the left mouse button to bring up the main menu- the Master menu ..
   The various menu items in it are as follows :

     Release Version
     Identifies release number of cave5D. Clicking on this button toggles between the two rotation
     styles: object and airplane.

     Graphical Objects
     Display the panel with graphical objects.

     Toggle scaling of X,Y,Z dimension on/off.

     Increase the animation speed.

     Decrease the animation speed.

     Reset to first timestep.

     Move forward one timestep

     Toggle animation On/Off

     Close this panel.

     Exit the application.

Wand Interactions:

a.     Rotation:  to rotate the scene around , press the middle wand button and move the
         wand in the direction on intended rotation.
b.     Move Slice ( Graphical Objects ) - The objects to be moved should be in the movable
        state ( indicated by black text on yellow  background ) and then moved by clicking on the
        right mouse button, and moving the wand in the direction of the new position on the Slices.
c.     To make the  graphical objects  global ( seen in the same position and the state by all the
        participants )  turn on the corresponding G/L  option  on the graphical object menu ( ie blue text
        over yellow background ) . If they are Local ie. yellow text over blue background,  then you can
         move them without changing the remote users' view. 

For an example walk through using the LAMPS data set, click here.

Related Links:

For questions and comments, please contact:
Abhinav Kapoor,
Jason Leigh,