Halt! Weiterlesen! Die Überschrift mag sich zwar ein wenig spacig anhören – aber heute geht es um ein wirklich wichtiges Thema. Ein Thema, das viel mehr Verständnis verdient. Jede Anwendung, die mit einer 3D-Engine entwickelt wird, ist bestimmten Limitationen unterworfen, denn jedes Gerät, welches diese anzeigen soll, hat bestimmte Hardware-Flaschenhälse. Ob für einen modernen Desktop-PC mit Grafikkarte entwickelt wird, oder für Smartphones und Tablets – das stellt einen meilenweiten Unterschied dar. Schon früh im Verlauf eines Projekts muss daher entschieden werden auf welchen Systemen die Anwendung lauffähig sein soll. Zwar ist es auch möglich im Nachhinein eine Anwendung, die für highend-Systeme entwickelt wurde, auf ein Mobilgerät zu portieren: Aber dafür ist eine Menge Zeit (und frustresistente Entwickler, die niemals aufgeben) von Nöten.
Wie funktioniert 3D eigentlich?
Ein System wie die Unreal Engine wird auch „Renderer“ genannt. Es handelt sich dabei um eine Software die mit dem Einsatz von Grafikkarte , Arbeitsspeicher und CPU ein 3-dimensionales Bild berechnet und – sichtbar für uns Menschen – auf einem Bildschirm oder in einer VR-Brille ausgibt. Jedes der 3D-Objekte in einer Szene ist dabei eine Ansammlung von Dreiecken (zumindest in den meisten Echtzeit-Engines), so genannten Polygonen. Diese Polygone besitzen Eckpunkte, die sich Vertices nennen. Und auf diese Polygone werden wiederum Texturen „gespannt“, die die Oberfläche des jeweiligen Objektes ausmachen. Die Oberflächen sind dabei meist aus mehreren Ebenen aufgebaut um bestimmte Oberflächeneigenschaften zu beschreiben. Zum Beispiel, wie rau oder glatt eine Oberfläche ist, oder wo sich Erhebungen und Senkungen in der Oberfläche befinden (die Kombination mehrerer Texturen und der Beschreibung einer Oberfläche nennt man auch „Shader“). Abhängig von der Menge an Shadern und der Menge der Objekte in einer Szene muss eine bestimmte Menge an „Drawcalls“ vom jeweiligen System geleistet werden. Die Drawcalls beschreiben dabei stark vereinfacht gesagt, wie häufig innerhalb einer Zeiteinheit Oberflächen und Objekte in einer Szene visuell dargestellt werden müssen.
Optimieren oder verlieren
Die Flaschenhälse der Hardware sorgen seit jeher dafür, dass man sich ganz genau überlegen muss, wie man Probleme im 3D-Raum löst, Objekte aufbaut oder auch durch visuelle Tricks Dinge vorgaukelt, die gar nicht da sind. Insbesondere die Entwicklung für Mobile APPs bringt große Optimierungsaufwände mit sich. Erreicht man das Limit der Hardware, so beginnt die Anwendung zu ruckeln – oder, schlimmer noch – das Gerät überhitzt und es kommt zum Crash.
Glücklicherweise haben sich in den letzten Jahren sehr viele Firmen mit der Optimierung von 3D-Objekten und Szenen beschäftigt. Bis vor Kurzem war dabei noch das System der „LODs“ – Level of Detail – die meist verbreitete Optimierungsmöglichkeit. Dabei wird ein 3D-Modell in mehreren Versionen abgespeichert, die verschieden hohe Detailgrade repräsentieren. Abhängig von der Entfernung des Nutzers zum 3D Modell kann man so einfach Leistung sparen: Ist der Nutzer sehr weit entfernt, wird einfach ein nur sehr simples Modell angezeigt. Mit dem Release von Unreal 5 revolutioniert Epic Games auch diese Technologie, zumindest auf Desktop PCs. Dank dem „Nanite Virtualized Geometry“ Algorithmus lassen sich plötzlich nahezu beliebige Mengen an hochkomplexen 3D Modellen in einer Anwendung darstellen. Die Menge der Polygone spielt dabei keinerlei Rolle mehr. Die Technologie zerlegt hierzu bereits beim Import in die Engine die Modelle in „Teilstücke“, so genannte Nanite clusters. Während des Renderings werden die Cluster je nach Kameraperspektive in verschiedenen Detailstufen ausgetauscht und verbinden sich perfekt und ohne Risse mit benachbarten Clustern innerhalb desselben Objekts – Quasi wie eine zerbrochene Ming-Vase, deren verschiedene Stücke in Echtzeit neu kombiniert werden. Insbesondere im Bereich der Architekturvisualisierung oder im Bereich der hochaufgelösten CAD-Daten beim Design von Fahrzeugen ermöglicht „Nanite“ die Programmierung zuvor nie dagewesener Echtzeitlösungen.
Das Bildmaterial in diesem Blogpost wurde Großteils von Epic Games zur Verfügung gestellt