In diesem Video-Tutorial sehen wir uns an, wie man 3D-Modelle, die von Adobe Stock heruntergeladen wurden, in Unity importiert und PBR-Texturen sowohl für den Built-in Shader als auch für die Universal Render Pipeline einrichtet.
Videotranskript
Hallo zusammen! In diesem Video-Tutorial sehen wir uns an, wie man 3D-Modelle, die von Adobe Stock heruntergeladen wurden, in Unity importiert und PBR-Texturen sowohl für den Built-in Shader als auch für die Universal Render Pipeline einrichtet. Es gibt nämlich einige kleine Unterschiede zwischen diesen beiden Rendering-Engines, die wir uns in diesem Tutorial anschauen werden. Ich empfehle dir daher, das Video bis zum Ende anzusehen. Ich werde nicht zeigen, wie es mit der High Definition Render Pipeline funktioniert, da sie sich nicht wesentlich von der Universal Render Pipeline unterscheidet.
Für ein praktisches Beispiel verwende ich ein 3D-Modell mit dem Namen Business Jet.
Die Texturen der Modelle liegen im PNG-Format vor und enthalten separate Kanäle für den PBR-Metallic-Workflow. Es gibt also Texturen für die Kanäle Base Color, Normal, Metallic, Roughness, Glow und Opacity.
Die Standard-Materialien von Unity erfordern jedoch, dass die Smoothness-Information in die Metallic-Textur integriert ist. Außerdem ist Smoothness das Gegenteil von Roughness, die im Adobe-Paket enthalten ist.
Es ist möglich, die Metallic-Information mit externer Software zu konvertieren und zusammenzuführen, aber in Unity gibt es eine Möglichkeit, die Texturen des Metallic-Workflows als separate Bilder anzugeben. Das werden wir uns gleich ansehen.
Sehen wir uns an, wie man diese 3D-Modelle in Unity importiert und konfiguriert, beginnend mit einem Projekt, das den Built-in Shader verwendet.
Ziehe zuerst sowohl die OBJ-Datei als auch die MTL-Datei aus dem von Adobe heruntergeladenen Paket in den Project-Tab. Die MTL-Datei wird benötigt, um anzugeben, welche Materialien erstellt werden sollen und wie sie dem 3D-Modell zugewiesen werden.

Um die Änderungen in Echtzeit zu sehen, ziehe das 3D-Modell aus dem Project in die Szene und drücke dann die F-Taste, um es besser einzurahmen.

Unity sucht innerhalb des importierten 3D-Modells nach Materialien und Texturen, aber in diesem Fall sind die Texturen nicht integriert.
Wählen wir also das 3D-Modell im Project aus und öffnen dann den Reiter Materials im Inspector-Fenster.

Im Menü Location wählen wir die Option Legacy und klicken dann auf Apply.

Unity erstellt nun einen neuen Ordner namens Materials im Project-Fenster. In diesem Ordner finden wir die zwei Materialien, die bereits mit dem 3D-Modell verknüpft sind, aber noch keine Texturen enthalten.

Ziehen wir nun die Texturen, die uns interessieren, aus dem Adobe-Paket in diesen Ordner. Ich importiere die Glow-Texturen nicht, da für dieses Objekt keine lichtemittierenden Materialien vorgesehen sind.

Wählen wir an dieser Stelle zuerst das vollständig undurchsichtige Material aus.
Klicken wir im Inspector-Fenster auf das Shader-Menü und wählen dort die Option Autodesk Interactive aus.

Wie man sieht, gibt es einige Optionen für den Rendering Mode, den wir in diesem Fall auf Opaque belassen. Vor allem aber können wir die einzelnen Texturen des PBR-Metallic-Workflows angeben!

Verknüpfen wir daher die aus dem Adobe-Paket importierten Texturen mit den entsprechenden Kanälen des Shaders.
Im Fall der Normal Map klicken wir insbesondere auf die Schaltfläche Fix Now, die unmittelbar nach dem Import angezeigt wird.

Wir müssen außerdem ein paar Hinweise zum Erscheinungsbild der Base Color, hier Albedo genannt, und der Roughness machen.
Die Base Color ergibt sich tatsächlich aus einer Mischung der Textur und der danebenstehenden Farbe. Klicke also auf diese Farbe und setze sie auf reines Weiß, um nur die Farbe der Textur als Ergebnis zu erhalten.

Du kannst auch experimentieren und die Textur mit verschiedenen Farben mischen, um zu sehen, welchen Effekt das erzeugt.

Bezüglich der Roughness-Textur: Wenn der endgültige Effekt nicht wie gewünscht aussieht, wähle die Textur im Project aus, deaktiviere dann im Inspector-Fenster die Option sRGB Color Texture und klicke auf Apply, um das Ergebnis zu überprüfen.

Diese Schritte müssen auch für das Material Glass wiederholt werden, mit dem offensichtlichen Unterschied, dass wir in diesem Fall Autodesk Interactive mit dem Rendering Mode Transparent einstellen müssen.

Dieser Modus übernimmt die Opazität aus dem Alpha-Kanal der Base Color Textur, falls vorhanden. Du könntest aber auch darauf verzichten, diese Textur zu importieren, und stattdessen den Alpha-Wert im Farbfeld neben Albedo manuell auf 0 setzen.

Nun müssen wir die anderen Texturen anwenden und dabei auf das zuvor Gesagte zur Roughness- und zur Normal-Map-Textur achten, also die sRGB-Option zu deaktivieren und auf die Schaltfläche Fix Now zu klicken.

Sehen wir uns jetzt an, wie man das Modell und seine Texturen in ein Projekt importiert, das von Anfang an mit der Universal Rendering Pipeline erstellt wurde.
Der Import des 3D-Modells und die Erstellung der Materialien erfolgen genauso wie im Fall des Built-in Shaders. Wir importieren also sowohl die OBJ-Datei als auch die MTL-Datei in das Project-Fenster.

Als Nächstes wählen wir im Reiter Materials des Inspector-Fensters für das 3D-Modell die Option Legacy für die Materialien aus und klicken auf Apply, damit Unity den Ordner Materials mit den Materialien erstellt, die dem Modell zugewiesen werden sollen.

In den Ordner Materials importieren wir dann die Textur-Bilder, die mit den vorhandenen Materialien verknüpft werden sollen.

An diesem Punkt können wir den Shader-Typ der einzelnen Materialien jedoch nicht direkt auf Autodesk Interactive ändern, da diese Option nur mit dem Built-in Shader verwendet werden kann.

Keine Sorge! Autodesk Interactive ist auch unter den Shader-Optionen der Universal Render Pipeline verfügbar!

Wir stellen außerdem fest, dass drei verschiedene Modi zur Auswahl stehen: base, Masked und Transparent.
Für das opake Material des Flugzeugs verwenden wir den Modus base, während wir für die Fenster das Material Transparent einsetzen.

Beginnen wir nun damit, die Texturen mit ihren jeweiligen Kanälen im Autodesk Interactive-Material der Universal Render Pipeline zu verknüpfen.
Wir stellen sofort fest, dass der Shader die Texturen nicht automatisch übernimmt, daher müssen wir selbst die jeweiligen Use Map-Checkboxen für jede Textur aktivieren.

Im Fall der Normal Map sollte Unity uns die Möglichkeit bieten, die Textur durch Klicken auf die Schaltfläche Fix Now zu korrigieren.

Falls diese Schaltfläche nicht verfügbar ist, können wir die Textur trotzdem korrigieren, indem wir sie im Project auswählen und im Menü Texture Type im Inspector-Fenster den korrekten Typ angeben, nämlich Normal Map.

Die gleichen Überlegungen zur Roughness-Textur gelten wie im Fall des Built-in Shaders. Es kann also notwendig sein, im Inspector-Fenster dieser Textur die Option sRGB zu deaktivieren und die Änderungen mit Apply zu übernehmen.

Beim Material Glasses müssen wir ähnliche Schritte durchführen, jedoch mit einigen Unterschieden. Zunächst muss der Shader vom Typ Autodesk Interactive Transparent sein.

Die Texturen für Base Color, Normal Map, Metallic und Roughness sollten wie in den anderen Fällen gesetzt werden, aber es gibt einen wichtigen Unterschied bezüglich der Transparenztextur namens Opacity.
Im Fall von Autodesk Interactive Transparent ermöglicht die Checkbox Use Opacity Map die Verwendung des Transparenzkanals, der in der Base Color Textur enthalten ist.
Wir haben jedoch eine separate Textur für den Opacity-Kanal. Wie gehen wir also vor? Es gibt zwei Möglichkeiten, je nachdem, ob dein Material vollständig transparent ist oder nicht.
Wenn das Material vollständig transparent ist, wie in unserem Fall, können wir den Transparenzwert direkt im Feld Opacity angeben, ohne eine Textur zu verwenden, zum Beispiel indem wir den Opacity-Wert auf 0 setzen.

Handelt es sich um ein Material, das nur in bestimmten Bereichen transparent ist, können wir den Shader Autodesk Interactive Masked verwenden, bei dem wir unsere Opacity-Textur ebenfalls einsetzen können.


Auch in diesen Fällen, wie beim Built-in Shader, ist es möglich, die im Adobe-Paket enthaltene Glow Map für den Emissive-Kanal zu verwenden. Ich habe diese Textur in diesem Projekt nicht verwendet, da sie nicht notwendig war, aber es ist gut zu wissen, dass diese Option zur Verfügung steht.

Ich hoffe, dieses Tutorial war hilfreich für dich! Bis bald!