Siggraph 2001 BOF Report

Attendance at the BOF this time was rather small due to some severe competition from both the Web3D Roundup and OpenGL BOF. Approx 30 people showed throughout proceedings.

Most of the BOF was concerned with upcoming Java3D work - both 1.3 and 1.4. There were 4 speakers. Michael Schulman introduced everything, then Kevin Rushforth spoke about 1.3 and Doug Twilleager about 1.4. At the end Julian Gomez spoke about some forthcoming efforts in combining 3D/J3D into business systems.

The following are notes based on the slides and what was discussed at various points.

Development timescales

  • 1.3 public beta Q4 2001, probably late October.
  • 1.3 FCS Q1 2002, dependent on JDK 1.4 release date
  • 1.4 Call For Experts Q4 2001

1.3 Features

  • Depth-sorted transparence
  • Per-view objects
  • GeometryArray enhancements
  • Piles of texture enhancements
  • Raster destination can now use screen pixel offsets
  • Behaviour synchronisation and performance updates
  • Alpha based behaviours can now be paused
  • scale-invariant OrientedShape3Ds
  • OrderedGroup can now re-order children through a mask
  • Audii improvements and environment parameters

Performance improvements

  • Improved memory usage by cutting down on internal structures, removing all dynamic memory allocation (no GC due to Sun code) and internal list handlers become optimised.
  • Optimise scene graph updates. Major areas of focus are transform updates appearance changes, lights and LODs.
  • Performance optimisations are specifically targeting:
    • Geometry by-reference
    • Texture image handling
    • Scene anti-aliasing
    • OrderedGroups
    • Behavior schedular
    • Reduction in scene setup time

2D Optimisations

There's a lot of work happening here but most of it is to enable alternatives to directly using the Graphics3D that is already available. Sun acknowledged that using the Graphics interface basically sucks for performance and that there is nothing that they can do about it. In order to help with this, the idea is to allow the user to deal with their own information and pass that to Java3D. In particular, the suggested approach to provide 2D overlays that users should create their own BufferedImage and then pass that to Java3D to render. Sun will optimise J3DGraphics2D.drawImage() so that this is possible with minimum performance cost.

In addition to this, Raster code will now accept screen pixel offfsets for smaller work. The effect of this, plus the other overlay work in development will be to effectively eliminate the need for Text2D.

Utility Classes

Apparently huge numbers of small changes so most is not mentioned. The two items of interest are a new ultiitle callled ConfiguredUniverse that will automatically set up the world for single, multi-screen and HMD systems. This will replace SimpleUniverse for 99% of applications.

The second utility to be added is the Scenegraph I/O package that people have been introduced to in the J3DFly demo from Sun.

1.4 Discussion

Presented were a list of ideas and requirements that are likely to be considered in the 1.4 spec. These are to be considered as discussion points so that the real requirements can be nailed down as tightly as possible before the spec process starts. This will ensure that the spec process takes the minimum time rather than just going in with a completely open slate.


  • Visibility/Picking/Collision: Interfaces provided to allow changed or optimized versions of these functions. It is possible the picking utils will move into the core.
  • Rendering devices. Adding new rendering devices such as a software renderer or haptic devices.
  • Threads: Allowing the user to provide, extend or change some of the internal threads. For example haptic systems may need to run at hundreds or thousands of times a second rather than the 10-100 of the visual renderer.
  • Native context information: One of the most requested features so that users can access the native OpenGl or DirectX system.
  • The extensibility will not allow the user to override existing semantics, such as the meaning of a Node or structure.

Programmable Shaders

Currently a very hot topic in the graphics community. Problem is that current shaders are hardware specific. The J3D team wants to build a hardware agnostic system.
  • Vertex and Pixel shaders will be supported.
  • A high-level language that is hardware independent: This will likely be RenderMan-like and will most certainly not be Java classes. There are a couple of papers here convering ideas on this, but Sun seem to want to be even more generic.
  • There will be a shader pipeline concept that allows you to insert operations at any step. You can just define rasterisation only code for example.
  • For cross-platform capabilities, the language is compiled at runtime.

Advanced Rendering Techniques

  • Shadows
  • Reflections
  • Ancillary buffers will be made available for things like stencil and frame buffers.
  • Trying to decide whether buffer information should be implicit "Make it always available in this mode" or have an explicit multi-pass rendering API.


  • Geometry picking may become part of the core
  • Behavior semantic changes such as per-view behaviours and allowing them in shared groups.
  • Suggestions for anything else to consider?

J3D and IT

This is thoughts for a new community that involves merging/providing Java3D capabilities in the IT/Business market sector. A lot of it is implicit generation of 3D data visualisation without the need to be a 3D programmer. As such, it is complimentary to both Java3D and the J2EE worldviews. The basic philosophy is to make this equivalent to how EJBs work with relational databases.

The system needs to be cross platform and Julian is looking to start a working group to consider the issues. There is no direction for a formal new area such as a JSR at this stage although at some time in the future there may be. For example, this group would aim to provide suggestions for changes to the Java3D API both in 1.4 and the future.