- J3D
-
Java 3D ist eine Klassenbibliothek von Java-Klassen zur Erzeugung, Manipulation und Darstellung dreidimensionaler Grafiken innerhalb von Java-Anwendungsprogrammen und -Applets. Mit Java 3D können also durch ein Java-Programm dreidimensionale Objekte modelliert, gerendert sowie das Verhalten und die Ansicht gesteuert werden.
Java 3D wurde seit 1997 von Sun Microsystems entwickelt. Die Version 1.0 erschien im Dezember 1998. Die Version 1.4 ist seit März 2006 verfügbar, als wichtiges Leistungsmerkmal ist hier die Möglichkeit der Shader-Programmierung für aktuelle Grafikhardware hervorzuheben. Aktuell ist die Version 1.5, die unter anderem die Rendering-Pipeline Jogl auf allen Plattformen einführt.
Nachdem Sun die Weiterentwicklung zwischenzeitlich eingestellt hatte, ist die Bibliothek seit Sommer 2004 als Open Source freigegeben. Derzeit sind Fassungen für OpenGL für Windows-Systeme und diverse UNIX-Plattformen erhältlich, sowie eine Version für Direct3D auf Windows 9x, Windows 2000 und Windows XP. Für Mac OS X gibt es eine Version für JDK 1.4 (bis 10.3), das JDK 1.5 für Mac OS X (10.4) enthält bereits Java 3D (in Version 1.3). Java 3D Version 1.5 ist für Windows, Linux, Solaris und Mac OS X erhältlich.
Szenengraph
Java 3D kapselt die Funktionalität der zugrundeliegenden OpenGL- oder DirectX-Schnittstelle in ein leichter verständliches objektorientiertes Programmkonzept auf Basis eines Szenengraphen. Im Szenengraph wird der logische Aufbau der darzustellenden Objekte auf eine gleichartig aufgebaute, baumähnliche Struktur abgebildet, die im Wesentlichen aus Definitionen von Transformationen und Geometriedaten besteht. Die so strukturierte Sicht der Szene erlaubt eine komfortable Handhabung der Objekte. Auch die Integration einer Soundkulisse in den Szenengraphen ist möglich.
Die Bibliothek implementiert Objekte und Methoden zur Repräsentation einer Szene und nutzt für deren Darstellung ausschließlich vorimplementierte und an das jeweilige Betriebssystem angepasste Funktionsbibliotheken. Damit wird zur Darstellung aller erzeugten Objekte die im System verwendete Videohardware verwendet. Potentiell ist damit die erreichbare Renderinggeschwindigkeit ähnlich hoch wie bei direkter Programmierung mit C und OpenGL oder Direct3D. Daher besteht die Möglichkeit, leistungsfähige 3D-Szenarien zu entwickeln, welche auf der GUI visualisiert werden können.
Ein direkter Zugriff auf OpenGL- oder Direct3D-Funktionen ist von Java 3D nicht vorgesehen. Leistungsmerkmale dieser Schnittstellen, die von Java 3D nicht gekapselt werden, können damit von Anwendungsprogrammen auf Basis von Java 3D nicht verwendet werden. Aufgrund der stetigen Weiterentwicklung der Videohardware hat dies wiederholt dazu geführt, dass neu unterstützte Leistungsmerkmale in Java 3D nur verzögert oder gar nicht verfügbar waren.
Koordinatensystem
Die Orientierung der Raumachsen in Java 3D bildet ein rechtshändiges Koordinatensystem. In der Nomenklatur von Java 3D wird der so aufgespannte Raum als Virtuelles Universum bezeichnet. Lediglich dieses Koordinatensystem ist vorgesehen, es gibt keine Möglichkeit, den Achsen eine andere Orientierung zuzuordnen.
Die sogenannten Locales-Objekte ermöglichen es, ein sehr präzises Koordinatensystem zu verwenden: durch diese Koordinaten, die als 256-Bit-Festkommazahlen implementiert sind, ist es möglich, von atomarer Ebene bis zum Makrokosmos alle Objekte in einem Koordinatensystem berechnen zu lassen. Damit wird die Nutzung der API für viele wissenschaftliche Anwendungen vereinfacht.
Weblinks
- Einstiegsseite zum Projekt und dazugehörige Downloads
- Release Notes der aktuellen Version 1.5.2
- Einführung in die Java 3D-API (PDF-Datei)
- Vortragsfolien für Einsteiger (in englischer Sprache)
- Spieleprogrammierung [1], [2] in Java 3D (Buchkapitel als PDF-Dateien und Quellcode)
- Virtual Universe Beispielanwendung in Java 3D
Wikimedia Foundation.