Java 1.2 3D API
Specification
General
Implementation:
Java 3D API is layered on top of existing lower-level immediate-mode 3D
rendering APIs, such as OpenGL and Direct3D. The initial Java 3D implementations
are written mostly in the JavaTM programming language but also take advantage of native
methods to provide maximum performance.
Immediate Mode:
The design of the Java 3D immediate mode enables cross-platform capability
for all applications written using the Java 3D API. An application developer
using immediate mode exclusively, whose main concern is performance and not
inter-platform operability, should use the appropriate lower-level API rather
than Java 3D. Otherwise, Java 3D's immediate mode provides the best compromise
of features in a one-size-fits-all immediate-mode layer while still achieving
reasonable performance.
View Model:
Java 3D's view model is quite simple: the application author places, orients,
and scales a view platform object--period. Java 3D does the rest of the work. If
the application only delivers an environment and leaves the details of viewpoint
control to a browser, the application doesn't even need to provide a view
platform object. If an application wants to port over existing code that uses a
camera-based view model, it makes a single Java 3D call to establish the
camera's parameters. Then, by moving the viewplatform instead of the camera,
things function much as they did in the original system.
Tracker Model:
Java AWT provides an abstraction of the most common desktop interaction
peripherals: keyboards and mice. Java 3D uses these as is, rather than creating
an incompatible I/O model. But for real-time critical devices, such as joysticks
and six-degree-of-freedom devices, where AWT had not yet defined a mechanism,
Java 3D introduces a new real-time class of I/O device.
Vector Mathematics
Library:
Java Software has decided to make Java 3D's Vector objects and methods a
separate package, extend them to include more functionality, and make them
available to other evolving Java APIs. (In the process, some additional 2D
vector and matrix classes may be defined.) However, to make the Vector
Mathematics API available for review at the same time as the Java 3D APIs.
Geometry
Compression Format:
Java 3D is a run-time API. It does not define an external file format. The
geometry compression format is a special case. It is both a run-time binary
format (for platforms with hardware support for compressed geometry), a format
that applications can use at the file and network level, and one that can
interact with APIs other than Java 3D.
Triangles:
The triangle serves as a very useful lowest-common-dominator primitive that
ports nicely across most platforms. Higher-level primitives vary massively by
application area. In many areas, no other primitives are used. In others, fully
trimmed NURBS are the minimum next step. By limiting the directly-supported
graphics shapes to triangles, applications can choose to add further
functionality at higher-level abstractions.
Double-buffered,
True Color, Z-buffered Rendering Model:
Java has a very high API standard for minimal rendering mode. It requires
double buffered, true color and Z-buffered mode as the minimum. This is done
because sun perceives the market to be ready for high end graphic
implementations.
|