3D Grafik

Ich programmiere seit der Zeit als die Bildschime noch grün oder bernsteinfarben waren und die Homecomputer Apple-II, ZX81 oder Atari 400 hießen.

Zum Ende meiner Ausbildung hatte ich bereits mit speicherprogrammierbaren Steuerungen gearbeitet und Computerzeitschriften regelrecht verschlungen. Von meinem Lehrgeld kaufte ich mir meinen ersten Computer, einen Commodore C64. Nachdem ich das Buch A Soul of a New Machine gelesen hatte, war klar: Das will ich auch! Und so habe ich es geschafft aus einer Leidenschaft einen Beruf zu machen, dem ich bis heute noch verfallen bin.

In 1994 habe ich zum ersten mal ein 3D Game auf einem PC gesehen. Das Spiel war DOOM, entwickelt von der Softwareschmiede Id Software. Ich war total begeistert. Zum einen vom Gameplay und zum anderen von der technischen Machbarkeit der perspektivischen Darstellung. Das war völlig neu zu der Zeit. Wenn es also jemals wahre Programmier-Gurus gegeben hat, so heißen sie John Carmack und Michael Abrash und leben in Mesquite, Texas ;-)

Einige Zeit später war ich in der Entwicklungsabteilung eines Telekommunikationsunternehmen angekommen. Wir hatten gerade eine neue Applikation für den Systemtest fertiggestellt. Das Projekt war super gelaufen und hatte richtig Spaß gemacht. Es war ein kleines Team und ich wollte alle in den Credits erwähnen. Aber einfach nur die Namen im Infodialog auflisten war mir dann doch zu blöd. So etwas wie in QuakeII sollte es sein. Ein einfaches 3D Labyrinth in dem irgendwo eine Bildergalerie versteckt ist. Dazu mußten einige Hindernisse überwunden werden. Das Zielsystem war eine Sun Ultra 10 und die Applikation war in Java 1.4 geschrieben. Beides keine guten Vorausetzungen für ein Grafikfeuerwerk. Und noch eine Schwierigkeit galt es zu meistern. Wie kriegt man in ein paar Tagen eine 3D Programm geschrieben, wenn man keine Ahnung hat?

Nach etwas googlen fand ich die Lösung. Eine einfache ray casting Engine sollte es werden die keine besonderen Ansprüche an die Rechenleistung stellt. Ich brauchte nur die mathematischen Ansätze verstehen und in Java implementieren. Dann noch das Layout designen und die Texturen erstellen. Fertig. Das Team war begeistert und für mich war es der Beginn einer neuen Leidenschaft.

Raycast
Der Screenshot ist später auf meinem MacBook entstanden (Java sei Dank)

In verschiedenen Räumen wurden dann die Teammitglieder auf Wandmalereien verewigt. Bleibt noch anzumerken, daß die Applikation heute noch in Betrieb ist.

Zugegeben, das Raycast-Labyrinth ist nicht wirklich spektakulär. Aber mir kam es neben dem Spaß auch auf das grundlegende Verständnis an.

Ich habe noch versucht neue Features zu implementieren. Aber nach einigen unbefriedigenden Ergebnissen habe ich es dann sein gelassen. Der Raycast-Ansatz war nicht wirklich ausbaufähig ist. Zeit, sich einer neuen Herausforderung zu stellen: Die Implementierung einer richtigen 3D-Engine!

Auch dabei ging es mir in erster Linie um das Verständnis für die mathematischen Grundlagen und wie man die verschiedenen Problemstellungen am geschicktesten realisiert. Das lernt man am besten, wenn man es einmal selbst gemacht hat und zwar ohne 3D-API! Mit DirectX oder OpenGL kann das schliesslich jeder ;-)

Um es vorwegzunehmen, das Ergebnis sieht so aus:

3D-Engine

In 2007 bekam ich die Gelegenheit einen Vortrag zum Thema 3D-Grafik zu halten. Das Auditorium bestand aus Ingenieurskollegen. Die Präsentation von damals diente als Grundlage für diese Website.