3D Graphical User Interfaces for Web Pages


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.

Vizmo home

link to Virtual Trackball applet
Virtual Trackball applet

 

link to 3D Etch-O-Sketch applet
3D Etch-O-Sketch applet

 

link to Geometric Twister applet
Geometric Twister applet