Java 3D-API im Überblick
Die Java 3D-API liefert eine Schnittstelle, um 3D-Objekte zu gestalten, diese im 3D-Raum zu bewegen und mit entsprechenden Texturen zu versehen. Innerhalb der API finden Sie über 100 Klassen vor, um eindrucksvolle Effekte auf den Bildschirm zu zaubern.

- Java 3D-API im Überblick
- Animation von Objekten
Als Basis stehen dem Entwickler die Core- und Utility-Klassen zur Verfügung. Die Utility-Klassen lassen sich in vier Kategorien einteilen: Content Loader, Scene Graph Construction Aids, Geometry Classes und Convenient Utilities. Diese Utility-Klassen sparen dem Entwickler einige Entwicklungsarbeit....
Als Basis stehen dem Entwickler die Core- und Utility-Klassen zur Verfügung. Die Utility-Klassen lassen sich in vier Kategorien einteilen: Content Loader, Scene Graph Construction Aids, Geometry Classes und Convenient Utilities. Diese Utility-Klassen sparen dem Entwickler einige Entwicklungsarbeit. Solche Java-3D-Programme laufen als Applets innerhalb des Browsers oder als eigenständige Java-Applications.
Programmierkonzept

Um ein 3D-Programm zu realisieren, sind folgende Schritte notwendig: Anfangs erzeugen Sie ein Canvas3D-Objekt. Anschließend legen Sie das SimpleUniverse-Objekt an, welches das bereits angelegte Canvas3D-Objekt nutzt. Die Klasse SimpleUniverse erspart einem den komplexen Aufbau eines Szenengraphen.
Ein Szenengraph besteht aus drei Hauptteilen: Modellierung der Objekte der Szene und deren Bewegungen (Content Branch), Informationen über die Beleuchtung (Lights) und Darstellung der Szene (View Platform). Die SimpleUniverse verzichtet auf die Definition aller Betrachterparameter, sondern verwendet Standardeinstellungen. Auf dieser Basis entwickeln Sie einen ContentBranch-Graphen und kompilieren diesen zum Abschluss.
Zuletzt fügen Sie den ContentBranch-Graph dem Locale-Objekt innerhalb des SimpleUniverse hinzu. Diese Reihenfolge des Aufbaus ist unbedingt einzuhalten, damit zum Schluss Ihr Java-3D-Programm funktioniert.
Zuerst: ein Würfel

Zur Demonstration schreiben Sie jetzt Ihr eignes Java-3D-Würfel-Programm. Sie legen zuerst die Klasse HelloJava3D, abgeleitet von JFrame, an. Im Konstruktor dieser Klasse besorgen Sie sich über die Methode getPreferredConfiguration() die Default-Konfiguration der SimpleUniverse-Klasse und speichern diese in der myconfig-Variablen vom Typ GraphiccsConfiguration.
Dann erzeugen Sie das Canvas3D-Objekt mitttels des new()-Operators und übergeben dem Konstruktor eine Referenz auf die Variable myconfig. Darauf instanziieren Sie ein SimpleUniverse-Objekt, dessen Konstruktor eine Referenz auf das erzeugte Canvas3D-Objekt erhält.
Ein Szenengraph wird über die zu implementierende Methode createSceneGraph() aufgebaut. Der Aufruf myscene.compile() kompiliert den Szenengraphen. Zum Schluss fügen Sie dem Szenengraphen das Locale-Objekt hinzu, welches sich im SimpleUniverse befindet.
In der Implementierung der Methode createSceneGraph() legen Sie eine Instanz der Klasse BranchGroup an. Der Würfel wird mit der Zeile new ColorCube() erzeugt und mit addChild() der BranchGroup hinzugefügt. Dies sieht im Detail so aus:
// Der Konstruktor
public HelloJava3D() {
GraphicsConfiguration myconfig = Sim
pleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new
Canvas3D(myconfig);
SimpleUniverse su = new
SimpleUniverse(canvas3D);
BranchGroup myscene = createScene
Graph();
myscene.compile();
su.addBranchGraph(myscene); }
// Die Methode createSceneGraph
public BranchGroup createSceneGraph() {
BranchGroup branchgroup = new Branch
Group();
branchgroup.addChild(new Color
Cube(0.5));
return branchgroup; }
Die Definition einer main-Methode wird für eine Verwendung als Java-Application benötigt. Hier legen Sie das Hauptfenster (JFrame) der Applikation an und starten diese damit:
// Die main-Methode
public static void main(String args[])
{
java.awt.EventQueue.
invokeLater(newRunnable() {
public void run() {
HelloJava3D my3d = new HelloJa
va3D();
my3d.setTitle("Beispiel#1");
my3d.setSize(300,300);
my3d.setVisible(true); }}};
}
Zuerst sehen Sie den Würfel in der 2D-Darstellung, für die 3D-Darstellung drehen Sie anschließend den Würfel.
Würfel in drei Dimensionen
Zur 3D-Darstellung passen Sie die Methode createSceneGraph() entsprechend an. Da sich der Würfel um die X- und Y-Achse drehden soll, werden zwei Transform3D-Objekte angelegt:
Transform3D erste_rotation = new Trans
form3D();
Transform3D zweite_rotation = new
Transform3D();

Um den Würfel zu drehen, ist die Angabe von Achse und Winkel notwendig. Wollen Sie beispielsweise, dass sich der Würfel um 45 Grad auf der X-Achse dreht, befehlen Sie: erste_rotation.rotX(Math.PI/4.0d). Um den Würfel um 45 Grad auf der Y-Achse zu drehen, folgt dann der Befehl: zweite_rotation.rotY(Math.PI/4.0d). Für jede Drehung ist ein separates Transform3D-Objekt notwendig.
Je nachdem wie oft sich Ihr Objekt drehen soll, deklarieren Sie eine entsprechende Anzahl von Transform3D-Variablen. Den ersten beiden Drehungen liegen besondere Transformationsmatrizen zu Grunde, die durch Multiplikation kombiniert werden. Hierbei ist natürlich die Reihenfolge der Multiplikation nicht unwichtig. Der Befehl erste_rotation.mul(zweite_rotation); leistet dies.
Diese neue Transformationsmatrix wird nun dem vorhandenen TransformGroup-Objekt übergeben, das alleinig in der Lage ist, die Position, Orientierung und Größe eines visuellen Objekts zu verändern. Unser Beispiel nutzt das TransformGroup-Objekt, um die Orientierung innerhalb des 3D-Raumes zu ändern.
Das erledigt der Befehl TransformGroup obj = new TransformGroup(erste_rotation);. Nun müssen Sie noch angeben, welches Objekt von der Änderung betroffen sein soll. In unserem Fall wird unser Würfel mit der Zeile obj.addChild(new ColorCube(0.4)); angegeben. Damit sollte jetzt ein dreidimensionaler Würfel auf dem Bildschirm erscheinen.