Getting started with 3D programming requires a bit of math (Vectors and Matrices) and a programming language with access to a 3D API. In Java 3D programming is typically done using the cross-platform OpenGL API, but there do also exist a bridge to Microsoft’s Direct3D.
Most often, programming your 3D applications at this level will get very complex, at least if you plan to create a more medium to large application such as a game. Instead of using the low level API, you would usually use a 3D scenegraph that hides much of the complexity and enabled you to be more productive. A 3D scenegraph is sometimes referred to as a 3D game engine, since they are often targeted games and has features such as sound, input and particle effects.
In the Java world there exist a number of different alternatives. I’ll describe four different 3D scenegraphs that I find interesting: Java3D, JMonkeyEngine, XInth and Ardor3D.
Java3D is the standardized way to develop 3D applications using Java. The Java3D is a scenegraph developed by Intel, Silicon Graphics, Apple and Sun, and the first public version was released in 1998. Java3D encapsulate the underlying 3D API and supports both OpenGL and Direct3D. Many books has been published about the Java3D API.
Java3D is released under GPL version 2 with the CLASSPATH exception
The JMonkeyEngine (also known as jME) is a scenegraph engine inspired by David Eberly’s C++ book 3D Game Engine Design. Currently jME exist in a stable version 1.0 and a beta version 2.0. The jME has a huge community site and has many tutorials and examples.
jME is released under the BSD license
Xith3D project is another 3D scenegraph. Is has a very good introduction book Xith in a Nutshell that explains the basics. You are encouraged to download the latest source and build the binaries yourself.
Xith3D is released under the BSD license
Ardor3D is started by two of the former jME developers. The goal of Ardor3D is to created a more professionally oriented engine. The Ardor3D is actually a fork of jME. The Ardor3D is still a very young engine and therefor lacks tutorials and documentation.
Ardor3D is released under the libpng/zlib license
But what engine is the most popular? I have used the number of forum threads per month to measure the popularity:
Please note that the number of forum threads per months may not be the perfect ways to measure the popularity; Java3D seems to be a only a medium popular API, but I believe that this API is discussed in many other places than the official sun forum. I don’t think that is true for the other API’s.
The number of threads in the Ardor3D seems surprisingly high for a new technology. The reason for this high number of threads is that the Ardor3D forum also is used between the Ardor3D developers discussing implementation details about the API, where forums of other APIs is targeted users of the API.
The forum activity hints that the popularity of programming in 3D using Java is increasing. And I expect this to popularity to grow dramatically once the new JavaFX platforms enters the 3D era.