Pleasure Park

Pleasure Park (Freizeitpark-Simulator, Teil 8)

In dieser Reihe geht es um ein geplantes Computerspiel mit dem Arbeitstitel “Pleasure Park“, in welchem der Spieler einen Freizeitpark aufbauen kann. Die Beiträge stellen eine Art Tagebuch dar, in welchem der Fortschritt Ideen und Überlegungen in groben Zügen dokumentiert werden. Alle Beiträge zu diesem Thema werden hier angezeigt.

Texturen und Material


Pleasure Park
Die virtuellen Objekte in einem Computerspiel sehen nicht sonderlich realistisch aus wenn sie nur einfarbige Modelle sind. Um beispielsweise die Maserung von Holz oder die feinen Adern eines Blattes darzustellen, werden die Modelle mit Texturen versehen, so als würde man ein Foto auf das Objekt kleben. Der Vorgang ist sehr komplex. Teilweise werden mehrere Texturen übereinandergelegt und miteinander vermischt. Zudem gibt es Texturen, die nur Informationen über Unebenheiten der Oberfläche enthalten. 3D-Modelle, die so fein sind, dass sie jeden Kratzer auf der Oberfläche beinhalten, wären viel zu umfangreich und könnten mit der üblichen Hardware nicht in Echtzeit dargestellt werden. Also gestaltet man die Modelle so grob wie möglich und “speichert” die Eigenschaften der Oberfläche in ein Bild. Unter Zuhilfenahme dieses Bildes kann dann der Einfluss von Kratzern und Dellen auf einfallendes Licht simuliert werden. Das Ergebnis ist zwar nicht physikalisch korrekt, aber im Endergebnis sehen die so berechneten Oberflächen täuschend echt aus.

Pleasure Park
Die vielen Möglichkeiten erschweren ein Zusammenspiel der bei der Spieleerstellung verwendeten Programme. So kann die Entwicklungsumgebung Unity nicht einfach die Texturen übernehmen, wie sie beispielsweise mit der Modellierungs-Software Blender eingebunden wurden. Wenn ein in Blender erstelltes und texturiertes 3D-Modell im FBX-Format exportiert und dann in Unity importiert wird, werden die Texturen nicht angezeigt. Die in der FBX-Datei enthaltenen Texturen müssen zunächst aus der Datei extrahiert werden. In Unity kann dann ein Material erstellt werden, das unter anderem auch die Texturen enthält. Es sind aber noch weitere Informationen notwendig, die zunächst manuell festgelegt werden müssen. So ist beispielsweise einzustellen, ob und wie Transparenzen gehandhabt werden.

Die in den beiden Screenshots gezeigten Blätter am Baum wurden beispielsweise einfach als Foto auf ein Rechteck gelegt. Dadurch reduziert sich die Komplexität vieler Blätter und feiner Äste auf ein simples Geometrieobjekt, das mit wenig Rechenaufwand gezeichnet werden kann. Naheliegenderweise muss aber der Bereich zwischen den Blättern ausgeblendet werden. Andernfalls würden die Rechteckigen Polygone beispielsweise als schwarze Flächen sichtbar sein wie im ersten Screenshot. Mit geeigneten Einstellungen sieht das Ergebnis sehr viel realistischer aus wie der zweite Screenshot zeigt.
Zu bedenken ist auch, dass üblicherweise nur die sichtbare Vorderseite von Polygonen berücksichtigt wird. Die Rückseite wird nicht zur Bildberechnung herangezogen. Dies ist eine weitere Optimierungsmaßnahme die sich Backface Culling nennt. Bei zweidimensionalen Objekten kann dies jedoch unerwünscht sein. Im Falle der Blätter muss sichergestellt werden, dass sie unabhängig davon angezeigt werden, von welcher Seite man sie betrachtet. Das Material muss also als Double Sided definiert werden.