| Sponsor | Blair MacIntyre blair@cc.gatech.edu 239 CoC |
| Area | GVU (Graphics)/Systems |
Introduction
Traditionally, distributed graphics has referred to the architecture of a single graphical application whose components are distributed over multiple machines. By taking advantage of the combined power of multiple machines, and the particular features of individual machines, otherwise impractical applications became feasible. However, as machines have grown more powerful and application domains such as Computer Supported Cooperative Work (CSCW) and Distributed Virtual Environments (DVEs) have been making the transition from research labs to commercial products, the term distributed graphics is increasingly used to refer to systems for distributing the shared graphical state of multi-display/multi-person, distributed, interactive applications. This is the definition of distributed graphics that interests us.
While many excellent, high-level programming libraries are available for building stand-alone 3D applications (e.g. Inventor, Performer, Java-3D), the only similarly powerful and general library for building distributed 3D graphics applications is Repo-3D [3], a high-level toolkit we created as part of Coterie [1,2], a testbed for exploratory programming of distributed interactive applications. The approach taken by Repo-3D contrasts sharply with the approach taken by most current CSCW and DVE systems. In Repo-3D, the objects that comprise the graphical state are distributed directly, whereas in most systems a mechanism is provided for distributing application state (either a custom solution or one based on a general-purpose distributed programming environment), and the graphical state is maintained separately in the local graphics library. Keeping these "dual databases" synchronized is a complex, tedious, and error-prone endeavor. The approach taken with Repo-3D is based on that taken by some non-distributed libraries, such as Inventor, which allow programmers to avoid this "dual-database" problem by using the graphical scene description to encode application state. Extending this "single database" model to a distributed 3D graphics library was the goal of our work on Repo-3D.
Project
The goal of this project is to investigate the issues related to high-level, distributed, 3D graphics toolkits. You will select a target application domain and propose a high-level design for a distributed 3D graphics API suitable for that domain. In our previous work, our focus was on prototyping and exploratory programming, using a custom data distribution package that was tightly integrated into our programming language (Modula-3). In this project, you will explore another domain, and consider the tradeoffs involved in using a mainstream language (Java).
Here is what you need to do.
Background
Deliverables
Evaluation
Based on the report turned in to the sponsor of the project by the due date.