Es gibt mehrere unterschiedliche Technologien und Ansätze, um die Programmierung von 3D-Anwendungen und 3D-Spielen zu erlernen. Auf dieser Webseite stellen wir einige davon vor und zeigen auf, wie sich diese erlernen lassen.
Es gibt eine Reihe von grafischen Low-Level 3D-APIs. Die bekanntesten davon sind OpenGL (bzw. die Embedded Variante OpenGL-ES) der Khronos Group, DirectX von Microsoft sowie das von Apple entwickelte Metal.
Es gibt 3D-Grafikchips unterschiedlicher Ansätze verschiedener Technologien. Obwohl diese abweichende Funktionsweisen umsetzen, ist es dennoch möglich, auf jedem dieser die gleiche Software laufen zu lassen. Dies ist dadurch möglich, dass es die genannten 3D-API Standards gibt. Diese spezifizieren einheitliche Schnittstellen, welche die Grafikchip-Hersteller einhalten und implementieren können, welche die Technik mittels Softwareschnittstelle auf einen gemeinsamen Nenner bringt.
Diese Low-Level 3D-APIs können grundsätzlich direkt programmiert werden. Anwendungsprogrammierer können eine 3D-Anwendung direkt auf OpenGL aufsetzen. Jedoch sind diese durch die niedrige Schicht relativ aufwendig zu programmieren. Auf dieser Ebene lassen sich Dreiecke zeichnen, die transformiert und texturiert werden können. Oder es können einzelne Farbpixel gesetzt werden. Die Anforderungen der heutigen Zeit sind jedoch deutlich höher gesteckt. In Anwendungen werden komplexe 3D-Modelle animiert dargestellt oder Buttons, die per Mausklick betätigt werden können. Hier wäre es für den Anwendungsentwickler sehr mühsam, für jedes einzelne Element die Funktionsweise auf einzelne Dreieckslisten und Texturbitmaps herunterzubrechen.
Aus diesem Grund gibt es die sogenannte Grafikengine-Softwareschicht, die sich oberhalb der Low-Level 3D-APIs ansiedelt. Hier werden algorithmisch die Module umgesetzt, welche die Lücke von den texturierbaren 3D-Dreiecken und den komplexen animierten 3D-Grafikmodellen und Bedienelementen usw. füllt. Auch werden in einer Grafikengine oftmals mehrere unterschiedliche Low-Level 3D-APIs umgesetzt. Das ermöglicht die Lauffähigkeit der Software auf unterschiedlichen Architekturen.
Ein angehender 3D-Grafikprogrammierer muss somit für sich eine Entscheidung treffen, welche Ziele er erreichen möchte. Möchte jemand 3D-Anwendungen oder 3D-Spiele entwickeln, so ist das Erlernen einer der etablierten Grafikengines zu empfehlen. Zur momentanen Zeit handelt es sich hierbei um die Unreal Engine und das etwas einsteigerfreundlichere Unity 3D.
Möchte jemand die mathematischen Grundlagen der 3D-Transformationen erlernen, auf einfacheren Geräten 3D-Grafiken umsetzen oder eigene speziell optimierte Spezialanwendungen oder gar eine Grafikengine implementieren, so ist beispielsweise OpenGL oder eine der anderen genannten Low-Level 3D-Grafik-APIs eine geeignete Wahl.
Zunächst einmal sei darauf verwiesen, dass auf YouTube eine ganze Reihe an kostenfreien Einsteiger-Tutorials zu den unterschiedlichen Bereichen gefunden werden können. Hier bekommt man einen recht guten ersten Überblick, ohne groß Zeit und Geld zu investieren.
Darüber hinaus gibt es eine Reihe von etablierten Lehrbüchern, die das Erlernen der 3D-Programmierung vereinfachen.
Werden konkretere Ziele verfolgt, gibt es zudem die Möglichkeit bei mir in 1:1 Onlinecoachings gemeinsam 3D-Grafikanwendungen zu implementieren. Anhand frei wählbarer Zielvorgaben gebe ich hierbei mittels Screensharing und Audio-Übertragung Hilfestellung und erkläre Hintergründe für das Gesamtverständnis.
Auch wenn die aktuelle Auflage schon ein paar Jahre alt ist, kann ich dieses Buch immer noch denjenigen wärmstens empfehlen, die einen eigenständigen oder begleitenden Einstieg in die Grafikengine Unity 3D suchen. Entsprechendes Basis-Programmierwissen sollte vorhanden sein.
Dieses Buch macht sehr gut verständlich, wie die Grafikengine Unity 3D aufgebaut ist, wie man sie verwendet und welche Schritte notwendig sind, um ein gutes Grundverständnis und einen soliden Einstieg zu gewinnen.
Dipl.-Inf. Andreas Osswald
Im Jahr 2003 habe ich mich noch während meines Studiums selbständig gemacht und bin seitdem als freiberuflicher Grafikprogrammierer in Industrieprojekten tätig. Parallel dazu habe ich Apps, Computerspiele als auch Virtual Reality Erfahrungen umgesetzt.
2007 habe ich den Diplom-Studiengang Informatik an der Friedrich-Alexander-Universität Erlangen-Nürnberg mit Schwerpunktfach grafische Datenverarbeitung sowie den Hauptfächern Künstliche Intelligenz und Computernetzwerke sowie dem Nebenfach Astrophysik erfolgreich abgeschlossen.