Arbeiten mit physikalisch basierten Schattierungen: Ein praktischer Ansatz

Während der Entwicklung von Unity 5 haben wir unser Wikingerdorf-Projekt intern als Testgelände für Shading- und Beleuchtungs-Workflows genutzt.
Wenn Sie die Beta-Version von Unity 5 verwenden, können Sie das Viking Village-Paket aus dem Asset Store herunterladen, um einen Einblick zu erhalten, wie Sie eine Szene in Unity 5 zusammenstellen und beleuchten können. Im Folgenden stellen wir auch einige unserer Erkenntnisse vor.
Um sicherzustellen, dass sich Ihre Texturierungs- und Shader-Konfiguration angemessen verhält, empfehlen wir Ihnen, eine einfache Szene mit verschiedenen Beleuchtungskonfigurationen zu verwenden. Das könnte bedeuten, dass unterschiedliche Skyboxen, Lichter usw. vorhanden sind - alles, was zur Beleuchtung Ihres Modells beiträgt.
Wenn Sie Unity 5 öffnen, werden Sie feststellen, dass jede neue leere Szene einen prozeduralen Himmel sowie Standardeinstellungen für Umgebung und Reflexion hat. Dies ist ein geeigneter Ausgangspunkt.

Für unsere Vorlagenumgebung haben wir verwendet:
- HDR-Kamera-Rendering
- Einige Sonden für gestreute Reflexion (für lokalisierte Reflexionen an Objekten)
- Eine Gruppe von Lichtsonden
- Eine Reihe von HDR-Himmeltexturen und -Materialien sowie prozeduralen Himmeln. Der Himmel, der mit diesem Projekt ausgeliefert wird, wurde von Bob Groothuis, dem Autor von Dutch Skies 360, speziell für Unity entwickelt.
- Off-white Richtstrahler mit angepasster Intensität und HDR-Himmelsfarbe
Anpassen von Himmelstextur-Panoramen
Die meisten Himmelstexturen enthalten die Sonne (zusammen mit Fackeln usw.), so dass das Licht der Sonne von den Oberflächen reflektiert wird. Dies kann zu drei Problemen führen:
1) Das gerichtete Licht, das Sie zur Darstellung der Sonne verwenden, muss genau mit der Richtung der Sonne übereinstimmen, die auf die Skybox gemalt wurde, sonst gibt es mehrere spiegelnde Hotspots auf dem Material.
2) Die reflektierte Sonne und der spiegelnde Hotspot überschneiden sich, was zu intensiven spiegelnden Glanzlichtern führt.
3) Die eingebrannte Sonnenreflexion wird nicht verdeckt, wenn sich die Oberfläche im Schatten befindet, und sie wird bei Dunkelheit übermäßig glänzend.

Infolgedessen müssen das Sonnenlicht, die Lichtreflexe, die Sonnenstrahlen und die HDR-Werte aus der Himmelstextur herausgeschnitten und mit Hilfe von gerichteten Lichtern neu hinzugefügt werden.
Erstellung von physikalisch basierten Schattierungsmaterialien
Um das Rätselraten bei der Emulation realer Materialien zu vermeiden, ist es sinnvoll, sich an einer zuverlässigen, bekannten Referenz zu orientieren Der Standard-Shader unterstützt sowohl eine Glanzfarbe als auch einen Metallic-Workflow. Sie bestimmen beide die Farbe der Reflexionen, die die
die Oberfläche. Im Specular-Workflow wird die Farbe direkt angegeben, während im Metallic-Workflow die Farbe aus einer Kombination aus der diffusen Farbe und dem Metallic-Wert abgeleitet wird, der in den Standard-Shader-Steuerungen festgelegt wurde.
Für das Viking Village Projekt haben wir den Standard Shader's Specular Color Workflow verwendet. Unsere Kalibrierungsszene, die Sie im Asset Store herunterladen können, enthält einige praktische Kalibrierungstabellen. Wir beziehen uns regelmäßig auf die Karten, wenn
die Gestaltung unserer Materialien.
Bei der Annäherung an Materialien können Sie zwischen dem so genannten Spiegelglanz- und dem Metallic-Workflow wählen, die jeweils über einen eigenen Satz von Werten und ein Referenzdiagramm verfügen. Im Specular-Workflow wählen Sie direkt die Farbe des spiegelnd reflektierten Lichts, im Metallic-Workflow wählen Sie, ob sich das Material wie ein Metall verhält, wenn es beleuchtet wird.


Die Wahl zwischen Spiegelglanz- und Metallic-Workflows ist größtenteils eine Frage der persönlichen Vorliebe, da Sie in der Regel das gleiche Ergebnis erzielen können, unabhängig davon, welchen Workflow Sie verwenden.
Abgesehen von Diagrammen und Werten ist das Sammeln von Mustern von realen Oberflächen sehr wertvoll. Es ist sehr hilfreich, die Art der Oberfläche zu finden, die Sie imitieren wollen, und zu versuchen, ein Verständnis dafür zu bekommen, wie sie auf Licht reagiert.
Einrichten des Materials
Zu Beginn ist es oft nützlich, eine einfache, aber veränderbare Darstellung der Materialien mit Farben, Werten und Schiebereglern aus den Kalibrierungstabellen zu erstellen. Anschließend können Sie Texturen auftragen, wobei das Originalmaterial als Referenz dient, um sicherzustellen, dass die Merkmale erhalten bleiben.

Die Texturen im Wikingerdorf wurden sowohl mit manuellen-traditionellen Methoden (Fotos + Tweaking) als auch durch gescannte Diffuse/Albedo, Specular-, Gloss- und Normal-Map-Bilder erstellt, die uns von Quixel zur Verfügung gestellt wurden.
Seien Sie vorsichtig, wenn Sie Details in den Texturkanälen des Materials hinzufügen. Zum Beispiel lohnt es sich in der Regel, keine Beleuchtung (Ambient Occlusion, Schatten usw.) in Ihre Texturen einzubauen: Denken Sie daran, dass das physikalisch basierte Rendering die gesamte Beleuchtung liefert, die Sie benötigen.
Natürlich ist die Retusche von Fotos anspruchsvoller als die von gescannten Daten, insbesondere wenn es um PBS-freundliche Werte geht. Es gibt Tools, die den Prozess erleichtern, wie die Quixel Suite und Allegorithmic Substance Painter.
Gescannte Daten
PBS-kalibrierte gescannte Texturen erleichtern die Bearbeitung, da die Daten bereits in Kanäle aufgeteilt sind und Werte für Albedo, Spiegelung und Glätte enthalten. Am besten ist es, wenn die Software, die die PBS-kalibrierten Daten liefert, ein Unity-Profil für den Export enthält. Sie können die Referenztabellen immer zur Überprüfung der Richtigkeit und als Leitfaden verwenden, wenn Sie die Werte mit Photoshop oder einem ähnlichen Werkzeug kalibrieren müssen.
Beispiele für Material
Die Wikingerdorf-Szene bietet eine große Menge an Inhalten und versucht gleichzeitig, den Speicherverbrauch der Texturen in Grenzen zu halten. Schauen wir uns als Beispiel an, wie wir einen 10 Meter hohen Holzkran aufstellen.
Beachten Sie, dass viele Texturen, insbesondere spiegelnde und diffuse Texturen, homogen sind und unterschiedliche Auflösungen erfordern.



• Albedo texture: Im spiegelnden Arbeitsablauf stellt er die Farbe des diffusen Lichts dar, das von der Oberfläche zurückgeworfen wird. Sie muss nicht unbedingt sehr detailliert sein, wie auf dem linken Bild (Kran) zu sehen ist, während die rechte Textur (Schild) erhebliche einzigartige Details enthält.


- Spiegelnd: Nichtmetalle (Isolatoren) sind vergleichsweise dunkel und in Graustufen dargestellt, während Metallwerte hell sind und gefärbt sein können (denken Sie daran, dass Rost, Öl und Schmutz auf einem Metall nicht metallisch sind). Die Spiegelung der Holzoberfläche profitierte nicht sehr von einer Spiegelungstextur, daher wurde ein Wert verwendet, anstatt eine Karte einzugeben.


- Glätte ist ein Schlüsselelement bei PBS-Werkstoffen. Sie trägt zu Variationen, Unvollkommenheiten und Details auf Oberflächen bei und hilft, deren Zustand und Alter darzustellen. Beim Kran war die Glätte über die gesamte Oberfläche hinweg ziemlich konstant und wurde daher durch einen Wert ersetzt. Dadurch wurde ein angemessener Gewinn an Texturspeicher erzielt.


- Die Okklusion gibt an, wie sehr verschiedene Punkte der Oberfläche dem Licht der Umgebung ausgesetzt sind. Ambient Occlusion hebt Oberflächendetails und Tiefe hervor, indem Umgebungslicht und Reflexionen in Bereichen mit wenig indirektem Licht gedämpft werden. Denken Sie daran, dass es auch die Möglichkeit gibt, SSAO (Screen Space Ambient Occlusion) in Ihrer Szene zu verwenden. Die Verwendung von SSAO und AO könnte dazu führen, dass bestimmte Bereiche doppelt abgedunkelt werden. In diesem Fall sollten Sie die AO-Karte als Hohlraumkarte behandeln.
Eine AO-Karte, die tiefe Risse und Falten hervorhebt, könnte die beste Option sein, wenn das Spiel SSAO und/oder Ambient Occlusion mit Lichtabbildung verwendet.

Sekundäre Texturen und Auflösung
Sekundäre Texturen können verwendet werden, um den Detailgrad zu erhöhen oder Variationen innerhalb des Materials zu erzeugen. Sie können mit der Eigenschaft Detailmaske maskiert werden.
Aufgrund der geringen Auflösung der primären diffusen Holztextur im Beispiel des Krans ist die sekundäre Textur von entscheidender Bedeutung. Sie verleiht der endgültigen Oberfläche die Feinheiten. In diesem Fall sind die Detailkarten gekachelt und haben eine relativ geringe Auflösung. Sie wiederholen sich auf vielen anderen Holzoberflächen, was zu einer erheblichen Einsparung von Texturspeicher führt.


Diese Arbeitsabläufe haben uns bei der Gestaltung des Projekts Viking Village sehr geholfen. Wir hoffen, dass sie auch für Sie nützlich sind, und freuen uns auf Ihre Kommentare!
Danksagung
Das Projekt Viking Village wurde in Zusammenarbeit mit dem Kreativteam von Quixel, dem Entwickler der HDR-Oberflächenerfassungstechnologie und der Quixel Megascans-Bibliothek mit PBS-tauglichen Texturen, ins Leben gerufen.
Vielen Dank an den sehr talentierten Emmanuel "Manu" Tavares und Plamen "Paco" Tamnev, die diese Szene zum Leben erweckt haben.
Laden Sie das Projekt im Asset Store herunter. Bitte beachten Sie, dass es für Unity 5.0.0 RC2 optimiert ist.