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


Es gibt verschiedene Anwendungen und Workflows zur Erstellung von PBR-Texturen. Sie können diese während der Modellierungs- und Texturierungsphasen der Erstellung benutzerdefinierter 3D-Objekte verwenden, vorausgesetzt, dass Roblox Studio die spezifischen Texturkarten unterstützt, die Sie verwenden.
Dieser Leitfaden bietet Anweisungen zum Einrichten Ihrer Mesh-Objekte zur Verwendung von PBR-Texturkarten und beschreibt gängige Anwendungsfälle und bewährte Verfahren 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 Kleidung Beispiele.
Aktivieren des Oberflächen-Erscheinungsbilds
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 durch Skripte ändern, da die Engine eine Vorverarbeitung benötigt, um diese Grafiken anzuzeigen. Ähnlich wie beim Hinzufügen einer grundlegenden Textur muss jede Texturbildkarte auf die entsprechende hochgeladene Bild-Asset-ID verweisen.
Um das Oberflächen-Erscheinungsbild für ein MeshPart zu aktivieren:
Bewegen Sie im Explorer-Fenster den Mauszeiger über das MeshPart und klicken Sie auf die ⊕-Schaltfläche.
Fügen Sie ein SurfaceAppearance aus dem Kontextmenü ein.

Wenn Sie bereit sind, Texturkarten zum SurfaceAppearance-Objekt hinzuzufügen, können Sie auf jede Karten-Eigenschaft im Eigenschaften-Fenster klicken und eine Asset-ID eingeben.
Texturkarten
Studio unterstützt derzeit 5 Arten von PBR-Texturkarten: Farbe, Normal, Rauheit, Metallizität und emissiv. Jede dieser Karten entspricht einem wichtigen Aspekt des Oberflächen-Erscheinungsbilds des Objekts. Texturkarten ändern nur das visuelle Erscheinungsbild und beeinflussen nicht die Geometrie des MeshPart-Objekts.
Siehe die folgenden Beispiele für einen Überblick ü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 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 Aufkleber 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, wenn Sie ein Bildformat wie .png verwenden, wird jede Opazität auf der Farbkarte als Transparenz auf dem Asset angewendet.
Sie können Transparenz auf zwei verschiedene Arten anwenden, indem Sie die folgenden AlphaMode-Werte festlegen:
- Undurchsichtig — Ignoriert den Alpha-Kanal der ColorMap und verwendet den Farbwert direkt aus der Farbkarte.
- Überlagerung — Überlagert die ColorMap über die darunter liegende Farbe des Meshs MeshPart.Color. Farbkarten, die den Überlagerungsmodus verwenden, zeigen die Basisfarbe 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 durchsichtig und zeigt nicht die ursprüngliche Meshfarbe, wann immer Transparenz vorhanden ist.
Undurchsichtig
Sie können den Enum.AlphaMode.Opaque-Modus 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 Opaque-Modus funktioniert, wobei ein blauer Gegenstand als Referenz verwendet wird:
Überlagerung
Sie können Enum.AlphaMode.Overlay verwenden, um Abschnitte der ursprünglichen Farbe des Meshs sichtbar zu machen. Da die transparenten Bereiche der Farbkarte die darunter liegende 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 Overlay-Modus funktioniert, wobei eine hellblaue Kugel als Referenz verwendet wird:
Das folgende Beispiel verwendet den Overlay-Modus für benutzerdefinierte Charaktere und zeigt den ursprünglichen Hautton des Charakters:


Siehe benutzerdefinierte Hauttöne für zusätzliche Details zur Optimierung einer Überlagerung für Haut und ähnliche Anwendungen.
Transparenz
Sie können den Enum.AlphaMode.Transparency-Modus verwenden, um komplexe oder extrem feine Objekte wie Spitze oder Netz zu erstellen, indem Sie sichtbare Teile des Meshs entfernen, als Alternative zum Modellieren der Mesh-Geometrie. Da dies die Geometrie des Mesh-Objekts nicht beeinflusst, können Sie detaillierte Objekte erstellen, ohne die Leistungseinbußen eines komplizierten Mesh-Modells.
Das folgende Beispiel zeigt, wie teilweise 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 numerische Präzision zu kleinen Werten wie 0.01 führen kann, die die undurchsichtige Transparenz auslösen.
- Wenn Alpha verwendet wird, um die Form von überwiegend undurchsichtigen Objekten mit harten Kanten wie Laub, Spitzenstoff und Netz auszuschneiden, setzen Sie MeshPart.Transparency auf 0. Wenn Teile der Oberfläche vollständig undurchsichtig sind, kann die Roblox-Engine sie mit ordnungsgemäßer tiefenbasierter Okklusion rendern. Undurchsichtige Oberflächen funktionieren auch im Allgemeinen besser mit tiefenbasierten Effekten wie DepthOfFieldEffect, Glas- und Wasserbrechung sowie Wasserreflexion.
- Wenn Alpha verwendet wird, um Details zu halbtransparenten 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 weichkantige Federn, funktioniert jedoch nicht mit allen Effekten.
Tintmaske
Sie können den Enum.AlphaMode.TintMask-Modus verwenden, um SurfaceAppearance.Color-Tönung auf selektive Bereiche einer Oberfläche anzuwenden. 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.

Farbtonung
Sie können eine Tönung auf Ihre Farbkarte anwenden, indem Sie die SurfaceAppearance.Color-Eigenschaft ändern. Tönung hat keinen Einfluss auf die Leistung, und Sie können Speicher sparen, 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) mal SurfaceAppearance.Color ist. Das bedeutet, dass das Erstellen Ihrer ursprünglichen SurfaceAppearance.ColorMap in nahezu 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 zugrunde liegende MeshPart.Color sichtbar, und die 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 Betrachtungswinkel und Beleuchtungsumgebung verblassen oder intensiver werden.
In der folgenden Abbildung können Sie zwischen der Mesh-Referenz und der Kartenreferenz wechseln, um die Normalwertkarten zu vergleichen:



Die R, G und B Kanäle des Bildes entsprechen jeweils den X, Y und Z Komponenten des lokalen Oberflächenvektors. Ein einheitliches Bild mit der Farbe [127, 127, 255] übersetzt sich in eine vollständig flache Normalmap. Roblox unterstützt nur OpenGL-Format - Tangent Space Normalmaps.
Normalmaps beeinflussen das visuelle Erscheinungsbild einer Mesh-Oberfläche erheblich und können unangenehme Nähte in Ihrer Textur betonen. Halten Sie, wann immer möglich, Ihre Texturnähte verborgen, um visuelle Probleme mit Ihrem Mesh zu vermeiden.
Rauheit
Rauheit oder Mikrooberfläche-Karten bestimmen, wie Licht über die Oberfläche Ihres Modells verteilt wird. Wenn die Rauheit bei 0 % liegt, streut die Oberfläche kein Licht, was zu einer viel schärferen und helleren Reflexion und Glanz auf Ihrem Material führt. Bei 100 % streuen Licht und Reflexionen gleichmäßig über das Modell, was zu einer weniger reflektierenden, matten Oberfläche führt.
Die folgende Abbildung zeigt Vergleiche verschiedener Rauheitskartenwerte:



Rauheit kann beeinflussen, wie reflektierend ein Objekt aus verschiedenen Winkeln ist, was als Fresnel-Effekt bezeichnet wird. Das Fresnel-Processing von Studio zielt auf physikalische Genauigkeit in der realen Welt ab, obwohl Sie möglicherweise unerwartete spekuläre Beiträge aus bestimmten Winkeln erhalten, selbst bei rauen Oberflächen. In einigen Fällen können Sie dies kompensieren, indem Sie den Wert Ihrer Rauheitskarte um etwa 0.1 rauer erhöhen, um eine konsistente Lichtreaktion mit Ihren Materialien zu erzielen.
Obwohl Roblox diesen Lichteffekt genau rendert, kann die Helligkeit und Reflexion einer Oberfläche nicht konsistent zwischen Ihrer Texturerstellungssoftware, wie Substance Painter, und Studio reagieren. Siehe Kleidungsbeispiele für Unterschiede in der Darstellung zwischen Anwendungen.
Metallizität
Metallizität bestimmt die Reflexion einer Oberfläche. In den meisten Fällen sollten Sie diesen Wert auf entweder 0 % (nicht metallisch) oder 100 % (metallisch) setzen, obwohl Sie auch teilweise Metallizitätswerte verwenden können, wenn Sie Oberflächen mit moderaten reflektierenden Eigenschaften wie Satin oder Seide erstellen. Diese Praxis kann subtil die Reflexionen im Material fälschen, um die Farbe aus der Farbe/Albedo-Karte über Farben, die in der Umgebung reflektiert werden, hervorzuheben.
Siehe die folgende Abbildung für Vergleiche verschiedener Metallizitätskartenwerte:



Verschiedene PBR-Renderer verwenden verschiedene Workflows zur Verarbeitung der Reflexion. Studio verwendet nur den Metallizitäts-Workflow, der bestimmt, ob ein Material nicht metallisch oder metallisch ist, manchmal auch als Isolator oder Leiter bezeichnet.
Emissive-Maske
Eine Graustufen-EmissiveMaskContent-Inhalts-Textur wendet eine emissive Maske über die Oberfläche an. Dies ermöglicht es Ihnen, eine Textur zu verwenden, um die Emissivität für mehr künstlerische Kontrolle als das alles-oder-nichts Neon-Material zu steuern und ermöglicht es Ihnen, detaillierte leuchtende Effekte wie beleuchteten Text, futuristische Rüstungen oder biolumineszente Kreaturen zu erstellen.
Die zugehörige EmissiveTint-Eigenschaft bestimmt die Tönungsfarbe für den emissiven Beitrag, und EmissiveStrength bestimmt die Stärke des emissiven Beitrags.







