Prozedurale stochastische Texturierung in Unity

THOMAS DELIOT / UNITY TECHNOLOGIESContributor
Feb 14, 2019|3 Min.
Prozedurale stochastische Texturierung in Unity
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.

Haben Sie schon einmal versucht, große Flächen mit kachelfähigen Texturen zu bedecken oder feine Details zu Ihren Meshes hinzuzufügen? Wenn ja, sind Sie wahrscheinlich mit dem sichtbaren Wiederholungsmuster vertraut, das bei höheren Kachelwerten schnell auftritt. In den Unity Labs haben wir eine neue Texturierungstechnik entwickelt, die dieses Problem vermeidet: Procedural Stochastic Texturing.

Kachelbare Texturen sind ein nützliches Werkzeug, um Ihren 3D-Szenen Details hinzuzufügen. Wenn Sie jedoch große Flächen texturieren oder mit kachelbaren Texturen und Detailmaps hochdetaillierte Oberflächen erzielen wollen, werden Kachelmuster sichtbar. Dieser Effekt ist auf der linken Seite der folgenden Abbildung dargestellt. Zur Reduzierung von Wiederholungsmustern werden in der Regel größere Texturen benötigt oder die sichtbaren Wiederholungen durch zusätzliche Objekte verdeckt. In diesem Blogbeitrag stellen wir ein Plugin vor, das dieses Problem für Texturen mit stochastischen Erscheinungsbildern wie Rost, Moos, Rinde usw. löst. Die Auswirkungen sind auf der rechten Seite des folgenden Bildes dargestellt.

Bild von kachelbaren Texturen zur Abdeckung großer Flächen

Laden Sie das Plugin hier herunter.

Bei einer Eingabetextur wird das Plugin prozedural eine unendliche Textur erzeugen, die dem Aussehen der Eingabe entspricht. Dazu nutzen wir eine hochmoderne Texturüberblendungsfunktion, die mit einer modifizierten Version der Eingabetextur arbeitet und nur drei Textursamples pro Fragment benötigt, sowie eine kleine Nachschlagetabelle abruft. Da das Plugin die Notwendigkeit des Kachelns vermeidet, ist es möglich, größere Flächen mit kleineren Texturen und höherem Detailgrad zu bedecken, ohne dass es zu Wiederholungsartefakten kommt.

Verwendung des StandardStochastic-Shaders

Das Plugin bietet eine Variante des Standard-Shaders, der in einem Unity-Paket enthalten ist. Sobald Sie das Paket importiert haben, wählen Sie den StandardStochastic-Shader für Ihr Material. Die Schnittstelle ist die gleiche wie die des Standard-Shaders, mit dem Zusatz von zwei neuen Steuerelementen am oberen Rand, die den zwei erforderlichen Einrichtungsschritten entsprechen:

Die Abbildung zeigt zwei neue Steuerelemente im oberen Bereich
Das Bild zeigt Verbesserungen der Eingaben

Im Menü Stochastische Eingaben können Sie angeben, für welche der Eingabetexturen Sie unsere Technik aktivieren möchten (es kann alles oder bestimmte Texturen, z. B. Albedo und/oder Normal Map, eingestellt werden).

Mit der Schaltfläche Anwenden werden die Daten für die ausgewählten stochastischen Eingaben vorberechnet und das Material aktualisiert, wodurch der Prozess abgeschlossen wird. Für jede Eingabetextur erzeugt dieser Schritt zwei Zwischentexturen, die sich im selben Ordner befinden.

Ein paar zusätzliche Bemerkungen:

  • Da vorhandene Zwischentexturen geladen werden, wenn festgestellt wird, dass sie die Generierungszeiten überspringen, müssen bei einer Änderung der ursprünglichen Textur beide gelöscht werden, bevor die Schaltfläche "Anwenden" erneut gedrückt wird, um ihre Regeneration zu erzwingen.
  • Beim Wechsel zwischen Standard- und Standard-Stochastic-Shadern werden Parameter hin und her übertragen.
  • Für Materialien, die den Specular-Workflow verwenden, wird auch ein StandardStochastic-Shader (Specular-Setup) bereitgestellt.

Die folgenden Beispiele zeigen, wie der Prototyp mit verschiedenen Materialien und kleinen (256²) Eingabetexturen arbeitet.

Shader-Beispiel
Shader-Beispiel
Shader-Beispiel
Beschränkungen

Diese Technik ist nur mit kachelbaren stochastischen und nahezu stochastischen Texturen kompatibel, wie z. B. Texturen, die aus der Ferne betrachtet zufälligem Rauschen ähneln, und typisch natürlich aussehenden Materialien ohne präzise geometrische Formen.

Beispiele für Texturen
Feedback

Dies ist ein Forschungsprototyp; er wird nicht aktiv entwickelt. Wir übernehmen keine Garantie für die Wartung oder den Support, aber Sie können in diesem Unity-Forum-Thread gerne Fragen stellen und Feedback geben. Wir arbeiten derzeit an einer ShaderGraph-Implementierung für benutzerdefinierte Shader und Kompatibilität mit den neuen Rendering-Pipelines. Halten Sie Ausschau nach Aktualisierungen im Forumsthread!

Weitere Lektüre

Sind Sie neugierig, wie das Plugin funktioniert? Lesen Sie unsere beiden kürzlich veröffentlichten Forschungsarbeiten zu diesem Thema, auf denen unser Plugin aufbaut:

Der mit dem Plugin gelieferte Code enthält Kommentare, die sich auf bestimmte Abschnitte des technischen Kapitels beziehen.