Blender – Wie man eine Trim-Sheet Texture auf ein Objekt mappt und in die Unity Engine exportiert
Trim-Sheets bedeuten bessere Performance in Game-Engines – weniger Materials, weniger Draw Calls, flüssigeres Rendering. In diesem Artikel zeigen wir, wie man Trim-Sheets in Blender erstellt und in Unity einsetzt.
Hinweis:
In diesem Artikel geht es nicht darum, in Blender ein High-Poly Objekt für ein Trim-Sheet zu modellieren und zu texturieren, um es dann auf ein Low-Poly Objekt zu baken.
Hier geht es darum, ein fertiges Trim-Sheet in Blender zu importieren und die UVs eines 3D-Modells so anzupassen, dass sie gezielt auf bestimmte Bereiche dieser Textur zeigen. (UV Mapping).
Wir verwenden folgende Versionen und Settings:
Blender 4.4.3
Unity 6.000.0.47f
Unity Render Pipeline: URP
Trim-Sheet-Texture
Als Erstes brauchen wir eine Trim-Sheet-Textur.
Die können wir entweder direkt in Blender erstellen (wie im Hinweiskasten erwähnt), selbst malen – oder wir greifen auf eine der vielen 3D-Asset-Plattformen zurück. Dort findet man oft schon fertige Trim-Sheets, die nicht nur die Base Color (Albedo) mitbringen, sondern meist auch gleich alle wichtigen Maps für den PBR-Workflow: Normal, Metallic, Roughness, Ambient Occlusion, Height / Displacement.
In diesem Beispiel verwenden wir folgendes Pack von Sketchfab: https://sketchfab.com/3d-models/modular-wall-59e038f890d34725a34c25ac94802a43

Was ist eine Trim-Sheet-Texture?
Eine Trim-Sheet-Texture ist eine spezielle Art von Textur, die aus verschiedenen wiederverwendbaren Mustern, Kanten, Leisten, Details oder Materialien besteht – alle in einem einzigen Bild kombiniert. Diese Textur wird dann genutzt, um mehreren 3D-Objekten oder -Oberflächen gezielt bestimmte Bereiche zuzuweisen, ohne für jedes Objekt eine eigene Textur zu erstellen.
3D-Model vorbereiten
Jetzt benötigen wir ein 3D-Model, dessen Flächen wir dann nach dem UV Unwrapping auf das Trim-Sheet mappen können.
Modellierung
Für unser Beispiel würde eine Wand gut passen. Wichtig ist, dass wir für alle Teile, die wir auf unterschiedliche Positionen auf der Textur mappen wollen, eigene Flächen haben.
In unserem Fall halten wir es einfach und extrudieren die Wand oben und unten etwas und fügen zwei Loop-Cuts im mittleren Bereich hinzu. In einem Echte-Welt-Szenario kann das Modell auch gern etwas besser zum Trim-Sheet passen.

Skalierung übernehmen
Nach dem Modellieren und – ganz wichtig – vor dem UV Unwrapping sollten wir die aktuelle Skalierung unseres Objekts übernehmen, d.h. der Scale-Wert im Transformations-Panel wird wieder auf (1, 1, 1) zurückgesetzt. Dazu wählen wir im Object-Mode Object > Apply > Scale.
UV Unwrapping
Nach mehreren Bearbeitungsschritten wie Skalieren und Extrudieren ist das ursprüngliche UV-Layout meist nicht mehr brauchbar – Verzerrungen sind die Folge. In unserem Fall sieht man außerdem deutlich, dass das Modell auf einem Cube basierte.

Um das zu beheben, müssen wir den Prozess zum UV Unwrapping neu anstoßen. Dazu wählen wir im Menü des 3D Viewport UV > Smart UV Project. Es öffnet sich folgender Dialog.
Hier setzen wir das Häkchen bei Correct Aspect. Den Rest können wir auf den Standardeinstellungen lassen.

Das Ergebnis sieht dann so aus. Alle Flächen haben die korrekte Größe und Aspect Ratio.

Texturen laden mittels Node Wrangler
Nun brauchen wir die Textur und um etwas zu sehen auch ein Material und einen Shader. Am einfachsten geht das mit dem Node Wrangler Add-On. Haben wir es aktiviert, wechseln wir in den Shading Tab. Standardmäßig ist dort bereits ein Principled BSDF Node vorhanden. Diesen wählen wir aus.
Nun drücken wir einfach die Tastenkombination Strg + Shift + T („Principled Texture Setup“).
Es öffnet sich der Dateiauswahl-Dialog. Hier suchen wir nun unsere Texturen.

Hinweis:
Node Wrangler erkennt anhand der Dateinamen, welche Textur welchen Typ hat (z. B. *_diffuse.*
, *_normal.*
, *_roughness.*
usw.). Dateinamen müssen also den Namen der entsprechenden Material Map enthalten: Albedo, Normal, etc.
Für unser Vorhaben genügt es auch, nur die Albedo Textur zu laden.
Node Wrangler hat nun für uns den Prozess durchgeführt, mehrere Texture-Maps auf einmal korrekt in einen Shader zu laden und zu verbinden. Das sieht dann so aus.

In der Vorschau sollte man nun das Objekt mit der Textur sehen. Man sieht aber auch, dass das Mapping auf der Textur nicht passt. Das gehen wir als nächstes an.

Mein Shader Editor ist leer und der Node Wrangler Shortcut funktioniert nicht. Was mache ich falsch?
Wenn im Shading Editor der Knoten für den PBR Shader fehlt und Du auch keinen hinzufügen kannst, ist wahrscheinlich kein Material ausgewählt. Neu hinzugefügte Meshs haben erst mal kein Material.


Man erkennt das auch in den Material Properties des Objektes.

Wir müssen also zunächst ein Material auswählen oder ein neues anlegen. Das kann man sowohl in den Material Properties des Objekts erledigen als auch direkt im Shader Editor. Blender legt standardmäßig ein Material an, dieses können wir auswählen oder über den New Button ein neues erstellen.


Nun können wir die Principled BSDF Node auswählen und Node Wrangler benutzen.
UV Mapping
Nun wechseln wir wieder in den UV Editing Tab.
Nach dem Node Wrangler Prozess sollte hier bereits die Albedo-Textur vorausgewählt sein. Ist das nicht der Fall, wählen wir diese aus.

Selektieren wir nun im Edit Mode des 3D Viewport alle Flächen des Objekts (Taste A), sehen wir im UV Editor die Verteilung der Flächen auf der Textur.

Wir können nun einzelne oder mehrere Flächen selektieren und diese im UV Editor mittels der Transformierungs-Werkzeuge neu anordnen. Das machen wir nun mit allen Flächen unserer Frontansicht der Wand.

Oft ist es notwendig, dass man Flächen skaliert (S), rotiert (R) oder bewegt (G), damit man sie an die korrekte Position auf dem Trim-Sheet ausrichten kann.

Flächen, die wir später wahrscheinlich nicht oder nicht primär sehen, können wir zusammen selektieren, im UV Editor klein skalieren (S) und mit einem Mal auf eine passende Stelle bewegen (G). Das habe ich in diesem Beispiel mit allen Seiten- und Rückflächen so gemacht.

Haben wie alle Flächen verteilt, sollte unser Wand-Model viel besser aussehen als zu Beginn.

Unsere Wand ist nun bereit für den Export.
Export (FBX)
Wir exportieren unser Objekt zunächst als FBX. Dazu wählen wir im Menü File > Export > FBX (.fbx).

Für den Export und den Import in Unity benötigen wir nur das Mesh des ausgewählten Objekts. Wenn man mag, kann man schon hier beim Export die Transformation des Objektes festlegen, damit es in Unity besser passt. Ich erinnere an die unterschiedliche Interpretation der Achsenausrichtung bei 3D-Programmen.
Import in Unity (FBX)
Das ist einfach. Ins Projekt Rein ziehen und ggf. die Import Settings anpassen.
Wozu dient die Achsenausrichtung beim Export und was muss man beim Import beachten?

Haben wir beim Export die Achsenausrichtung schon korrekt für Unity angepasst, können wir diese per Bake Axis Conversation fest übernehmen. Vorteil hierbei ist, dass Unity das Objekt nicht mehr vorm Rendern Rotieren und ausrichten muss, was unserer Performance zuträglich ist.
Für unser Beispiel hier ist das aber irrelevant.
Ziehen wir unser Objekt nach dem Import in die Scene, stellen wir fest, dass die Texturen fehlen. Bei FBX sind diese nicht mit eingebunden.
Man erkennt das auch schon beim Blick auf das Material, das nur als graue Kugel dargestellt wird.

Texturen importieren
Wir müssen also die Texturen separat ins Projekt ziehen. Ist eine Normal-Map dabei, erhalten wir eine Warnung mit der Möglichkeit, die Ursache gleich zu fixen. Das tuen wir auch brav.

Schauen wir jetzt die Wand an, sehen wir unsere Texturen.

Das Material hat diese nach dem Import automatisch übernommen.

Hinweis:
Sind die Texturen gleich benannt wie die, die wir dem Modell in Blender zugeordnet haben, werden diese in Unity automatisch am Material gesetzt, nachdem sie ins Projekt importiert wurden.
Am Material erkennen wir also, dass Albedo und Normals automatisch zugeordnet wurden. Es ist aber readonly, da es sich innerhalb des importierten Objekts befindet. Das heißt, man kann die weiteren Texture Maps hier nicht direkt zuordnen.
Wir müssen das Material zuvor aus dem Objekt extrahieren.

Readonly Material aus dem Objekt extrahieren
Das können wir in den Import-Settings des Objekts machen. Dazu wählen wir das Objekt aus und wechseln im Inspektor in den Import-Settings zu Materials. Dort gibt es den Button Extract Materials… .

Alternative: Wir können in der Datei-Ansicht auch einfach eine Kopie vom Material machen (Ctrl + D). Diese liegt dann außerhalb des Objekts und wir können diese dem Modell in der Scene neu zuordnen (z.B. durch draufziehen). Das originale Material wird hier nicht extrahiert, es bleibt unberührt im Objekt enthalten.
Weitere Texture Maps zuordnen
Nun können wir die restlichen Texturen den entsprechenden Slots des Materials zuordnen (falls diese vom Material unterstützt werden). Für unser URP Projekt wird standardmäßig das Lit Material benutzt.

Und schon sieht unsere Wand auch in Unity recht schick aus.

Welcher PBR Workflow?
Es gibt zwei PBR-Standard-Workflows für Echtzeit-Rendering: PBR-Specular und PBR-Metallic. Beide nutzen dieselben Energieerhaltungssätze und dieselben grundlegenden BRDF-Funktionen.
An unserem URP Standard-Material können wir den Workflow auswählen.
Entsprechend der vorhandenen Texture-Maps können wir den passenden Workflow wählen.
Unser hier verwendetes Texture-Pack hat Maps für den Metalic Workflow.
In dem schon etwas älteren Artikel https://medium.com/gametextures/metallic-magic-2dce9001fe15 gibt es eine gute Beschreibung zu den Workflows und wie die Texturen aussehen müssen.
Der folgende Screenshot zeigt die Unterschiede sehr schön. Er ist auch aus dem Artikel.

Material wiederverwenden mittels Trim-Sheet
Der große Vorteil von Trim-Sheets ist, dass sich in der Game-Engine verschiedene Objekte das selbe Material teilen können, was sich extrem positiv auf die Performance auswirkt. Das wollen wir noch kurz an einem Beispiel demonstrieren. Dafür habe ich die Textur leicht bearbeitet, indem ich ein Strom-Symbol auf einen der Kachel-Bereiche gemalt habe.
Wir können nun in Blender verschiedene Varianten der Wand erstellen, in dem wir das UV Mapping anpassen und Flächen auf andere Bereiche der Trim-Sheet Textur positionieren.

Das angepasste Objekt exportieren wir wie oben beschrieben als FBX und importieren es in Unity.
Dann ziehen wir unser bereits vorhandenes Material drauf.
Wir sehen eine zweite Variante der Wand mit dem Strom-Symbol. Das neue Objekt verwendet aber das selbe Material wie das andere Objekt.

Ich hoffe wie immer, diese erstbeste Anleitung war hilfreich.
Sie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen