© Excellent backgrounds/Shutterstock.com
Java Magazin
3-D-Programmierung

3-D-Programmierung

Processing ist eine auf Java basierende Open-Source-Programmiersprache samt Entwicklungsumgebung. Im ersten Artikel dieser Serie wurden Grundlagen und Ursprünge dieses Visual-Java-Tools erläutert und ein paar Fingerübungen mit der 2-D-Engine gemacht. Nun möchten wir einem aktuellen Trend in der Filmindustrie folgen und überprüfen, was Processing im 3-D-Bereich zu bieten hat.

Stefan Siprell


Bisher haben wir immer den Standard 2-D-Rendermode verwendet. Dieser wird implizit beim Initialisieren des Bildschirms gesetzt:

size(800, 600)

Daher ist der Schritt bei der Ausgabe von 3-D die explizite Benennung des Modus. Hierzu gibt es eine Reihe von Modi (Tabelle 1).

ModusBeschreibungP2DDefault-2-D-Renderer (nutzt intern OpenGL)P3DDefault-3-D-Renderer (nutzt intern OpenGL)OPENGLBietet direkten Zugriff auf das JOGL-APIPDFVector 2-D-Shaped in PDF-Dateien

Tabelle 1: Render-Methoden

Der Artikel wird sich ausschließlich mit P3D beschäftigen, da hier die Vorteile von Processing unterstrichen werden sollen – OpenGL bietet lediglich direkten Zugriff auf den Java-OpenGL-Wrapper an. Außerdem gibt es keine Garantien, dass der Modus auch weiterhin durch Processing unterstützt wird. So wurde zum Beispiel schon jetzt die Möglichkeit des Java-Applet-Exports für OpenGL eingeschränkt.

ArtikelserieTeil 1: Einführung ins Processing, Nutzen der 2-D-Rendering-EngineTeil 2: Nutzen der 3-D-Rendering-Engine mit KamerafahrtenTeil 3: Computer Vision und Augmented Reality mit ProcessingTeil 4: Professionelle Datenvisualisierung mit Java

Der 3-D-Raum leitet sich direkt vom 2-D-Raum ab. Vom Ursprung nach unten zeigt die Y-Achse, die X-Achse verläuft vom Ursprung nach rechts, und die Z-Achse kommt aus dem Ursprung auf den Betrachter zu.

Die Kamera schaut auf die Mitte des Bildschirms mit z = 0 und hat ihren Ursprung ebenfalls in der Mitte des Bildschirms (Abb. 1), besitzt aber einen z-Wert, der ungefähr der Bildschirmhöhe entspricht (die genaue Formel lautet: (Höhe/2)/(tan π/6)).

Abb. 1: Dimensionen im 3-D-Raum, der Ursprung liegt in O, die Kamera­ liegt auf dem Punkt C und zeigt auf F

Genug Theorie, wir wollen anfangen, eine – zugegebenermaßen primitive, aber nachvollziehbare – Darstellung einer beliebigen Großstadt mit Skyline interaktiv darzustellen.

Aufbau der Szene

Zunächst benötigen wir einen Himmel, den wir uns mit drawSky() generieren. Hier finden wir eine neue Methode mit dem Namen sphere() zum Zeichnen einer Kugel. Im ersten Artikel haben wir bereits das 2-D-Gegenstück ellipse() besprochen. totallength ist die Kantenlänge unserer Stadt. Hier benutzen wir sie, um eine Kugel um die gesamte Stadt zu zeichnen. fill() und stroke() sind ebenfalls schon bekannt und dienen dazu, den Himmel blau zu zeichnen. Um den Boden bzw. die Straße zu zeichnen, nutzen wir drawGround(). Auch hier sind die Operationen pushMatrix(), translate() und popMatrix() schon bekannt. Neu ist die box()-Method...

Java Magazin
3-D-Programmierung

3-D-Programmierung

Processing ist eine auf Java basierende Open-Source-Programmiersprache samt Entwicklungsumgebung. Im ersten Artikel dieser Serie wurden Grundlagen und Ursprünge dieses Visual-Java-Tools erläutert und ein paar Fingerübungen mit der 2-D-Engine gemacht. Nun möchten wir einem aktuellen Trend in der Filmindustrie folgen und überprüfen, was Processing im 3-D-Bereich zu bieten hat.

Stefan Siprell


Bisher haben wir immer den Standard 2-D-Rendermode verwendet. Dieser wird implizit beim Initialisieren des Bildschirms gesetzt:

size(800, 600)

Daher ist der Schritt bei der Ausgabe von 3-D die explizite Benennung des Modus. Hierzu gibt es eine Reihe von Modi (Tabelle 1).

ModusBeschreibungP2DDefault-2-D-Renderer (nutzt intern OpenGL)P3DDefault-3-D-Renderer (nutzt intern OpenGL)OPENGLBietet direkten Zugriff auf das JOGL-APIPDFVector 2-D-Shaped in PDF-Dateien

Tabelle 1: Render-Methoden

Der Artikel wird sich ausschließlich mit P3D beschäftigen, da hier die Vorteile von Processing unterstrichen werden sollen – OpenGL bietet lediglich direkten Zugriff auf den Java-OpenGL-Wrapper an. Außerdem gibt es keine Garantien, dass der Modus auch weiterhin durch Processing unterstützt wird. So wurde zum Beispiel schon jetzt die Möglichkeit des Java-Applet-Exports für OpenGL eingeschränkt.

ArtikelserieTeil 1: Einführung ins Processing, Nutzen der 2-D-Rendering-EngineTeil 2: Nutzen der 3-D-Rendering-Engine mit KamerafahrtenTeil 3: Computer Vision und Augmented Reality mit ProcessingTeil 4: Professionelle Datenvisualisierung mit Java

Der 3-D-Raum leitet sich direkt vom 2-D-Raum ab. Vom Ursprung nach unten zeigt die Y-Achse, die X-Achse verläuft vom Ursprung nach rechts, und die Z-Achse kommt aus dem Ursprung auf den Betrachter zu.

Die Kamera schaut auf die Mitte des Bildschirms mit z = 0 und hat ihren Ursprung ebenfalls in der Mitte des Bildschirms (Abb. 1), besitzt aber einen z-Wert, der ungefähr der Bildschirmhöhe entspricht (die genaue Formel lautet: (Höhe/2)/(tan π/6)).

Abb. 1: Dimensionen im 3-D-Raum, der Ursprung liegt in O, die Kamera­ liegt auf dem Punkt C und zeigt auf F

Genug Theorie, wir wollen anfangen, eine – zugegebenermaßen primitive, aber nachvollziehbare – Darstellung einer beliebigen Großstadt mit Skyline interaktiv darzustellen.

Aufbau der Szene

Zunächst benötigen wir einen Himmel, den wir uns mit drawSky() generieren. Hier finden wir eine neue Methode mit dem Namen sphere() zum Zeichnen einer Kugel. Im ersten Artikel haben wir bereits das 2-D-Gegenstück ellipse() besprochen. totallength ist die Kantenlänge unserer Stadt. Hier benutzen wir sie, um eine Kugel um die gesamte Stadt zu zeichnen. fill() und stroke() sind ebenfalls schon bekannt und dienen dazu, den Himmel blau zu zeichnen. Um den Boden bzw. die Straße zu zeichnen, nutzen wir drawGround(). Auch hier sind die Operationen pushMatrix(), translate() und popMatrix() schon bekannt. Neu ist die box()-Method...

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