Vorkenntnisse

Programmiersprache

Wer in die Welt der 3D-Grafik eintauchen möchte, sollte einige Vorkenntnisse mitbringen. Dazu gehört zum ersten ein sicherer Umgang mit der Programmiersprache C. Um die Übungen übersichtlicher zu machen, werden ebenfalls Grundkenntnisse in C++ angenommen. Wer erstmal nur mal schnuppern möchte, kann sich jedoch auch ohne C++-Kenntnisse auf den Weg machen.

Grundsätzlich ist OpenGL unabhängig von der Programmiersprache, es gibt Bindings1) für C#, Java, Python und viele andere Programmiersprachen. Echtzeit-3D-Grafik ist allerdings darauf angewiesen, möglichst schnell berechnet zu werden und an die Grafikkarte übermittelt zu werden. Darum sind nativ kompilierende Sprachen, wie C, C++, D oder Pascal bzw. Delphi hier eindeutig zu bevorzugen.

Mathematische Kenntnisse

3D Grafik erfordert ein gewisses Maß an mathematischer Vorbildung. Wer mit Vektoren2) rechnen kann und eine Ebenengleichung auf die Reihe bekommt, ist soweit schon brauchbar gerüstet. Wem dieses Wissen fehlt, dem werde ich versuchen es zu vermitteln.

Was ich voraussetze ist der halbwegs sichere Umgang mit Trigeometrie, insbesondere Sinus und Cosinus.

Um die Transformationen3) richtig zu verstehen, sollten man mit Matrizen umgehen können. Ich weiß nicht, ob Matrizen heute noch Teil des Abiturs sind oder erst in einem entsprechendem Studium vermittelt werden. Ich werde mich auch kurz mit Matrizen beschäftigen, allerdings ist Matrizenrechnung keine Voraussetzung für das Tutorial! Diese Arbeit nimmt uns OpenGL soweit ab, ich werde also nur für Interessierte kurz darauf eingehen, welche Arbeit uns OpenGL eigentlich abnimmt.

Wenn ihr euch einen Würfel als Koordinatensystem vorstellen könnt und euch gedanklich darin bewegen könnt, so haben wir schoneinmal eine Grundlage.

Die rechte Faustregel (Korkenzieherregel) und die Normale

Über folgende Regel werden wir häufiger stolpern: die sogenannte Rechte-Faust-Regel, bzw. Korkenzieherregel. Grundsätzlich arbeitet OpenGL mit einem sogenannten Rechts-System, was weniger mit dem Gesetz zu tun hat, als mit der Tatsache, dass Objekte rechts herum gezeichnet werden. Nehmen wir ein Viereck und stellen und vor wie wir es auf den Bildschirm malen. Es von unten links, nach unten rechts, nach oben rechts, nach oben links und schlussendlich wieder nach unten links gezeichnet wird.

Nun nehmen wir die rechte(!) Hand und lassen die Finger locker und strecken den Daumen hoch. Die Finger krümmen sich zur Handfläche hin. Nun positionieren wir die Hand so vor dem Bildschirm, dass die Finger der Zeichenrichtung des Vierecks entsprechen, also gehen sie links unten aus der Hand und krümmen sich gegen den Uhrzeigersinn. Die Richtung des Daumens zeigt und, wo vorne ist. Wir schauen also auf die Vorderseite des Vierecks. Hätten wir das Viereck andersherum gezeichnet und die Finger angelegt, so zeigt der Daumen auf den Bildschirm. Die Vorderseite ist also in Richtung des Bildschirms und wir schauen auf die Rückseite.

*Mit der Richtung, wie eine Fläche gezeichnet wird, lässt sich also bestimmen, welche Seite vorne und welche Seite hinten ist.*

Wenn wir uns den Würfel vorstellen, so haben wir vorne, rechts, oben und hinten, links und unten jeweils eine Seite. Stellen wir uns vor, wir schauen genau auf die Vorderseite. Die Fläche der Vorderseite verläuft entlang der X-Achse und entlang der Y-Achse. Unser Daumen schaut nun zu uns, seine Richtung verläuft also orthogonal 4) zu X und Y Achse. Die Richtung verläuft also genau auf der Z-Achse. Diese rechtwinklig aus der Fläche herausstoßende Richtung nennt man „Normale der Fläche“. Die Normale verläuft also immer entlang des Daumens und in Richtung, in die der Daumen zeigt.

Die Rechte-Hand-Regel

Noch eine Spielerei mit der rechten Hand: Die Rechte-Hand-Regel oder Drei-Finger-Regel beschreibt ein Rechtssystem. Dazu klappt man Ring- und kleinen Finger ein und spreizt Daumen, Zeige- und Mittelfinger so, dass sie jeweils im rechten Winkel zueinander stehen. Nehmen wir an, die X-Achse verläuft von links nach rechts und die Y-Achse von oben nach unten, dann kann man den Daumen in Richtung der X-Achse legt, den Zeigefinger in Richtung der Y-Achse, dann legen wir den Daumen in Richtung der X-Achse (nach rechts), den Zeigefinger in Richtung der Y-Achse (nach unten) und nun zeigt der Mittelfinger, in die Richtung der Z-Achse - in dem Fall also aus dem Bildschirm heraus.

Liegt die Y-Achse von unten nach oben, dreht sich das Koordinatensystem und die Z-Achse zeigt in den Bildschirm, damit es ein Rechtssystem darstellt.

1) Bindings reichen die Funktionen an die Programmiersprache durch
2) vereinfacht ausgedrückt sind Vektoren dreidimensionale Zahlen
3) Bewegungen im Raum
4) orthogonal heißt soviel wie rechtwinklig