We have developed a three-dimensional graphical user interface
(3D GUI) API for Java that is geared towards building interfaces
for applications on Web pages.
This package of Java classes is optimized for speed, size and
compatibility across web browsers.
GUI development is facilitated by a simple scene graph framework.
Views of a scene graph are painted onto a simple AWT component
that extends java.awt.Canvas and encapsulates the java.awt.Image
that is the primary target of the renderer.
Typically, visual simulators render in a busy loop.
Our framework is different in that rendering only occurs
when a scene graph node makes a request, as would occur
if a user was interacting with the geometry associated
with the node.
This approach imposes a smaller computational load while
being well suited to GUI displays that do not change
except in response to users' actions.
AWT input events are propagated through scene graphs to
3D GUI objects which may respond in various ways,
notifying attached listeners and providing visual feedback.
This event-based rendering approach scales well since
a complex interface can be built from mosaics of GUI
canvases in which an AWT event is processed by only one
component that involves just a fraction of the interface's
geometry and requires that only part of the scene be redrawn.
This package is implemented purely in JDK1.1 so that applets
based upon it should work in most web browsers
in use today.
Classes are kept simple so that complex interfaces can
be implemented in small applets, usually requiring less than
100KB to download.
We have not yet implemented smooth shading (e.g., Phong or Goraud)
or anti-aliasing, trading off a degree of graphics quality
in return for more responsive interactivity.
|