Java 3D
Encyclopedia
Java 3D is a scene graph
-based 3D
application programming interface
(API) for the Java platform. It runs atop either OpenGL
or Direct3D
. Since version 1.2, Java 3D has been developed under the Java Community Process
.
Compared to other solutions, Java 3D is not only a wrapper
around these graphics APIs, but an interface that encapsulates the graphics programming using a true object-oriented approach. Here a scene is constructed using a scene graph
that is a representation of the objects that have to be shown. This scene graph is structured as a tree containing several elements that are necessary to display the objects. Additionally, Java 3D offers extensive spatialized sound
support.
Java 3D and its documentation are available for download separately. They are not part of the Java Development Kit
(JDK).
, Apple
, and Sun
all had retained mode
scene graph
APIs under development in 1996. Since they all wanted to make a Java version, they decided to collaborate in making it. That project became Java 3D. Development was underway already in 1997. A public beta version was released in March 1998. The first version was released in December 1998. From mid-2003 through summer 2004, the development of Java 3D was discontinued. In the summer of 2004, Java 3D was released as a community source
project, and Sun
and volunteers have since been continuing its development.
On January 29, 2008, it was announced that improvements to Java 3D would be put on hold to produce a 3D scene graph for JavaFX
.
Since February 28, 2008, the entire Java 3D source code is released under the GPL version 2 license with GPL linking exception
.
General purpose:
Gaming:
Visualization:
In addition to those, many other C or C++ scene graph APIs offer Java support through JNI
.
At a lower level, the JOGL (JSR 231) OpenGL bindings for Java are a popular alternative to scene graph APIs such as Java 3D. LWJGL
is another such binding.
Scene graph
A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
-based 3D
3D computer graphics
3D computer graphics are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images...
application programming interface
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
(API) for the Java platform. It runs atop either OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...
or Direct3D
Direct3D
Direct3D is part of Microsoft's DirectX application programming interface . Direct3D is available for Microsoft Windows operating systems , and for other platforms through the open source software Wine. It is the base for the graphics API on the Xbox and Xbox 360 console systems...
. Since version 1.2, Java 3D has been developed under the Java Community Process
Java Community Process
The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform....
.
Compared to other solutions, Java 3D is not only a wrapper
Primitive wrapper class
A primitive wrapper class in the Java programming language is one of eight classes provided in the package to provide object methods for the eight primitive types. All of the primitive wrapper classes in Java are immutable...
around these graphics APIs, but an interface that encapsulates the graphics programming using a true object-oriented approach. Here a scene is constructed using a scene graph
Scene graph
A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
that is a representation of the objects that have to be shown. This scene graph is structured as a tree containing several elements that are necessary to display the objects. Additionally, Java 3D offers extensive spatialized sound
3D audio effect
3D audio effects are a group of sound effects that attempt to widen the stereo image produced by two loudspeakers or stereo headphones, or to create the illusion of sound sources placed anywhere in 3 dimensional space, including behind, above or below the listener.There are several types of 3D...
support.
Java 3D and its documentation are available for download separately. They are not part of the Java Development Kit
Java Development Kit
The Java Development Kit is an Oracle Corporation product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java SDK. On 17 November 2006, Sun announced that it would be released under the GNU General Public License , thus making it free software...
(JDK).
History
Intel, Silicon GraphicsSilicon Graphics
Silicon Graphics, Inc. was a manufacturer of high-performance computing solutions, including computer hardware and software, founded in 1981 by Jim Clark...
, Apple
Apple Computer
Apple Inc. is an American multinational corporation that designs and markets consumer electronics, computer software, and personal computers. The company's best-known hardware products include the Macintosh line of computers, the iPod, the iPhone and the iPad...
, and Sun
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
all had retained mode
Retained mode
In computing, retained mode rendering is a style for application programming interfaces of graphics libraries, in which the libraries retain a complete model of the objects to be rendered.-Overview:...
scene graph
Scene graph
A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
APIs under development in 1996. Since they all wanted to make a Java version, they decided to collaborate in making it. That project became Java 3D. Development was underway already in 1997. A public beta version was released in March 1998. The first version was released in December 1998. From mid-2003 through summer 2004, the development of Java 3D was discontinued. In the summer of 2004, Java 3D was released as a community source
Community source
Community Source is a term that has different meanings based on context and the community where it is used.-Community Source as a Type of Open Source Community:...
project, and Sun
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
and volunteers have since been continuing its development.
On January 29, 2008, it was announced that improvements to Java 3D would be put on hold to produce a 3D scene graph for JavaFX
JavaFX
JavaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices....
.
Since February 28, 2008, the entire Java 3D source code is released under the GPL version 2 license with GPL linking exception
GPL linking exception
A GPL linking exception modifies the GNU General Public License to create a new, modified license. Such modified licenses enable software projects which provide library code, to be "linked to" the programs that use them, without applying the full terms of the GPL to the using program...
.
Features
- Multithreaded scene graphScene graphA scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
structure - Cross-platformCross-platformIn computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...
- Generic Real-timeReal-time computer graphicsReal-time computer graphics is the subfield of computer graphics focused on producing and analyzing images in real time. The term is most often used in reference to interactive 3D computer graphics, typically using a GPU, with video games the most noticeable users...
API, usable for both visualization and gaming - Support for retainedRetained modeIn computing, retained mode rendering is a style for application programming interfaces of graphics libraries, in which the libraries retain a complete model of the objects to be rendered.-Overview:...
, compiled-retained, and immediate mode rendering - Includes hardware-accelerated JOGL, OpenGLOpenGLOpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...
and Direct3DDirect3DDirect3D is part of Microsoft's DirectX application programming interface . Direct3D is available for Microsoft Windows operating systems , and for other platforms through the open source software Wine. It is the base for the graphics API on the Xbox and Xbox 360 console systems...
renderers (depending on platform) - Sophisticated virtual-reality-based view model with support for stereoscopic rendering and complex multi-display configurations
- Native support for head-mounted displayHead-mounted displayA head-mounted display or helmet mounted display, both abbreviated HMD, is a display device, worn on the head or as part of a helmet, that has a small display optic in front of one or each eye .- Overview :...
- CAVECave Automatic Virtual EnvironmentA Cave Automatic Virtual Environment is an immersive virtual reality environment where projectors are directed to three, four, five or six of the walls of a room-sized cube...
(multiple screen projectors) - 3D spatial sound3D audio effect3D audio effects are a group of sound effects that attempt to widen the stereo image produced by two loudspeakers or stereo headphones, or to create the illusion of sound sources placed anywhere in 3 dimensional space, including behind, above or below the listener.There are several types of 3D...
- Programmable shaders, supporting both GLSLGLSLOpenGL Shading Language , is a high-level shading language based on the syntax of the C programming language...
and CGCg programming languageCg is a high-level shading language developed by Nvidia in close collaboration with Microsoft for programming vertex and pixel shaders... - Stencil bufferStencil bufferA stencil buffer is an extra buffer, in addition to the color buffer and depth buffer found on modern computer graphics hardware. The buffer is per pixel, and works on integer values, usually with a depth of one byte per pixel...
- Importers for most mainstream formats, like 3DS.3ds3DS is one of the file formats used by the Autodesk 3ds Max 3D modeling, animation and rendering software.It was the native file format of the old Autodesk 3D Studio DOS , which was popular until its successor replaced it in April 1996...
, OBJ, VRMLVRMLVRML is a standard file format for representing 3-dimensional interactive vector graphics, designed particularly with the World Wide Web in mind...
, X3DX3DX3D is the ISO standard XML-based file format for representing 3D computer graphics, the successor to the Virtual Reality Modeling Language . X3D features extensions to VRML X3D is the ISO standard XML-based file format for representing 3D computer graphics, the successor to the Virtual Reality...
, NWN, and FLT
Competing technologies
Java 3D is not the only high-level API option to render 3D in Java. In part due to the pause in development during 2003 and 2004, several competing Java scene graph technologies emerged:General purpose:
- AgentFX
- 3DzzD, software and hardware 3D engine
- Strata Live 3D(tm)
- Standard3D Stereoscopic Browser Application platform
Gaming:
- Ardor3DArdor3DArdor3D is a scengraph based 3D game engine, written entirely in Java and utilizing OpenGL for high performance gaming and visualization.-History:...
- Xith3D
- jMonkey EngineJMonkey EnginejMonkeyEngine is a game engine made especially for modern 3D development, as it uses shader technology extensively. jMonkeyEngine is written purely in Java and uses LWJGL as its default renderer. OpenGL 2 through OpenGL 4 is fully supported....
- Espresso3D
Visualization:
- Aviatrix3D
- JView
- Jreality.
In addition to those, many other C or C++ scene graph APIs offer Java support through JNI
Java Native Interface
The Java Native Interface is a programming framework that enables Java code running in a Java Virtual Machine to call and to be called by native applications and libraries written in other languages such as C, C++ and assembly.-Purpose and features:JNI enables one to write native methods to...
.
At a lower level, the JOGL (JSR 231) OpenGL bindings for Java are a popular alternative to scene graph APIs such as Java 3D. LWJGL
Lightweight Java Game Library
The Lightweight Java Game Library is an open source Java software library for computer game developers.LWJGL exposes high performance cross-platform libraries commonly used in developing software games and multimedia titles...
is another such binding.
See also
- Project Looking GlassProject Looking GlassProject Looking Glass is a now inactive free software project under the GPL to create an innovative 3D desktop environment for Linux, Solaris, and Windows. It was sponsored by Sun Microsystems....
(Experimental 3D Desktop using Java 3D) - Project WonderlandProject WonderlandOpen Wonderland is a 100% Java open source toolkit for creating collaborative 3D virtual worlds. Within those worlds, users can communicate with high-fidelity, immersive audio, share live desktop applications and documents and conduct real business...
(Virtual workspace environment using Java 3D and Project Darkstar) - J3DFly (Experimental Scene Graph editor for Java 3D)
External links
- Official site and releases
- Release Notes of recent version 1.5.2
- JSR 926 (Java 3D 1.5), JSR 912 (Java 3D 1.3)
- Forum and Wiki for Java 3D. - Places for collaboration; includes lists of books and users, faq and knowledge base
- java3d.org. Tutorial, examples and information
- Lecture. - From Siggraph for beginners
- Game Programming http://fivedots.coe.psu.ac.th/~ad/jg/, http://fivedots.coe.psu.ac.th/~ad/jg2/ in Java 3D (chapters as pdf-files and sourcecode)
- Virtual Universe. - Example VR application
- Plugin for Eclipse
- Example visualisation applets using Java 3D
- JAtlasViewer. - A 3D anatomical structure explorer with embedded 2D section made by Guangjie Feng.