© Excellent backgrounds/Shutterstock.com
Java Magazin
Ab JDK 1.8 wird JavaFX um eine Dimension reicher

Ab JDK 1.8 wird JavaFX um eine Dimension reicher

JavaFX bekommt ab JDK 1.8 ein verbessertes 3D-API, das es relativ einfach macht, sich virtuelle 3-D-Welten zu erschaffen, vielleicht auch die eigene Applikation etwas aufzupeppen oder einfach nur, um etwas zu experimentieren. Wir wollen im Folgenden ein Programm entwerfen, das baumähnliche Strukturen auf den Bildschirm zeichnet - keine abstrakten, sondern tatsächliche, organische Bäume.

Robert Ladstätter


Als Implementierungssprache wird Scala verwendet. Diese Programmiersprache bedarf wohl keiner weiteren Vorstellung im Java Magazin (Lesetipp). JavaFX als offizieller Nachfolger von Swing sollte dem interessierten Java-Entwickler ebenso präsent sein.

Lesetipp Über den aktuellen Stand von Scala informiert der große Schwerpunkt in der Ausgabe 6.2013 des Java Magazins: www.jaxenter.de/magazines/Java-Magazin-613

Die grundlegenden Designentscheidungen von JavaFX machen es möglich, in wenigen Zeilen Code schon ein recht komplexes Verhalten zu modellieren. Da JavaFX im Wesentlichen auf einem Scene-Graph basiert (es gibt Knoten mit Eltern-Kind-Beziehungen), ist der Schritt, ein 3D-API für JavaFX einzuführen, naheliegend. Um den im Artikel beschriebenen Sourcecode selbst ausprobieren zu können, muss man einen Early Access Build vom JDK 8 installieren [1].

Der vollständige Sourcecode zu diesem Artikel befindet sich auf meiner GitHub-Seite [2], sodass man sich das Abtippen sparen kann. In Abbildung 1 sieht man das Ergebnis des Programms, und unter [3] gibt es dazu ein kurzes Video.

Abb. 1: Screenshots des Programms

Los geht’s

Das Programm zeigt also im besten Fall eine Struktur, die einem Baum nicht unähnlich ist. Sicherlich nicht perfekt, aber gut genug, um sich mit ein paar Konzepten des 3D-API vertraut zu machen. Des Weiteren ist die Fingerübung auch ein nettes Beispiel für einen rekursiven Algorithmus, Pattern Matching, Implicits und Traits, sodass es von dieser Seite gesehen auch seinen Reiz hat. In Listing 1 sind die neuen Klassen aufgelistet, die ab JDK 1.8 dabei sind und von dem Beispiel benötigt werden.

Listing 1 import javafx.scene.PointLight import javafx.scene.paint.Material import javafx.scene.paint.PhongMaterial import javafx.scene.shape.Cylinder import javafx.scene.shape.Shape3D import javafx.scene.shape.Sphere

Abb. 2: Screenshot des Typs „Shape3D“

Es gibt also neue Shapes, die man verwenden kann – Cylinder und Sphere leiten von einer abstrakten Klasse Shape3D ab. Wie in Abbildung 2 ersichtlich, gibt es noch weitere Shapes wie MeshView oder Box.

Die Klassen tun genau das, was sie tun sollen: Sie stellen Formen im 3-D-Raum dar, die man über Transformationen in der 3-D-Welt platzieren, skalieren und drehen kann. Die Material-Klasse weist, wie in der 3-D-Programmierung üblich, einem Shape ein Aussehen zu, PhongMaterial ist eine Spezialisierung davon. Mit diesen Klassen ist es z. B. auch möglich, Shapes eine Textur, oder einfacher, ein...

Java Magazin
Ab JDK 1.8 wird JavaFX um eine Dimension reicher

Ab JDK 1.8 wird JavaFX um eine Dimension reicher

JavaFX bekommt ab JDK 1.8 ein verbessertes 3D-API, das es relativ einfach macht, sich virtuelle 3-D-Welten zu erschaffen, vielleicht auch die eigene Applikation etwas aufzupeppen oder einfach nur, um etwas zu experimentieren. Wir wollen im Folgenden ein Programm entwerfen, das baumähnliche Strukturen auf den Bildschirm zeichnet - keine abstrakten, sondern tatsächliche, organische Bäume.

Robert Ladstätter


Als Implementierungssprache wird Scala verwendet. Diese Programmiersprache bedarf wohl keiner weiteren Vorstellung im Java Magazin (Lesetipp). JavaFX als offizieller Nachfolger von Swing sollte dem interessierten Java-Entwickler ebenso präsent sein.

Lesetipp Über den aktuellen Stand von Scala informiert der große Schwerpunkt in der Ausgabe 6.2013 des Java Magazins: www.jaxenter.de/magazines/Java-Magazin-613

Die grundlegenden Designentscheidungen von JavaFX machen es möglich, in wenigen Zeilen Code schon ein recht komplexes Verhalten zu modellieren. Da JavaFX im Wesentlichen auf einem Scene-Graph basiert (es gibt Knoten mit Eltern-Kind-Beziehungen), ist der Schritt, ein 3D-API für JavaFX einzuführen, naheliegend. Um den im Artikel beschriebenen Sourcecode selbst ausprobieren zu können, muss man einen Early Access Build vom JDK 8 installieren [1].

Der vollständige Sourcecode zu diesem Artikel befindet sich auf meiner GitHub-Seite [2], sodass man sich das Abtippen sparen kann. In Abbildung 1 sieht man das Ergebnis des Programms, und unter [3] gibt es dazu ein kurzes Video.

Abb. 1: Screenshots des Programms

Los geht’s

Das Programm zeigt also im besten Fall eine Struktur, die einem Baum nicht unähnlich ist. Sicherlich nicht perfekt, aber gut genug, um sich mit ein paar Konzepten des 3D-API vertraut zu machen. Des Weiteren ist die Fingerübung auch ein nettes Beispiel für einen rekursiven Algorithmus, Pattern Matching, Implicits und Traits, sodass es von dieser Seite gesehen auch seinen Reiz hat. In Listing 1 sind die neuen Klassen aufgelistet, die ab JDK 1.8 dabei sind und von dem Beispiel benötigt werden.

Listing 1 import javafx.scene.PointLight import javafx.scene.paint.Material import javafx.scene.paint.PhongMaterial import javafx.scene.shape.Cylinder import javafx.scene.shape.Shape3D import javafx.scene.shape.Sphere

Abb. 2: Screenshot des Typs „Shape3D“

Es gibt also neue Shapes, die man verwenden kann – Cylinder und Sphere leiten von einer abstrakten Klasse Shape3D ab. Wie in Abbildung 2 ersichtlich, gibt es noch weitere Shapes wie MeshView oder Box.

Die Klassen tun genau das, was sie tun sollen: Sie stellen Formen im 3-D-Raum dar, die man über Transformationen in der 3-D-Welt platzieren, skalieren und drehen kann. Die Material-Klasse weist, wie in der 3-D-Programmierung üblich, einem Shape ein Aussehen zu, PhongMaterial ist eine Spezialisierung davon. Mit diesen Klassen ist es z. B. auch möglich, Shapes eine Textur, oder einfacher, ein...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang