© Excellent backgrounds/Shutterstock.com
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.

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).

Modus

Beschreibung

P2D

Default-2-D-Renderer (nutzt intern OpenGL)

P3D

Default-3-D-Renderer (nutzt intern OpenGL)

OPENGL

Bietet direkten Zugriff auf das JOGL-API

PDF

Vector 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.

Artikelserie

Teil 1: Einführung ins Processing, Nutzen der 2-D-Rendering-Engine

Teil 2: Nutzen der 3-D-Rendering-Engine mit Kamerafahrten

Teil 3: Computer Vision und Augmented Reality mit Processing

Teil 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)).

siprell_1.tif_fmt1.jpgAbb. 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() b...

Neugierig geworden?

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