Physically-Based Rendering (PBR)-Texturen ermöglichen es Ihnen, realistische Beschattungen und Beleuchtungen darzustellen, indem Sie mehrere Typen von Texturbildern oder Karten auf einem einzigen Objekt verwenden. Das Kombinieren mehrerer Texturkarten kann Farbe, Rauheit und Reflexion in jeder Beleuchtungsumgebung genauer simulieren und die visuellen Elemente Ihrer Assets und Umgebung verbessern.


Verschiedene Anwendungen und Workflows stehen zur Verfügung, um PBR-Texturen zu erstellen. Sie können diese während der Modellierungs- und Texturierungsphasen der Erstellung benutzerdefinierter 3D-Objekte verwenden, vorausgesetzt, Roblox Studio unterstützt die spezifischen Texturkarten, die Sie verwenden.
Dieser Leitfaden bietet Anweisungen zum Einrichten Ihrer Mesh-Objekte zur Verwendung von PBR-Texturkarten und beschreibt häufige Anwendungsfälle und bewährte Praktiken für die von Roblox unterstützten PBR Texturkarten. Wenn Sie Ihre eigenen Oberflächen erstellen, siehe Materialreferenzen für gängige Materialwerte, Bildvergleiche und Kleidungsexemplare.
Aktivieren der Oberflächenansicht
Sie können PBR-Texturen zu jedem MeshPart hinzufügen, indem Sie ein SurfaceAppearance-Objekt hinzufügen, das die ursprünglich zugewiesene Textur überschreibt. Im Allgemeinen können Sie die Eigenschaften von SurfaceAppearance während eines Spiels nicht über Skripte ändern, da die Engine eine Vorverarbeitung benötigt, um diese Grafiken darzustellen. Ähnlich wie beim Hinzufügen einer Grundtextur muss jede Texturbildkarte auf die entsprechende hochgeladene Bild-Asset-ID verweisen.
Um die Oberflächenansicht für ein MeshPart zu aktivieren:
Fahren Sie im Explorer-Fenster mit der Maus über das MeshPart und klicken Sie auf die Schaltfläche ⊕.
Fügen Sie ein SurfaceAppearance über das Kontextmenü hinzu.

Wenn Sie bereit sind, Texturkarten zum SurfaceAppearance-Objekt hinzuzufügen, können Sie jede Karten-Eigenschaft im Eigenschaften-Fenster anklicken und eine Asset-ID eingeben.
Texturkarten
Studio unterstützt derzeit 4 Arten von PBR-Texturkarten: Farbe, Normal, Rauheit und Metallizität. Jede dieser Karten entspricht einem wichtigen Aspekt des Oberflächenaussehens des Objekts. Texturkarten ändern nur das visuelle Erscheinungsbild und beeinflussen nicht die Geometrie des MeshPart-Objekts.
Siehe die folgenden Beispiele für eine Übersicht über die von Roblox unterstützten Texturkarten und zusätzliche Ressourcen:
Die ColorMap-Eigenschaft legt die Farbdaten der Oberfläche fest, einschließlich aller Transparenz, die in der Karte vorhanden ist. Siehe Farbe (Albedo) für zusätzliche Informationen.



Farbe (Albedo)
Die Farbe oder Albedo-Karte bestimmt die Farbe Ihrer Textur und besteht hauptsächlich aus Farbinformationen mit wenig bis gar keinen Licht- oder Texturinformationen. Für zusätzliche Anpassungen können Sie auch Transparenz in Ihrer Albedo-Textur hinzufügen, indem Sie Opazität zu Ihrer Bildkarte hinzufügen.
Alpha-Modi
Für Objekte, die teilweise oder vollständig transparente Abschnitte erfordern, wie Gras, Blätter, Spitze oder Decals wie Schmutz oder Grunge, können Sie verschiedene Alpha-Modi verwenden, um Transparenz auf Ihre Farbkarte anzuwenden. Wenn Ihr Farbkarte-Bildformat Alpha-Kanäle unterstützt, können Sie eine Graustufen-Alpha-Karte anwenden, bei der 0.0 transparent und 1.0 undurchsichtig ist. Ebenso gilt beim Einsatz eines Bildformats wie .png, dass jede Opazität auf der Farbkarte als Transparenz auf dem Asset angewendet wird.
Sie können Transparenz auf zwei verschiedene Arten anwenden, indem Sie folgende AlphaMode-Werte festlegen:
- Undurchsichtig — Ignoriert den Alpha-Kanal der ColorMap und verwendet den Farbwert direkt aus der Farbkarte.
- Überlagerung — Überlagert die ColorMap über die darunterliegende Mesh-MeshPart.Color. Farb- und Überlagerungskarten enthüllen die Grundfarbe des Meshs überall dort, wo Transparenz vorhanden ist. Dies ist die Standardeinstellung.
- Transparenz — Entfernt das sichtbare Mesh basierend auf der Transparenz in der ColorMap. Dies macht das Mesh durchscheinend und zeigt nicht die ursprüngliche Meshfarbe, wann immer Transparenz vorhanden ist.
Undurchsichtig
Sie können den Modus Enum.AlphaMode.Opaque verwenden, um den Alpha-Kanal der ColorMap vollständig zu ignorieren. In diesem Fall wird der Alpha-Wert als 1 (vollständig undurchsichtig) angenommen.
Das folgende Beispiel zeigt, wie der Modus Opaque funktioniert, unter Verwendung eines weißen Objekts als Referenz:


Überlagerung
Sie können den Modus Enum.AlphaMode.Overlay verwenden, um Abschnitte der ursprünglichen Farbe des Meshs sichtbar zu machen. Da die transparenten Bereiche der Farbkarte die darunterliegende Farbe freilegen, können Sie eine einzigartige Texturkarte entwerfen, die teilweise oder vollständig die Color-Eigenschaft des Meshs für benutzerdefinierte Hauttöne oder andere Situationen mit einzigartigen Farben offenbart.
Das folgende Beispiel zeigt, wie der Modus Overlay mithilfe einer weißen Kugel als Referenz funktioniert:


Das folgende Beispiel verwendet den Modus Overlay für benutzerdefinierte Charaktere und zeigt den ursprünglichen Hautton des Charakters:


Siehe benutzerdefinierte Hautfarbe für zusätzliche Details zur Optimierung einer Überlagerung für Haut und ähnliche Anwendungen.
Transparenz
Sie können den Modus Enum.AlphaMode.Transparency verwenden, um komplexe oder extrem feine Objekte, wie Spitze oder Netzgewebe, zu erstellen, indem Sie sichtbare Teile des Meshs entfernen, anstelle von Sculpting der Meshgeometrie. Da dies die Geometrie des Meshobjekts nicht beeinflusst, können Sie detaillierte Objekte erstellen, ohne die Leistungseinbußen eines aufwändigen Meshmodells.
Das folgende Beispiel demonstriert, wie eine partielle und vollständige Transparenz in diesem Modus visuell Abschnitte des Meshs entfernt:



Es gibt zwei Ergebnisse des Transparency-Modus, abhängig davon, ob MeshPart.Transparency auf 0 oder mindestens 0.02 gesetzt ist, obwohl die numerische Genauigkeit zu kleinen Werten wie 0.01 führen kann, die die undurchsichtige Transparenz auslösen.
- Wenn der Alpha-Kanal verwendet wird, um die Form von hauptsächlich undurchsichtigen Objekten mit harten Kanten wie Laub, Spitzenstoff und Netzgewebe auszuschneiden, setzen Sie MeshPart.Transparency auf 0. Wenn Teile der Oberfläche vollständig undurchsichtig sind, kann die Roblox-Engine sie mit einer ordentlichen Tiefen-Oku-Sion rendern. Undurchsichtige Oberflächen funktionieren auch im Allgemeinen besser mit tiefenbasierten Effekten wie DepthOfFieldEffect, Glas- und Wasserbrechung sowie Wasserreflexionen.
- Wenn der Alpha-Kanal verwendet wird, um Details zu semi-transparenten Objekten oder Objekten mit sanften Transparenzverläufen hinzuzufügen, setzen Sie MeshPart.Transparency auf mindestens 0.02. Dies verbessert die Qualität des Mischens für Objekte wie schmutzige Fenster und weichkanten Federn, funktioniert jedoch nicht mit allen Effekten.
TintMask
Sie können den Modus Enum.AlphaMode.TintMask verwenden, um SurfaceAppearance.Color-Färbungen auf selektive Bereiche einer Oberfläche anzuwenden. Die Färbung ist am stärksten, wo der Alpha-Kanal vollständig sichtbar ist und wo der Alpha-Kanal transparent ist, wird sie nicht angewendet.

Farbtonung
Sie können eine Tönung auf Ihre Farbkarte anwenden, indem Sie die SurfaceAppearance.Color-Eigenschaft ändern. Tönung hat keine Auswirkungen auf die Leistung, und Sie können Speicher einsparen, indem Sie eine einzelne Farbkarte mit unterschiedlichen Tönungen wiederverwenden. Verwenden Sie die Farbtonung, um zusätzliche kostengünstige Variationen zwischen Ihren MeshPart-PBR-Texturen zu erstellen oder um Ihre PBR-Oberflächenfarben in Echtzeit programmatisch zu ändern.



Die SurfaceAppearance.Color-Tönung wird als Multiplikator angewendet, sodass das endgültige Erscheinungsbild eine Funktion von Color3 (Texel-Farbe) multipliziert mit SurfaceAppearance.Color ist. Das bedeutet, dass das Erstellen Ihrer ursprünglichen SurfaceAppearance.ColorMap in fast weißen Graustufenfarben den stärksten Tönungseffekt erzeugt, wenn diese Eigenschaft angewendet wird.
Die Tönung gilt nur für die SurfaceAppearance.ColorMap und nicht für die MeshPart.Color. Sie können weiterhin Alpha-Kanäle verwenden, wenn Sie Transparenz anwenden.
Wenn SurfaceAppearance.AlphaMode auf Overlay gesetzt ist und ein Alpha-Kanal vorhanden ist, wird die darunterliegende MeshPart.Color offenbart und SurfaceAppearance.Color-Tönung gilt nur für die sichtbare SurfaceAppearance-Farbkarte.
Wenn SurfaceAppearance.AlphaMode auf TintMask gesetzt ist und ein Alpha-Kanal vorhanden ist, steuert der Alpha-Kanal die Menge der SurfaceAppearance.Color-Tönung. Die Tönung ist am stärksten, wo der Alpha-Kanal vollständig sichtbar ist und wird nicht angewendet, wo der Alpha-Kanal transparent ist.

Normal
Die Normal- oder Oberflächen-Karte fügt Ihrer Oberfläche Texturtiefe hinzu und verhält sich ähnlich wie eine Höhenkarte. Infolgedessen kann der Effekt je nach Blickwinkel und Beleuchtungsumgebung verblassen oder intensiver werden. Wenn keine Normal-Karte vorhanden ist, wird der Wert auf 0.0 gesetzt.
In der folgenden Abbildung können Sie zwischen dem Mesh-Referenz und dem Kartenreferenz für Vergleiche der Normal-Kartenwerte wechseln:



Die R, G und B Kanäle des Bildes entsprechen jeweils den X, Y und Z Komponenten des lokalen Oberflächenvektors. Ein einheitliches Bild in der Farbe [127, 127, 255] stellt eine komplett flache Normal-Karte dar. Roblox unterstützt nur OpenGL-Format - Tangent Space Normal-Karten.
Normal-Karten beeinflussen das visuelle Erscheinungsbild einer Fläche entscheidend und können unangenehme Nähte in Ihrer Textur akzentuieren. Halten Sie, wenn möglich, Ihre Texturnähte verborgen, um visuelle Probleme mit Ihrem Mesh zu vermeiden.
Rauheit
Rauheits- oder Mikro-Oberflächen-Karten bestimmen, wie Licht auf der Oberfläche Ihres Modells verteilt wird. Bei einer Rauheit von 0.0 streut die Oberfläche kein Licht, was zu einer viel schärferen und helleren Reflexion und Glanz auf Ihrem Material führt. Bei 1.0 streuen Licht und Reflexionen gleichmäßig über das Modell und führen zu einer weniger reflektierenden, matten Oberfläche.
Die Rauheit kann beeinflussen, wie reflektierend ein Objekt unter verschiedenen Winkeln ist, was als Fresnel-Effekt bezeichnet wird. Siehe Fresnel für weitere Details und bewährte Praktiken zur Aufrechterhaltung eines konsistenten reflexiven Verhaltens.
Die folgende Abbildung zeigt Vergleiche verschiedener Rauheitskartenwerte:



Fresnel
Fresnel bezieht sich auf die Menge an Reflexion einer Oberfläche im Verhältnis zum aktuellen Blickwinkel. Die Fresnel-Verarbeitung von Studio zielt auf physikalische Realität ab, obwohl Sie möglicherweise unerwartete spekulative Beiträge bei bestimmten Winkeln, selbst bei rauen Oberflächen, erhalten. In einigen Fällen können Sie dies kompensieren, indem Sie Ihre Rauheitskarte um 0.1 rauer machen, um eine konsistente Lichtreaktion mit Ihren Materialien zu erzielen.
Obwohl Roblox diesen Lichteffekt genau rendert, reagiert die Helligkeit und Reflexivität einer Oberfläche möglicherweise nicht konsistent zwischen Ihrer Texturierungssoftware, wie Substance Painter, und Studio. Siehe Kleiderbeispiele für Unterschiede in der Renderdarstellung zwischen Anwendungen.
Metallizität
Metallizität bestimmt die Reflexionsfähigkeit einer Oberfläche. Metallizitätswerte reichen von 0.0 bis 1.0. Roblox setzt den Standardwert auf 0.0, wenn keine Metallitätskarte vorhanden ist.
Siehe die folgende Abbildung für Vergleiche verschiedener Metallitätskartenwerte:



Verschiedene PBR-Renderer verwenden verschiedene Workflows zur Verarbeitung der Reflexivität. Studio verwendet nur den Metallizitätsworkflow, der bestimmt, ob ein Material ein Nichtmetall oder ein Metall ist, manchmal auch als Isolator oder Leiter bezeichnet.
In den meisten Fällen sollten Sie diesen Wert auf 0.0 (Nichtmetall) oder 1.0 (Metall) setzen. Sie können teilweise Metallitätswerte verwenden, wenn Sie ungewöhnlichere Oberflächen mit moderaten reflektierenden Eigenschaften erstellen, wie Satin oder Seide. Dieses Vorgehen kann die Reflexionen im Material subtil faken, um die Farbe aus der Farb-/Albedo-Karte hervorzuheben, anstatt die in der Umgebung reflektierten Farben zu betonen.

