3 Schritte zum Erstellen einer 3D-Java-Welt

3 Schritte zum Erstellen einer 3D-Java-Welt - Dummies

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

Setzen Sie Ihr Thinking Cap auf, da dieses Beispiel manchmal ziemlich technisch ist und viele der Konzepte zum Erstellen von 3D-Welten verwirrend sein können, besonders wenn dies Ihre erste Erfahrung mit 3D-Programmierung ist.

Ein Beispiel für ein 3D-Programm in JavaFX.

Schritt eins: Einen Zylinder hinzufügen

In diesem Schritt fügen Sie Ihrer Welt ein einfaches 3D-Objekt hinzu. JavaFX bietet drei grundlegende Formen, die Sie hinzufügen können: Zylinder, Boxen und Kugeln. Beginnen Sie mit dem Hinzufügen eines Zylinders:

 Zylinderzylinder = neuer Zylinder (100, 50); Wurzel. getChildren (). hinzufügen (Zylinder); 

Der Cylinder-Klassenkonstruktor akzeptiert zwei Argumente: den Radius des Zylinders und seine Höhe. Dieses Beispiel erzeugt einen Zylinder, der ungefähr die Form eines Hockey-Pucks hat, viermal so groß wie groß; Dann fügt es den Zylinder dem Stammknoten der Szene hinzu.

Zu ​​diesem Zeitpunkt existiert der Zylinder in der Welt, ist aber nicht sichtbar. Je nachdem, was Sie über 2D-Formen wissen, können Sie versucht sein, diese sichtbar zu machen, indem Sie eine Füllfarbe (setFill) oder eine Strichfarbe (setStroke) hinzufügen. Aber so funktionieren 3D-Objekte nicht. Im nächsten Schritt lernen Sie, wie Sie ein Material auf die Oberfläche des Zylinders aufbringen, damit es in der Szene sichtbar wird.

Schritt zwei: Erstellen Sie ein Material

Das Rendern der Flächen eines 3D-Objekts ist viel komplizierter als das Rendern flacher, zweidimensionaler Objekte. Bei einem 2D-Objekt wenden Sie einfach ein Paint-Objekt über die setFill-Methode an. Die Farbe kann eine einfache Farbe, eine Verlaufsfarbe oder ein Bild sein.

Bei 3D-Objekten wird keine Farbe aufgetragen. Stattdessen wenden Sie ein spezielles Objekt namens Phong-Material an, das von der PhongMaterial-Klasse repräsentiert wird. Ein Phong-Material (benannt nach Bui Tuong Phong, einem bahnbrechenden Computergrafik-Experten in den 1970er Jahren) liefert die Mittel, mit denen die Gesichter eines 3D-Objekts realistisch gerendert werden.

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

 PhongMaterial blueStuff = new PhongMaterial (); blueStuff. setDiffuseColor (Farbe. HELLBLAU); blueStuff. setSpecularColor (Farbe. BLAU); Zylinder. setMaterial (blueStuff); 

Nachdem das Phong-Material auf den Zylinder aufgebracht wurde, ist der Zylinder wie abgebildet in der Szene sichtbar.

Der 3D-Zylinder mit einem Phong-Material.

Schritt drei: Übersetzen Sie den Zylinder

Sie haben zweifellos bemerkt, dass der Zylinder nicht sehr dreidimensional aussieht. Das liegt daran, dass Sie es direkt am Rand sehen: Die Kamera zeigt gerade auf den Schnittpunkt der x- und y-Achsen, und der Zylinder ist genau an dieser Stelle zentriert.

Um eine gewisse Perspektive auf den Zylinder zu erhalten, können Sie ihn an einen anderen Ort im 3D-Raum verschieben, indem Sie die x-, y- und z-Koordinaten übersetzen. Zum Beispiel:

 Zylinder. setTranslateX (-200); Zylinder. setTranslateY (200); Zylinder. setTranslateZ (200); 

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

Der übersetzte 3D-Zylinder.

In dieser Abbildung sieht es so aus, als ob der Zylinder nach vorne gedreht wurde, so dass Sie etwas von der Oberfläche sehen können. Dies ist jedoch nicht der Fall. Was tatsächlich passiert ist, ist, dass Sie nicht mehr auf den Zylinderrand schauen.

Stattdessen blicken Sie auf den Zylinder, weil sich der Zylinder unter der Kamera befindet. So können Sie ein bisschen von der Oberseite sehen. Sie betrachten es auch von der Seite, was erklärt, warum es nur ein bisschen gekippt aussieht.