An architecture for distributed and collaborative visualization is presented. The design goals of the system are
to create a lightweight, easy to use and extensible framework for reasearch in scientific visualization. The system
provides both single user and collaborative distributed environment. System architecture employs a client-server
model. Visualization projects can be synchronously accessed and modified from different client machines. We
present a set of visualization use cases that illustrate the flexibility of our system. The framework provides a rich
set of reusable components for creating new applications. These components make heavy use of leading design
patterns. All components are based on the functionality of a small set of interfaces. This allows new components
to be integrated seamlessly with little to no effort. All user input and higher-level control functionality interface
with proxy objects supporting a concrete implementation of these interfaces. These light-weight objects can
be easily streamed across the web and even integrated with smart clients running on a user's cell phone. The
back-end is supported by concrete implementations wherever needed (for instance for rendering). A middle-tier
manages any communication and synchronization with the proxy objects. In addition to the data components,
we have developed several first-class GUI components for visualization. These include a layer compositor editor,
a programmable shader editor, a material editor and various drawable editors. These GUI components interact
strictly with the interfaces. Access to the various entities in the system is provided by an AssetManager. The
asset manager keeps track of all of the registered proxies and responds to queries on the overall system. This
allows all user components to be populated automatically. Hence if a new component is added that supports
the IMaterial interface, any instances of this can be used in the various GUI components that work with this
interface. One of the main features is an interactive shader designer. This allows rapid prototyping of new
visualization renderings that are shader-based and greatly accelerates the development and debug cycle.
|