3 Schritte zum Aufbau einer 3D-Java-Welt

In wenigen Schritten können Sie beginnen, ein relativ einfaches 3D-Programm in JavaFX zu erstellen, das zeigt die dreidimensionale Welt an (siehe Beispiel unten). Wie Sie sehen können, enthält diese 3D-Raum vier Formen: eine Kugel, ein Würfel, ein Zylinder und eine Pyramide. Diese kurze Liste zeigt Ihnen, wie Sie mit einem Zylinder, um loszulegen.

Setzen Sie auf Ihrem Denken Kappe, wie dieses Beispiel manchmal sehr technisch ist, und viele der Konzepte in Bezug auf 3D-Welten bauen kann verwirrend sein, vor allem, wenn diese mit 3D-Programmierung Ihre erste Erfahrung ist.

Eine Probe 3D-Programm in JavaFX.
Eine Probe 3D-Programm in JavaFX.

Erster Schritt: In einem Zylinder

In diesem Schritt fügen Sie eine einfache 3D-Objekt zu Ihrer Welt. JavaFX bietet drei grundlegende Formen, die Sie hinzufügen können: Zylinder, Kisten und Kugeln. Beginnen Sie mit einem Zylinder und fügte hinzu:

Zylinder Zylinder = new Zylinder (100,50) -root.getChildren () hinzufügen (Zylinder). -

Das Zylinder Klassenkonstruktor akzeptiert zwei Argumente: den Radius des Zylinders und dessen Höhe. In diesem Beispiel wird ein Zylinder erzeugt in etwa die Form eines Hockey-Puck, viermal so breit wie es tall- dann, fügt er den Zylinder mit dem Wurzelknoten der Szene.

An diesem Punkt besteht der Zylinder in der Welt, aber nicht sichtbar ist. Nach dem, was Sie wissen, von 2D-Formen, können Sie versucht sein, es durch Hinzufügen einer Füllfarbe sichtbar zu machen (setFill) Oder eine Strichfarbe (setStroke). Aber das ist nicht, wie 3D-Objekte zu arbeiten. Im nächsten Schritt, entdecken Sie, wie ein Material auf der Oberfläche des Zylinders aufzubringen, so dass es in der Szene sichtbar.

Schritt zwei: Erstellen Sie ein Material

Rendering die Gesichter eines 3D-Objekts ist viel komplizierter, als Rendering flache, zweidimensionale Objekte. Für ein 2D-Objekt, wenden Sie nur ein Farbe Objekt über die setFill Verfahren. Die Farbe kann eine einfache Farbe, ein Farbverlauf oder ein Bild sein.

Für die 3D-Objekte, gelten Sie nicht malen. Stattdessen nutzen Sie ein spezielles Objekt ein genannt Phong Material, vertreten durch den PhongMaterial Klasse. Ein Phong Material (benannt nach Bui Tuong Phong, Pioniercomputergrafik-Experte in den 1970er Jahren) stellt die Mittel, mit denen die Flächen eines 3D-Objekts realistisch wiedergegeben werden.

Der folgende Code erstellt ein einfaches Phong Material auf Basis von zwei Blautönen und wendet dann das Material auf den Zylinder:

PhongMaterial Blue = new PhongMaterial()-blueStuff.setDiffuseColor(Color.LIGHTBLUE)-blueStuff.setSpecularColor(Color.BLUE)-cylinder.setMaterial(blueStuff)-

Nachdem das Phong Material auf den Zylinder aufgetragen wurde, wird der Zylinder in der Szene sichtbar ist, wie dargestellt.

Der 3D-Zylinder mit einem Phong Material.
Der 3D-Zylinder mit einem Phong Material.

Schritt drei: Übersetzen Sie die Zylinder

Sie bemerkt, ohne Zweifel, dass der Zylinder nicht sehr sieht dreidimensional. Das ist, weil man es freuen auf die Kante: Die Kamera zeigt gerade an der Kreuzung der x- und y-Achse, und der Zylinder wird auf derselben Stelle zentriert.

Um eine Perspektive auf dem Zylinder zu gewinnen, können Sie es an eine andere Position im 3D-Raum bewegen, indem die x- übersetzen, y- und z-Koordinaten. Beispielsweise:

cylinder.setTranslateX (-200) -cylinder.setTranslateY (200) -cylinder.setTranslateZ (200) -

Hier wird der Zylinder 200 Einheiten nach links verschoben, 200 Einheiten ab, und 200 Einheiten von der Kamera entfernt. Die resultierende Ansicht sieht eher wie ein Zylinder, wie Sie hier sehen können.

Der übersetzte 3D-Zylinder.
Der übersetzte 3D-Zylinder.

In dieser Figur sieht es aus, als ob der Zylinder nach vorne gedreht wurde, so dass Sie ein wenig von der oberen Fläche zu sehen. Dies ist nicht der Fall. Was ist eigentlich passiert, dass Sie nicht mehr sind am Zylinderrand-on suchen.

Stattdessen, da der Zylinder unterhalb der Kamera befindet, freuen Sie sich darauf. So können Sie ein wenig von der oberen Fläche zu sehen. Sie suchen auch sie von der Seite, die erklärt, warum es gekippt nur ein bisschen erscheint.

Menü