JAVA 3D

1.What is Java 3D?

Java3D is a low level 3D scene-graph based graphics programming API for the java language. It does not form part of the core APIs required by the Java specification. The class libraries exist under the javax.media.j3d top level package as well as utility classes provided in javax.vecmath.

A low level API provides routines for creation of 3D geometeries in a scenegraph structure that is independent of the underlying hardware implementation for realtime programming. The API provides scenegraph compilation and other optimization techniques. It is heavily optimised towards the requirements of realtime 3D rendering and hence does not contain capabilities for photo-realistic rendering effects used to produce movie quality images (ie ray-tracing or radiosity based rendering algorithms).

The Java3D API consists of two parts: The API Specification and the implementation. Java3D mainly consists of the API specification. Anyone may implement the spec. Sun also provide an implementation of this specification but is encouraging 3rd party developers to implement J3D directly to the hardware.


2. What alternative APIs are available?

Depending on how close to the metal you want to go, there are a number of alternate Java-based scenegraphs and APIs.

Starting at the bottom, there are the OpenGL bindings JOGL and LWJGL. Next up are scene graphs built on these. The most well known are: Xith3D, jME and our own Aviatrix3D


3. What is the future of Java 3D?

Whatever you make of it. Sun has now released the source code to Java3D as a project under the Java.net site. The license is split between BSD for the utility code, and a SCSL-like license for the core runtime and vecmath parts. The current version of all the code is available in CVS, details of which can be found at the various subproject pages.

Java3D is now being developed as an open project (but not open source) through the java.net development group. 1.4.0 has been released and work is progressing on 1.5.0. The most recent information can be found at the j3d-core project homepage.


4. What's the difference between Java 3D and OpenGL/Direct3D/PHIGS/, etc?

Java3D is another 3D programming API that exists on a similar level to OpenGL, Direct3D, PHIGS and similar systems. It is designed to use hardware accelaration wherever possible based on the underlying graphics architecture of the OS. That is, J3D provides a 3D rendering API for the Java language, but at the same time it may use OpenGL to do the interface to the hardware. J3D does not require direct hardware device driver support like the other APIs because it could rely on them to build its functionality.

For unix users Sun's Java3D is implemented on top of OpenGL. For Win32 users Java3D is available for OpenGL and Direct3D.

There are Java bindings to the other APIs. JOGL is a Sun-driven opensource OpenGL binding that is being actively developed. There is also JSR 231 which will be the formal bindings to OpenGL. This is expected to be released in mid to late 2006 as a final release. A JSR is also in the process of being approved that will add Java bindings to the OpenGL ES specification. Finally, there is JSR-184 that defines a Java scenegraph API targeted at mobile devices. It's not Java3D, but looks somewhat like it, though with many structural differences.


5. Isn't using Java to do 3D graphics going to be slow?

Java3D is capable of taking advantage of graphics hardware in your system. The speed you see will depend on the quality of the graphics hardware on your machine.

You can also run Java3D on machines without special graphics hardware, but it will require software graphics libraries. Be aware that it won't run nearly as quickly in software alone as it will with dedicated graphics hardware.


6. Where can I get Java3D, and where is the Java 3D home page?

The current release version of Java 3D is 1.4.0 This can be downloaded at here for Solaris Win32 and Linux platforms. 1.5.0 is the next release, but has not yet reached alpha quality yet.

J3D.org maintains a comprehensive page for downloading J3D for all known platforms

The Java 3D Computing home page is located at: Java 3D Computing


7. Can you run Java 3D under JDK 1.1?

No. Java 3D requires the use of a number of Java 2 specific features in order to run that cannot be removed.

More specifically: Java 3D uses the GraphicsConfiguration classes to get screen information to decide how to do the hardware/software rendering. Java 1.1 does not provide this therefore no implementation of Java 3D will ever run on Java 1.1.


8. Who Uses Java 3D?

j3d.org maintains a list of sites that use Java 3D as well as a number of other interesting Java 3D related links. Please visit it!

Java3D is being used in many different application environments. There's a highly publicised use of J3D in a CAVE in Canada (see Sun's Java3D homepage for a link to the whitepaper) down to the PC. We're not aware of J3D being used in small footprint devices like PDAs and mobile phones.


9. What Platforms Does Java 3D Run on?

In runs on Linux, Win32 and most Unices and Mac OSX 10.3 (Panther). Earlier versions of Mac OS are not supported. Mac support is heavily dependent on Apple and not the Java3D team. It runs on different release cycles.

j3d.org maintains a complete list of Java 3D implementations that you can check out to download the software for your platform

1 comment:

Anonymous said...

You are spanning the Java3D forum.
If you don't stop with this you will be banned.