Substance Designer – Seamless procedural textures

Sebastian Pohl - 14. Juli 2015

seam_problemWer sich mit dem Texturieren dreidimensionaler Objekte beschäftigt wird einen Anblick wie auf dem Bild oben kennen. Teile des Modells haben eine umlaufende Textur die aber dummerweise an einer oder mehreren Stellen eine Unstetigkeit aufweist.

Nun kann man natürlich händisch die Textur korrigieren, zum Beispiel in Photoshop. Abgesehen von der Herausforderung diesen Bruch in mehreren Maps auf die exakt pixelgleiche Art und Weise zu korrigieren ist das eine Menge Arbeit. Und wenn dann noch größere Änderungen an der Textur anstehen muss dieser Aufwand gleich mehrfach betrieben werden.
Arbeitet man mit Tools wie dem Substance Designer von Allegorithmic, dann gibt es in der Version 5 ein kleines magisches Hilfsmittel, das einem dieses Problem aus der Hand nimmt.

Aber zuerst zur Ursache: Zumeist arbeitet man beim Texturieren im UV Space, also im zweidimensionalen Koordinatensystem der Texturkoordinaten. Auf diese werden, ebenso zweidimensional, also planar, alle Maps aufgebracht und darauf arrangiert.

In diesem zweidimensionalen Koordinatensystem sind alle Teile des Modells flach ausgewickelt. Man kann sich das vorstellen wie ein Modell aus Papier, das flach hingelegt und dann bemalt wird.

sonic_low_convert_uv_to_svg

Auf dem obigen Beispiel ist schön zu sehen, wie eine solche UV-Map aussehen kann. Mit ein bisschen Phantasie kann man sich nun das Problem genauer vorstellen. Runde Objekte müssen flach ausgelegt werden, das heißt, sie werden aufgeschnitten. Und genau an diesen Kanten entstehen die Probleme.
Betrachten wir beispielsweise das rot-orange Rechteck unten links und stellen uns vor, das es sich dabei um einen ausgerollten Zylinder handelt. Die linke und rechte Kante stellen dabei die Säume des Schnittes dar. Um jetzt eine durchgehende Textur zu erhalten, müsste jede Struktur die auf der linken Seite den Bereich verlässt auf der rechten Seite wieder aufgenommen werden.
Wie bereits gesagt ist das entweder in Handarbeit möglich oder zum Beispiel mit den Tri Planar Nodes im Substance Designer.

triplSo sehen die beiden Nodes in der Library aus. Es gibt sie einmal für Grauwertbilder und einmal für Farbbilder. Die Funktionalität ist bei beiden die gleiche: Anstelle die verwendete Textur planar im UV Space zu projezieren wird sie dreidimensional aus allen Richtungen auf das Modell projeziert. Vorausgesetzt die verwendete Textur ist in alle Richtungen kachelbar, ist das die perfekte Vorraussetzung um die sichtbaren Unstetigkeiten zu vermeiden.

tripl_2Damit das funktioniert, benötigt die Tri Planar Node Informationen über das Modell. Das wären die Position Map, eine Normal Map in Weltkoordinaten und natürlich die Textur, die projeziert werden soll. Position und Normal Map können dabei im Substance Designer direkt erzeugt werden, dabei aber darauf achten, das die Position Map mit der Option Normalization: BSphere und nicht BBox erzeugt wird und in einem Format gespeichert wird, das 16 bit erlaubt (PNG ist geeignet.).

tripl_3Ist alles korrekt angeschlossen, wird aus einer Textur wie sie links zu sehen ist das Ergebnis auf der rechten Seite. Das mag so etwas seltsam aussehen, behebt aber tatsächlich das Problem. Macht man dies für alle Maps die zu entsprechenden Problemen geführt haben, dann wird aus der fehlerhaften Textur die zu Anfang zu sehen war eine saubere Textur wie hier zu sehen:

seam_fixedMöchte man die so transformierten Maps in den Masken Generatoren wie zum Beispiel Dirt verwenden, dann muss in der entsprechenden Node die Custom Grunge Map aktiviert werden.

Das verwendete Modell ist übrigens der Sonic Screwdriver aus meinem Ein-Modell-Pro-Monat Vorsatz für dieses Jahr.

 

 

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert