Buch der Toten: Photogrammetrie-Assets, Bäume, VFX

In dieser Blogserie werden wir alle Aspekte der Erstellung unserer Demo "Book of the Dead" durchgehen. Heute konzentrieren wir uns auf Photogrammetrie-Assets, Bäume und VFX. Dies ist der vierte Blog in dieser Reihe. Schauen Sie sich die letzten beiden Blogs an, in denen es um die Erstellung von Charakteren und Konzeptzeichnungen für "Book of the Dead" geht.
Hallo, mein Name ist Zdravko Pavlov und ich bin ein CG- und VFX-Künstler mit Erfahrung in VFX, Video-Compositing, Schnitt und Grafikdesign. Ich arbeite seit 2014 mit dem Demo-Team von Unity zusammen und habe verschiedene Partikel, Rigid Body Dynamics und Stoffsimulationen zu den Demos "Wikingerdorf", "Der Schmied" und "Adam" beigetragen.
Das "Book Of The Dead"-Demo war ein bisschen anders. Für mich war das völliges Neuland, da meine Aufgabe bei diesem Projekt darin bestand, verschiedene Umgebungselemente mit Hilfe der Photogrammetrie zu erstellen. Da Outdoor-Fotografie mein Hobby ist, war ich mehr als glücklich, eine solche Aufgabe zu übernehmen. Bäume schaffen? Ich meine, wie schwer kann das schon sein, oder? Im folgenden Blogbeitrag werde ich versuchen, alles zu beschreiben, was ich in der Vorproduktions- und Entwicklungsphase des Projekts gelernt habe.
Glücklicherweise ist das Internet zu diesem Zeitpunkt voll von wertvollen Informationen über diesen Prozess, und so begann mein Lernen dort. In den meisten Artikeln wird gesagt, dass Sie eine DSLR-Kamera mit einem 50-mm-Objektiv benötigen. Da ich zu diesem Zeitpunkt keine zur Verfügung hatte, beschloss ich, meine ersten Tests mit meiner spiegellosen Sony a7II mit 24 MP und einem 16 mm-35 mm-Zoomobjektiv durchzuführen. Und ich kann Ihnen gleich sagen, dass es sehr gut funktioniert! Das breitere Objektiv führt zu einer stärkeren Verzerrung, aber das kann man z. B. in Lightroom korrigieren, aber eigentlich ist es besser, wenn man das nicht tut! Die Photogrammetrie-Software geht damit sehr gut um. Prime-Objektive sind starrer und sollten theoretisch ein schärferes Bild liefern. Sie sind wirklich großartig, wenn man in einer kontrollierten Studioumgebung scannt, und ich empfehle sie in solchen Szenarien sehr. In der Praxis ist es jedoch von Vorteil, wenn Sie das gewünschte Objekt mit einem hochwertigen Zoomobjektiv richtig einrahmen können.






Ich habe die meisten der gängigen Photogrammetrieprogramme ausprobiert, und einige von ihnen haben recht gut funktioniert. Ich habe mich für RealityCapture entschieden, weil es wesentlich leistungsfähiger ist und eine große Anzahl von Fotos verarbeiten kann, ohne dass der Arbeitsspeicher knapp wird. Es ist erstaunlich, wie viele Details er aus den Fotos rekonstruieren kann! Es ist mir gelungen, Modelle mit manchmal bis zu 185 Millionen Dreiecken zu erstellen und die Geometrie erfolgreich im PLY-Format zu exportieren.


Das ist natürlich mehr als genug und auch ein bisschen extrem. Die meisten meiner Rekonstruktionen ergaben etwa 50 bis 90 Millionen Dreiecke. Zunächst habe ich den GF980TI verwendet, bin dann aber auf den GF1080 umgestiegen, der mir einen leichten Leistungsschub brachte.
Irgendwann habe ich auch meine Kamera auf eine 42MP Sony aRII mit einem Planar T* FE 50mm f/1.4 ZA Objektiv aufgerüstet. Die Verdoppelung der Auflösung und die Verwendung des überlegenen superscharfen Objektivs brachten mir jedoch nicht die "WOW"-Ergebnisse, die ich erwartet hatte. Zum einen bedeutet das längere (und schmalere) Festbrennweitenobjektiv, dass man ein paar Schritte zurücktreten muss, um die für eine erfolgreiche Rekonstruktion erforderliche Bildüberlappung zu erreichen. Das ist nicht immer möglich, wenn man sich mitten im Wald befindet, mit all den anderen Bäumen, Sträuchern und allem anderen. Das bedeutet auch, dass Sie doppelt so viele Gigabyte an Bilddaten verwalten, speichern und verarbeiten müssen. Aber das führt nicht unbedingt zu Scans mit höherer Auflösung. Mehr Bilder sind das A und O, und mit 24 Megapixeln lässt sich das besser bewältigen. Das mag offensichtlich klingen, aber es ist mir erst aufgefallen, als ich es selbst ausprobiert habe.

Wie ich bereits erwähnt habe, habe ich ein PLY-Format verwendet, um die wahnsinnig dichte Geometrie zu exportieren. Ich bevorzuge dies gegenüber FBX, auch wenn der PLY-Exporter von Reality Capture keine Skalierungs- und Achsenausrichtungssteuerung hatte, so dass die PLYs im Gegensatz zu den FBXs nicht skaliert und gedreht waren. Ich habe mich dafür entschieden, weil ich beim Backen von Texturen mit dem FBX einige Fehler erhielt. Auch der binäre FBX-Export wurde später implementiert.
Nicht viele Software kann mit dieser Menge an Polygonen umgehen, also habe ich die Datei einfach gespeichert und die Dezimierungsfunktionen von RC verwendet, um eine Low-Poly-Version des gleichen Modells zu erstellen. Normalerweise etwa 1 Million Dreiecke. Dieses kann dann in ZBrush, MeshLab oder einer anderen Modellierungssoftware geöffnet werden, wo es retopologisiert und ausgepackt werden kann. Je nach Modell habe ich unterschiedliche Techniken für die Retopologie verwendet. Oft mit ZRemesher und manchmal von Hand.



Dann habe ich xNormal zum Backen von Texturen verwendet. xNormal scheint sich nicht an den Hunderten von Millionen von Dreiecken zu stören und bewältigt sie mit Leichtigkeit. Ich habe die diffuse Textur mit Hilfe der Vertex-Farbinformationen gebacken. Die Scheiteldichte im Highpoly war mehr als ausreichend, um eine saubere und scharfe Textur ohne Interpolation zwischen den Scheiteln zu erzeugen. Ich habe die in RC integrierten Unwrapping- und Texturierungsfunktionen nie benutzt.
Wenn Ihre dichte Wolke jedoch aus irgendeinem Grund nicht dicht genug ist oder einige Bereiche fehlen (wie im Bild unten), kann die Projektion einer Textur aus Ihren Fotos diesen Bereichen zusätzliche Details verleihen.

In den meisten Photogrammetrie-Tutorials lernen Sie, dass es am besten ist, wenn Sie beim Scannen eines Objekts direkte, harte Beleuchtung und Schatten vermeiden. Wenn es sich um einen kleinen Felsen handelt, den Sie fotografieren wollen, können Sie ihn in den Schatten oder sogar ins Studio bringen und Softboxen und Drehteller verwenden. Mit Bäumen kann man das aber nicht wirklich machen, also habe ich die Wettervorhersage beobachtet und auf bewölktes Wetter gehofft. Doch selbst bei bedecktem Himmel gab es einige Schatten und Umgebungsunschärfen. Dies wird mit dem DeLighting-Werkzeug von Unity gelöst. Alles, was man braucht, ist eine Normal Map, eine Bent Normal Map und Baked AO. Dabei bleiben die diffusen Werte erhalten, während die Schatten entfernt werden.

Die so entstandenen Assets wurden dann in Unity importiert, um die dynamische Beleuchtung und die Shader zu testen.



Manchmal ist es einfach nicht möglich, jeden einzelnen Teil Ihres Modells zu erfassen. Entweder gibt es ein Hindernis und man kann nicht alle Winkel erwischen. Manchmal hat man es eilig oder der Akku ist leer und man übersieht etwas, was man erst merkt, wenn man zu Hause ist und die Daten verarbeitet. Ich habe viele solcher Fehler gemacht, aber dann konnte ich einen Teil meiner Arbeit retten, indem ich mit Substance Painter einen Stempel klonte und versuchte, die fehlenden Daten zu reparieren.
Für die meiste Zeit der Book of the Dead-Produktion hatte das Demo-Team keinen Environment Artist im Team, und wir waren auf der Suche nach einem. Ein Teil der Arbeit wurde an einen externen Umgebungszeichner, Tihomir Nyagolov, vergeben, der die ersten Erkundungen durchführte und die Umgebung weiß gestaltete, aber die Hauptlast der Arbeit lag bei dem Kreativ- und Art Director Veselin Efremov und mir. Jeder von uns ging in die nahe gelegenen Wälder, um Photogrammetriedaten zu erfassen, und die Arbeit ging natürlich in die Produktion der benötigten endgültigen Spiel-Assets über. Ich habe keinen Hintergrund im Bereich der Umgebungsgestaltung, und ich hatte keinerlei Erfahrung im Umgang mit Spieloptimierungen, LODs usw. Zu diesem Zeitpunkt gab es bereits einige Platzhalterbäume, die von Tihomir mit Hilfe von GrowFx erstellt worden waren, so dass ich sie nach und nach übernommen habe.
GrowFX hat sich als sehr leistungsfähiges und vielseitiges Werkzeug zur Erstellung aller Arten von Vegetation erwiesen. Es interagiert mit anderen Objekten in Ihrer Szene, so dass Sie alle Arten von einzigartigen und natürlich aussehenden Ergebnissen erzielen können. Er ist zwar nicht speziell für die Erstellung von Spielinhalten konzipiert, aber er ist gut steuerbar und kann für diese Aufgabe verwendet werden. Es handelt sich um ein 3DS Max-Plugin. Ich arbeite seit über 20 Jahren mit 3DS Max und fühle mich dort wirklich zu Hause. Leider setzt GrowFX auf einige veraltete 3DS Max-Komponenten wie die Kurvenbearbeitungsdialoge, die nicht sehr praktisch sind, aber es war dennoch ein gutes Werkzeug für die anstehende Aufgabe, so dass ich mich einfach damit abfinden musste.

Der Wald in Book of the Dead sollte hauptsächlich aus Nadelbäumen bestehen. In der Nähe meines Wohnorts gibt es einige schöne Wälder und Parks, also ging ich auf die "Jagd" und scannte einige davon. Dann fuhr ich damit fort, meine GrowFX-Kreationen auf die gescannten Modelle zu nähen. Der endgültige Baumstamm wurde aus gescannter Geometrie und einzigartiger Textur für den unteren Teil zusammengesetzt und mit einem prozedural generierten Stamm mit kachelbarer Textur für den Rest des Stammes bis hin zur Spitze verbunden.
Ein kleiner Teil der Unterseite wurde mit der Oberseite der Textur geklont, um sie kachelbar zu machen.
Es ist eine Sache, Felsen und Baumstämme zu photogrammetrieren, aber das Scannen von Tannennadeln ist eine ganz andere Sache. An dieser Stelle kam Quixel ins Spiel und stellte uns seine wunderschön gescannten Atlanten zur Verfügung. Sie arbeiteten mit dem Demo-Team zusammen und erstellten zahlreiche kleine Assets wie Gras, Sträucher, Schutt, etc. speziell für "Book Of The Dead".
Wie ich eingangs erwähnt habe, komme ich aus dem Bereich der CG-Produktion und habe bereits große Wälder mit Multiscatter oder Forest Pack Pro erstellt und in V-ray gerendert. Für solche Aufgaben können Sie die Quixel Megascans-Atlanten so verwenden, wie sie sind, aber für ein Echtzeitprojekt wie Book of the Dead mussten wir einige Optimierungen vornehmen. Dazu gehörte die Erstellung größerer Elemente (Äste, Baumkronen usw.) und deren Anordnung in neuen Texturen, die Übertragung der ersten gescannten Daten für die Normal Maps, Displacement, Transmission usw.


Die vorhandenen normalen Megascans-Daten wurden leicht verändert, um einen falschen Gesamteindruck des Volumens zu vermitteln.


Ich habe verschiedene Techniken zur Bearbeitung von Normalen wie Normal Thief und andere selbst erstellte 3DSMax-Skripte verwendet, um die Äste mit dem Stamm zu verschmelzen.
Ändern der Scheitelnormalen, damit sie mit dem Stamm verschmelzen können
Auf diese Weise konnte ich verschiedene Arten von Kiefern herstellen.


Wir wollten, dass sich der Wald "lebendig" anfühlt, und der Wind war für uns ein entscheidendes Element. Die Bäume wurden von unserem Environment Artist Julien Heijmans für unsere Vertexshader-basierte Windanimationslösung eingerichtet.
Es gibt viele verschiedene Möglichkeiten, ein Vektorfeld zu erstellen, und ich habe mir verschiedene Optionen angesehen. Da ich mit PhoenixFD, dem Fluid Solver der Chaosgroup, vertraut bin, beschloss ich, zu sehen, welche Art von brauchbaren Daten ich daraus gewinnen kann, und sie in Unity einzubringen. Ich konnte die Geometrie der Szene exportieren, sie in 3DS Max als FBX einbringen und eine Flüssigkeit durchlaufen lassen, die um die Vegetation wirbelt und den turbulenten Windeffekt erzeugt. Die größeren Bäume schirmten die kleinere Vegetation ab, so dass der Effekt dort weniger auffällig war.


Ich habe die simulierte Sequenz mit Hilfe der integrierten PhoenixFD-Wiedergabesteuerung in einer Schleife abgespielt.
Die Vektorinformationen wurden dann durch eine PhoenixFD-Texmap gelesen, normalisiert und als diffuse Textur über die prozedural erzeugte Isofläche gelegt.


Die gerenderte Bildsequenz wurde dann wieder in Unity importiert, wo der endgültige Texturatlas zusammengestellt wurde. Früher habe ich das in After Effects gemacht, aber jetzt gibt es in Unity ein sehr praktisches Image Sequencer-Tool, mit dem man das fast automatisch machen kann. Es ist eines der neuen VFX-Tools, die vom GFX-Team von Unity in Paris entwickelt werden.

Der erstellte Texturatlas wurde in der Szene platziert. Ich habe ein einfaches Kästchen erstellt, um meine Simulationsgrenzen zu definieren, und dieses als Positionsreferenz verwendet.
Um es klar zu sagen: Dies war ein Experiment, das es uns ermöglichte, die visuellen Aspekte einiger Aufnahmen in dem von uns gezeigten Filmteaser zu verbessern. Diese Methode kann ich empfehlen, wenn Sie Unity für die Filmproduktion verwenden. Es fügt sich in die prozedurale Vertex-Shader-basierte Windanimationslösung ein, die von unserem Tech Lead Torbjorn Laedre für das Projekt entwickelt wurde und in den meisten Szenen des Teasers sowie in der Konsolenversion des Projekts, die wir auf der GDC gezeigt haben, verwendet wurde.
In einem der nächsten Blogeinträge werden Julien und Torbjorn näher erläutern, wie wir mit dem Wind umgegangen sind und welche Lösung wir letztendlich gewählt haben.

Ich habe schon früh damit begonnen, einige Ideen über den Hive zu blockieren.


Nach dem anfänglichen Design begann ich mit der Erstellung verschiedener spielfertiger Elemente, um die Unity-Assets zu erstellen.



Für die schraubenbegeisterte Menge habe ich einige Körpervarianten erforscht. Auch hier habe ich PhoenixFD von Chaosgroup verwendet und eine Flüssigkeitsrauchsimulation durchgeführt. Dann habe ich die schraubenförmige Form ausgeschnitten und eine Isofläche auf der Grundlage der Flüssigkeitstemperatur erstellt
Einige mit PhoenixFD durchgeführte Formuntersuchungen
Diese Methode ermöglichte uns eine schnelle Vorschau verschiedener Formen und wurde als allgemeine Referenz verwendet. Das endgültige Screwie-Charaktermodell wurde von Plamen (Paco) Tamnev erstellt, und ihr könnt alles darüber in seinem unglaublich detaillierten Blogbeitrag lesen.
Um den tropfenden Saft auf dem Gesicht des Screwies zu erreichen, habe ich wieder PhoenixFD verwendet. Ich habe mit einem kleinen Proof-of-Concept begonnen, um zu zeigen, welche Möglichkeiten wir mit einer dichten, viskosen Flüssigkeit haben und was wir damit erreichen können.

Ich war mit dem Gesamtergebnis und der fließenden Bewegung recht zufrieden, also fuhr ich mit dem Aufbau des echten Modells fort. Ziel war es, zu verhindern, dass sich bei der Simulation zu viele Einzelteile und Tröpfchen bilden.

So konnte ich ein einzelnes Bild aus der generierten Geometriesequenz nehmen, es retopologisieren, UVs erstellen und es mit WRAP3 über den Rest der Formen in der Sequenz projizieren. Als Ergebnis habe ich eine Reihe von Überblendungsformen, die dieselbe Topologie verwenden.

Ich habe auch versucht, eine Saftsimulation über einige der Baumstämme laufen zu lassen.



Wir haben sie im endgültigen Projekt nicht mehr verwendet. Dennoch finde ich es eine gute Möglichkeit, den gescannten Modellen einige Details hinzuzufügen.
---
Bleiben Sie dran für den nächsten Blogbeitrag in dieser Reihe. Gemeinsam mit Julien Heijmans werden wir die Umgebungsgestaltung für Book of the Dead genauer unter die Lupe nehmen.
Treffen Sie uns am 19. Juni auf der Unite Berlin, um selbst durch die Book of the Dead-Umgebung auf einer Konsole zu gehen und Julien Heijmans' Präsentation über Environment Art in der Demo beizuwohnen. Den vollständigen Zeitplan finden Sie hier.