Distributed 3D Graphics (in Java)


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.

  1. Read the following paper on distributed 3D graphics. Depending on your desired domain, others papers may be suggested.
  2. Select a target application domain. For example, Repo-3D (described in that paper) was aimed at exploratory programming of small-scale distributed graphical applications. You may look at that domain, if you wish, or select another (e.g., large-scale 3D games, distributed simulation, collaborative virtual worlds, heterogeneous ad-hoc systems, etc.) Discuss your ideas with Dr. MacIntyre.
  3. Define the issues that should be address by a distributed 3D graphics package, focussing on ones that are particular to your domain.
  4. Investigate the available data distribution packages for Java, and evaluate their appropriateness for this domain. Alternative, non-Java-based data distribution packages may also be considered, especially if they are more appropriate.
  5. Propose a design for a distributed library, and discuss how it does (or does not) address the needs of your domain.
  6. (Optional) Depending on time, and interest, you could implement a simple prototype to demonstrate your ideas. This will probably only be feasible if you already have significant background in distributed systems and Java.

Background

Deliverables

Evaluation

Based on the report turned in to the sponsor of the project by the due date.

REFERENCES

  1. Blair MacIntyre (1999), "Exploratory Programming of Distributed Augmented Environments," PhD Dissertation, Department of Computer Science, Columbia University.
  2. Blair MacIntyre and Steven Feiner (1996). "Language-level Support for Exploratory Programming of Distributed Virtual Environments." In Proc. ACM UIST '96, pages 83-94, Seattle, WA, November 6-8.
  3. Blair MacIntyre and Steven Feiner (1998), "A Distributed 3D Graphics Library," In Computer Graphics (Proc. ACM SIGGRAPH '98), pages 361-370, July 19-24, Orlando, FL.