Photogrammetrie in Unity: Reale Objekte in digitale Assets verwandeln

Bei der Photogrammetrie werden mehrere Fotos von realen Objekten verwendet, um spielfertige Objekte zu erstellen. Sie eignet sich am besten für Objekte, deren Herstellung in einer 3D-Skulpturensoftware zeitaufwändig ist. In diesem Beitrag wird erklärt, wie neue Unity-Funktionen Sie bei der Arbeit mit Photogrammetrie unterstützen. Außerdem stellen wir unser Fontainebleau-Fotogrammetrie-Demoprojekt zur Verfügung, einschließlich aller Meshes, Texturen und Materialien.
Letztes Jahr haben wir auf der Siggraph 2017 einen sehr detaillierten Feldführer für professionelle Künstler vorgestellt. Es führt Sie Schritt für Schritt durch den gesamten Prozess der Erstellung hochwertiger, wiederverwendbarer und spielfähiger digitaler Assets aus Fotos und Videos.
Im Rahmen dieses Workflows hat das Team das De-Lighting-Tool im Asset Store veröffentlicht. Es ermöglicht Künstlern und Entwicklern, Beleuchtungsinformationen aus Photogrammetrie-Texturen zu entfernen, so dass die endgültigen Assets unter allen Lichtbedingungen verwendet werden können. Auf der Siggraph hielten wir auch einen Vortrag über einen Überblick über den Photogrammetrie-Workflow und teilten technische Details über das De-Lighting-Tool.
In diesem Jahr haben wir eine Schritt-für-Schritt-Anleitung erstellt, die zeigt, wie man einen Layered Shader verwendet, um das gleiche Qualitätsniveau wie in der Anleitung zum Fotogrammetrie-Workflow zu erreichen, aber das Budget für den Texturspeicher optimiert, um Ihren Spielanforderungen gerecht zu werden.
Hier finden Sie einen Überblick über die Schritte zur Erstellung von Material mit Photogrammetrie-Assets in Unity:
Sehen Sie sich den vollständigen Leitfaden an:
Schichtung von Materialien in Unity mit Hight-Definition (HD) Render Pipeline
Die Photogrammetrie ermöglicht ein qualitatives Ergebnis, erfordert aber eine sehr hohe Texturauflösung, um Details zu erhalten, wie hier gezeigt:

Dies ist für die Erstellung von Spielen aufgrund des Speicherbudgets unpraktisch und erlaubt es nicht, dem Objekt Variationen hinzuzufügen.
Mit Unity 2018.1 beta wurde eine Vorschau auf die skriptfähige Render-Pipeline eingeführt. Wir werden mit Unity 2018.1 zwei integrierte Render-Pipelines veröffentlichen: die Lightweight (LW) Render Pipeline und die High-Definition (HD) Render Pipeline. HD Pipeline bietet einen Shader für die Erstellung von Photogrammetrie-Materialien an: LayeredLit.
Sie können sehen, dass das Hauptmaterial im obigen Bild mit anderen Materialien wie Stein, Bodenelement und Moos gemischt ist. Diese anderen Materialien sind verfliesbar. Das bedeutet, dass sie sich um Objekte wickeln lassen und auf verschiedenen Objekten wiederverwendet werden können. Die Verwendung einer Kombination von Materialien ermöglicht eine ähnliche visuelle Qualität wie eine hochauflösende Textur (d. h. eine ähnliche Texeldichte auf dem Bildschirm), aber mit einer niedrig aufgelösten Textur, was Speicherplatz spart:

Mit einem Ebenenshader können Sie Texturen zwischen verschiedenen Elementen austauschen und kachelbare Materialien kombinieren, um Variationen hinzuzufügen. Dies macht es Ihnen leicht, eine große Welt zu geringen Kosten zu bevölkern:

Wir haben die Fontainebleau-Demo erstellt, um den Fotogrammetrie-Workflow und die Verwendung des LayeredLit-Shaders zu veranschaulichen. Diese technische Demo wurde unter Berücksichtigung der Bedingungen für die Spieleentwicklung erstellt: Es handelt sich um eine repräsentative Spielstufe, die für die Standardplattform PlayStation 4 bei 1080p @ 30fps ausgelegt ist. Der Level stellt einen Teil des Waldes von Fontainebleau dar und verwendet eine begrenzte Anzahl von Meshes und Texturen, die mit Hilfe des LayeredLit-Shaders in verschiedenen Variationen wiederverwendet werden. Es gibt einen spielbaren First-Person- und Third-Person-Modus, um durch den Wald zu gehen. Die Ausrichtung auf Konsolen wie Xbox One oder PlayStation 4 erfordert Überlegungen, wie man das Beste aus diesen Plattformen herausholen kann.

Die Demo unterstützt auch drei verschiedene Beleuchtungsbedingungen, um zu zeigen, dass korrekt erstellte und entleuchtete Assets unter allen Beleuchtungsbedingungen gut funktionieren:
Tageslicht:

Beleuchtung bei Sonnenuntergang:

Nachtbeleuchtung bei ausgeschaltetem Licht:

Nachtbeleuchtung bei eingeschaltetem Licht:

Schließlich haben wir 3 Modi zur Erkundung der Demo eingebaut:
- Kinomodus: Wählen Sie Ihr Beleuchtungsprogramm, lehnen Sie sich zurück, entspannen Sie sich und genießen Sie die Show,
- Ego- und 3-Personen-Modi: Dies sind sehr rudimentäre Erkundungsmodi, in denen Sie die Umgebung auf eigene Faust entdecken können, mit Boni im Ego-Modus.
Fontainebleau ist der Name eines Waldes in der Nähe des Büros von Unity Paris. Der Wald ist ein gutes Thema, um über Photogrammetrie zu sprechen. Natürliche Ressourcen sind oft komplex und schwer realistisch zu reproduzieren. Für unsere Künstler war es wichtig, das Thema in ihrer Nähe zu haben, um alle Tests durchführen zu können, die für die Analyse des bestmöglichen Workflows für Spiele erforderlich sind.

Das Projekt ist für 2018.3 vorgesehen und verwendet das HDRP-Paket 4.8.0.
Sie können den vorgefertigten PC-Standalone-Player hier herunterladen.
Das Projekt ist nur hier auf GitHub zum Klonen verfügbar. Das bedeutet, dass das Herunterladen einer Zip-Datei über den grünen Button auf Github nicht funktioniert. Sie müssen eine Version von git verwenden, die über LFS verfügt, um das Projekt zu erhalten. Werfen Sie einen Blick darauf und inspizieren Sie die Photogrammetrie-Assets: Meshes, Texturen und Materialien. Außerdem dürfen Sie die Assets ohne Einschränkung in Ihrem Unity-Projekt wiederverwenden.

Zu Beginn kann der Photogrammetrieprozess schwer zu bewältigen sein, aber das Ergebnis ist es wert.
Wir hoffen, dass diese Demo einige von Ihnen davon überzeugen kann, Photogrammetrie einzusetzen, um die Qualität von Assets zu verbessern und Ihre Projekte zu beschleunigen.
Wir freuen uns darauf zu sehen, was ihr macht und mit euch über diese Demo und den Photogrammetrie-Workflow in Unity im Allgemeinen in diesem Forumsthread zu sprechen.
