We use an in-house visualization system, called Spray , as our start off point for designing a collaborative visualization system. The single user version of Spray provides the users with a metaphor of grabbing spray paint cans loaded with special particles. As these particles enter the data space, they look for features of interests and display them as geometric primitives (e.g. points, lines, polygons, etc.). These are the visualization results. The cans are usually loaded with different types of particles. Each type of particle will produce different types of visualization effects (e.g. contours, iso-surfaces, streamlines, etc.).
In a typical single user session, a user would create and load some spray cans with different types of particles. The user would then open data files and associate one or more of them with each spray can. Each of these cans can then be grabbed, moved, and sprayed in turn. In effect, the user incrementally creates the visualization product through successive applications of different spray cans. At any time, the user can also move about and change viewpoints within the data space.
The extension of Spray to support collaboration among geographically distributed researchers is called CSpray which stands for Collaborative Spray. From the system point of view, CSpray has a symmetric architecture. To initiate a collaborative session, one of the sites starts up its CSpray application. Other participants then start up their own CSpray to connect to the first participant which is acting as a ``server''. Each CSpray application is identical to the others so that any of the applications can run as the ``server'' when the first participant decides to leave the session. Communication among participants are currently done with TCP/IP connections. While it does provide reliable data transfers, it also requires participant to participant (i.e. N^2) connections. We are looking at other alternatives, e.g. reliable multi-casting, to support larger number of participants.