Engine & platform

Arbeiten mit physikalisch basierten Schattierungen: Ein praktischer Ansatz

ERLAND KÖRNER / UNITY TECHNOLOGIESSenior Technical Artist
Feb 18, 2015|8 Min.
Arbeiten mit physikalisch basierten Schattierungen: Ein praktischer Ansatz
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

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.

Erstellen einer Vorlagenumgebung

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.

lightcond5fr640x480loop

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.

image11
Die Sonne wird aus der Himmelstextur gelöscht und mit Hilfe eines gerichteten Lichts und einer Streulichtblende wieder eingefügt.

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 Spiegelungswerttabelle:
UnitySpecularChart
Die Metallwerttabelle:
UnityMetallicChart

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.

materialcompare_refl.1
Obere Reihe: unstrukturiert. Untere Reihe: strukturiert. Von links nach rechts: Stein, Holz, Knochen, Metall.
Der traditionelle Ansatz zur Erstellung von Texturen

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.

image10
Beispiel 1: Dieses Kranichobjekt hat 2 Materialien: 2 diffuse, 1 spiegelnd-glatte, 2 verdeckte und 2 detaillierte Texturen.
image06
Beispiel 2: Die Schildstütze hat 1 Material: 1 diffuse, 1 spiegelnde Glätte, 1 Okklusion und keine detaillierten Texturen.
Screen-Shot-2015-02-17-at-17.12.23
Auf der linken Seite: Kraninspektor für beide Materialien. Ganz rechts befindet sich das Material der Schildstütze.

• 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.

vv-albedo-texture
Gemaltes Kranich-Diffus-Map-Snippet mit einfacher Holzfarbe und Intensität. Enthält eine bescheidene Menge an Details. Bild rechts: Shield Diffuse Textur mit höherer (ppi) Detailgenauigkeit.
image09
Diffuser Wert (keine Textur) für Kranmaterial

- 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.

image07
Crane Specular Werte für Holz.
Screen-Shot-2015-02-17-at-17.40.23
Crane Specular Map für Metall (ohne Metallic-Shader). Right: Schild Spiegelnde Textur.

- 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.

image05
Kran Glattheitswerte für Holz. Keine Texturen erforderlich!
Screen-Shot-2015-02-17-at-17.51.13
Crane Smoothness Map für Metall (ohne Metallic-Shader). Right: Shield Smoothness Map mit gemischten Metall- und Holzoberflächen.Crane Smoothness Map für Metall (ohne Metallic Shader). Right: Schild Glattheitskarte mit gemischten Metall- und Holzoberflächen.

- 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.

image01
1 Lightmapped AO, 2: Textur der Okklusion, 3: Okklusion bei diffuser, 4: Bildwirkung SSAO

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.

image20
Sekundäre Albedo- und Normalkarten kompensieren die niedrig aufgelöste Hauptkarte für diffuse und normale Bereiche. Beide Texturen reduzieren den Gesamtspeicher für Texturen, da sie überall im Dorf auf Holzoberflächen "überlagert" und gekachelt werden. Seien Sie vorsichtig, wenn Sie Beleuchtungsinformationen zu einer diffusen Detailkarte hinzufügen, da dies einen ähnlichen Effekt hat wie das Hinzufügen solcher Informationen zu einer primären diffusen Karte.
image16
Holzoberfläche eines Krans mit (links) und ohne (rechts) sekundäre Texturkarten.

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.