Physikalisch basierte Rendering (PBR) Texturen ermöglichen es dir, realistische Schattierung und Beleuchtung darzustellen, indem du mehrere Arten von Texturbildern oder Karten auf einem einzelnen Objekt verwendest. Durch die Kombination mehrerer Texturkarten kann die Farbe, Rauheit und Reflektivität in jeder Lichtumgebung genauer simuliert werden, und sie können die visuellen Elemente deiner Assets und deiner Umgebung verbessern.


Es gibt verschiedene Anwendungen und Arbeitsabläufe zur Erstellung von PBR-Texturen. Du kannst diese während der Modellierungs- und Texturierungsphasen der Erstellung von benutzerdefinierten 3D-Objekten verwenden, vorausgesetzt, dass Roblox Studio die spezifischen Texturkarten, die du verwendest, unterstützt.
Dieser Leitfaden bietet Anleitungen zum Einrichten deiner Mesh-Objekte zur Verwendung von PBR-Texturkarten und beschreibt häufige Anwendungsfälle sowie bewährte Verfahren für die von Roblox unterstützten PBR- Texturkarten. Wenn du deine eigenen Oberflächen erstellst, siehe Materialreferenzen für gängige Materialwerte, Bildvergleiche und Beispiele für Kleidung.
Oberflächenerscheinung aktivieren
Du kannst PBR-Texturen zu jeder MeshPart hinzufügen, indem du ein SurfaceAppearance-Objekt hinzufügst, das die ursprünglich zugewiesene Textur überschreibt. Im Allgemeinen kannst du die Eigenschaften von SurfaceAppearance nicht durch Skripte während eines Spiels ä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 die Oberflächenerscheinung für eine MeshPart zu aktivieren:
Bewege den Mauszeiger im Explorer-Fenster über die MeshPart und klicke auf die ⊕ Schaltfläche.
Füge ein SurfaceAppearance über das Kontextmenü ein.

Wenn du bereit bist, Texturkarten zum SurfaceAppearance-Objekt hinzuzufügen, kannst du 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, Metalness und emissive. Jede dieser Karten entspricht einem wichtigen Aspekt des Oberflächenerscheines 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 weitere Informationen.



Farbe (Albedo)
Die Farbe oder Albedo-Karte bestimmt die Farbe deiner Textur und besteht hauptsächlich aus Farbinformationen mit wenig bis gar keinen Beleuchtungs- oder Texturinformationen. Für zusätzliche Anpassungen kannst du auch Transparenz in deiner Albedo-Textur hinzufügen, indem du Opazität zu deiner Bildkarte hinzufügst.
Alpha-Modi
Für Objekte, die teilweise oder vollständig transparente Abschnitte erfordern, wie Gras, Blätter, Spitze oder Abziehbilder wie Schmutz oder Grunge, kannst du verschiedene Alpha-Modi verwenden, um Transparenz auf deine Farbkarten anzuwenden. Wenn das Bildformat deiner Farbkarten Alpha-Kanäle unterstützt, kannst du eine Graustufen-Alpha-Karte anwenden, bei der 0.0 transparent und 1.0 opak ist. Ebenso gilt beim Verwenden eines Bildformats wie .png, dass jede Opazität auf der Farbkarten als Transparenz im Asset angewendet wird.
Du kannst Transparenz mit zwei verschiedenen Verhaltensweisen anwenden, indem du die folgenden AlphaMode-Werte festlegst:
- Overlay — Überlagert die ColorMap über die darunterliegende Mesh MeshPart.Color. Farbkarten, die den Overlay-Modus verwenden, zeigen die Basisfarbe des Meshs überall dort an, wo Transparenz vorhanden ist. Dies ist die Standardeinstellung.
- Transparency — Entfernt das sichtbare Mesh basierend auf der Transparenz in der ColorMap. Dadurch wird das Mesh durchsichtig gerendert und gibt die ursprüngliche Mesh-Farbe nicht preis, wann immer Transparenz vorhanden ist.
Opaque
Du kannst 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 opak) angesehen.
Das folgende Beispiel demonstriert, wie der Opaque-Modus funktioniert, indem er ein blaues Objekt als Referenz verwendet:
Overlay
Du kannst Enum.AlphaMode.Overlay verwenden, um Abschnitte der ursprünglichen Farbe des Meshes sichtbar zu machen. Da die transparenten Bereiche der Farbkarten die darunterliegende Farbe offenbaren, kannst du eine einzigartige Texturkarte gestalten, die teilweise oder vollständig die Color-Eigenschaft des Meshes für benutzerdefinierte Hauttöne oder andere Situationen mit einzigartigen Farben offenbart.
Das folgende Beispiel demonstriert, wie der Overlay-Modus funktioniert, indem er eine hellblaue Kugel referenziert:
Das folgende Beispiel verwendet den Overlay-Modus für benutzerdefinierte Charaktere und zeigt den ursprünglichen Hautton des Charakters an:


Siehe benutzerdefinierter Hautton für weitere Details zur Optimierung eines Overlays für Haut und ähnliche Anwendungen.
Transparency
Du kannst den Enum.AlphaMode.Transparency-Modus verwenden, um komplexe oder extrem feine Objekte wie Spitze oder Netz zu erstellen, indem du sichtbare Teile des Meshes entfernst, anstatt die Geometrie des Meshes zu modellieren. Da dies die Geometrie des Mesh-Objekts nicht beeinflusst, kannst du detaillierte Objekte erstellen, ohne die Leistungsauswirkungen eines komplexen Mesh-Modells.
Das folgende Beispiel demonstriert, wie teilweise und vollständige Transparenz in diesem Modus optisch Abschnitte des Meshes entfernt:



Es gibt zwei Ergebnisse des Transparency-Modus, abhängig davon, ob die MeshPart.Transparency auf 0 oder mindestens 0.02 gesetzt ist, obwohl numerische Genauigkeit zu kleinen Werten wie 0.01 führen kann, die die opake Transparenz auslösen.
- Wenn Alpha verwendet wird, um die Form von überwiegend opaken Objekten mit klaren Kanten wie Laub, Spitzenstoff und Netz auszuschneiden, setze die MeshPart.Transparency auf 0. Wenn Teile der Oberfläche vollständig opak sind, kann die Roblox-Engine sie mit einer ordnungsgemäßen tiefenbasierenden Occlusion rendern. Opaque Oberflächen funktionieren auch im Allgemeinen besser mit tiefenbasierten Effekten wie DepthOfFieldEffect, Glas- und Wasserbrechung und Wasserreflexion.
- Wenn Alpha verwendet wird, um Details zu semi-transparenten Objekten oder Objekten mit sanften Gradienten der Transparenz hinzuzufügen, setze die MeshPart.Transparency auf mindestens 0.02. Dies verbessert die Qualität der Vermischung für Objekte wie schmutzige Fenster und weichkantige Federn, funktioniert jedoch möglicherweise nicht mit allen Effekten.
Tint-Maske
Du kannst den Enum.AlphaMode.TintMask-Modus verwenden, um SurfaceAppearance.Color-Färbung auf selektive Bereiche einer Oberfläche anzuwenden. Die Färbung ist am stärksten, wo der Alpha-Kanal vollständig sichtbar ist, und wird nicht angewendet, wo der Alpha-Kanal transparent ist.

Farbtönung
Du kannst deiner Farbkarten eine Tönung hinzufügen, indem du die SurfaceAppearance.Color-Eigenschaft änderst. Farbtönung beeinflusst nicht die Leistung, und du kannst Speicher sparen, indem du eine einzige Farbkarten mit unterschiedlichen Tönungen wiederverwendest. Verwende Farbtönung, um zusätzliche kostengünstige Variationen zwischen deinen MeshPart PBR-Texturen zu erstellen oder um die PBR-Oberflächenfarben in Echtzeit programmatisch zu ändern.



Die SurfaceAppearance.Color-Färbung wird als Multiplikator angewendet, sodass das endgültige Erscheinungsbild eine Funktion von Color3 (Texel-Farbe) mal SurfaceAppearance.Color ist. Das bedeutet, dass die Erstellung deiner ursprünglichen SurfaceAppearance.ColorMap in nahezu weißen Graustufenfarben den stärksten Tönungseffekt erzielt, wenn diese Eigenschaft angewendet wird.
Die Tönung wirkt sich nur auf die SurfaceAppearance.ColorMap und nicht auf die MeshPart.Color aus. Du kannst weiterhin Alpha-Kanäle verwenden, wenn du Transparenz anwendest.
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 wird nur auf die sichtbare SurfaceAppearance-Farbkarte angewendet.
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 deiner Oberfläche Texturtiefe hinzu und wirkt ähnlich wie eine Höhenkarte. Das Ergebnis kann je nach Blickwinkel und Lichtumgebung verblassen oder intensiver werden.
In der folgenden Abbildung kannst du zwischen dem Mesh-Referenz und dem Kartenreferenz für Vergleiche der Normalwertkarten umschalten:



Die R, G, und B-Kanäle des Bildes entsprechen respektiv den X, Y, und Z-Komponenten des lokalen Oberflächenvektors. Ein einheitliches Bild der Farbe [127, 127, 255] übersetzt sich in eine vollständig flache Normaldarstellung. Roblox unterstützt nur OpenGL-Format - Tangentenraum Normalkarten.
Normal-Karten beeinflussen das visuelle Erscheinungsbild der Oberfläche eines Meshs stark und können unbequeme Nähte in deiner Textur betonen. Versuche immer, deine Texturnähte versteckt zu halten, um visuelle Probleme mit deinem Mesh zu vermeiden.
Rauheit
Rauheit oder Mikrooberflächen-Karten bestimmen, wie Licht über die Oberfläche deines 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 deinem Material führt. Bei 100% streut Licht und Reflexion gleichmäßig über das Modell, was zu einer weniger reflektierenden, mattartigen Oberfläche führt.
Die folgende Abbildung zeigt Vergleiche verschiedener Rauheitswertkarten:



Rauheit kann die Reflektierbarkeit eines Objekts aus verschiedenen Winkeln beeinflussen, was als Fresnel-Effekt bezeichnet wird. Das Fresnel-Verfahren von Studio zielt auf physikalische Genauigkeit in der realen Welt ab, obwohl du bei bestimmten Winkeln möglicherweise unerwartete spekulare Beiträge auch bei rauen Oberflächen erhältst. In einigen Fällen kannst du dies ausgleichen, indem du den Wert deiner Rauheitskarte um etwa 0.1 rauer erhöhst, um eine konsistente Lichtreaktion mit deinen Materialien zu erreichen.
Obwohl Roblox diesen Lichteffekt genau rendert, kann die Helligkeit und Reflektivität einer Oberfläche möglicherweise nicht konsistent zwischen deiner Texturinhalt-erstellenden Software, wie Substance Painter, und Studio reagieren. Siehe Beispiele für Kleidung für Unterschiede in der Darstellung zwischen Anwendungen.
Metalness
Metalness bestimmt die Reflektivität einer Oberfläche. In den meisten Fällen solltest du diesen Wert auf entweder 0% (nicht metallisch) oder 100% (metallisch) setzen, obwohl du partielle Metalness-Werte verwenden kannst, wenn du Oberflächen mit moderaten reflektierenden Eigenschaften wie Satin oder Seide erstellst. Diese Praxis kann subtil die Reflexionen im Material fälschen, um die Farbe aus der Farbe/Albedo-Karte über die Farben, die in der Umgebung reflektiert werden, hervorzuheben.
Siehe die folgende Abbildung für Vergleiche verschiedener Metalness-Wertkarten:



Verschiedene PBR-Renderer verwenden verschiedene Arbeitsabläufe zur Verarbeitung der Reflektivität. Studio verwendet nur den Metalness-Workflow, der bestimmt, ob ein Material nichtmetallisch oder metallisch ist, manchmal auch als Isolator oder Leiter bezeichnet.
Emissive Mask
Eine Graustufen-EmissiveMaskContent-Inhaltskarte wendet eine emissive Maske über die Oberfläche an. Dies erlaubt dir, 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 dir, detaillierte leuchtende Effekte wie beleuchteten Text, futuristische Rüstungen oder biolumineszente Kreaturen zu schaffen.
Die zugehörige EmissiveTint-Eigenschaft bestimmt die Tönungsfarbe für den Emissivbeitrag, und EmissiveStrength bestimmt die Stärke des Emissivbeitrags.







