Collaboration in CAVE6D.
Difficulties and the Solution
Information transmitted across the Network.
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.
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
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.
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.
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.
Certain paths in the Makefile would need
to be changed
to point to the libraries and includes on your system
(to compile cave6d)
(to compile irbsend)
In CAVE6D one machine will act as the server
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 :
This process should be started before anything
else, and can be kept running on itself
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:
"READY ... RUN CAVE6D NOW..."
the application can be started. The information
on how to run the application is mentioned
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
"READY ... RUN CAVE6D NOW..."
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
irbsend -f 15 & ( for the server irbsend process sending at
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
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 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
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 :
Identifies release number of cave5D. Clicking on this button toggles between the two rotation
styles: object and airplane.
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.
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.
For questions and comments, please contact: