基于物理的渲染(PBR)纹理允许您通过在单个对象上使用多种类型的纹理图像或图层来表现逼真的阴影和光照。结合多个纹理图可以更准确地模拟在任何光照环境下的颜色、粗糙度和反射性,并且可以增强您资产和环境的视觉元素。


创建 PBR 纹理的各种应用程序和工作流程是可用的。您可以在自定义 3D 对象创建的建模和纹理阶段使用这些纹理,前提是 Roblox Studio 支持 您使用的特定纹理图。
本指南提供了有关 设置 您的网格对象以使用 PBR 纹理图的说明,并描述了 Roblox 支持的 PBR 纹理图 的常见用例和最佳实践。在创建您自己的表面时,请参阅 材料参考 以获取常见材料值、图像比较和服装示例。
启用表面效果
您可以通过添加 SurfaceAppearance 对象将 PBR 纹理添加到任何 MeshPart,该对象会覆盖原始分配的纹理。一般来说,您不能在游戏中通过脚本修改 SurfaceAppearance 属性,因为引擎需要一些预处理才能显示这些图形。与添加基本纹理类似,每个纹理图像图层必须指向相应的上传图像资产 ID。
要为 MeshPart 启用表面效果:
在 Explorer 窗口中,悬停在 MeshPart 上,然后单击 ⊕ 按钮。
纹理图
Studio 目前支持 5 种类型的 PBR 纹理图:颜色,法线,粗糙度,金属度 和 发光。每种图层对应于对象表面外观的一个重要方面。纹理图仅改变视觉外观,不影响 MeshPart 对象的几何形状。
请参阅以下示例获取 Roblox 支持的纹理图概览和其他资源:
ColorMap 属性设置表面的颜色数据,包括图层中存在的任何透明度。有关更多信息,请参见 颜色 (albedo)。



颜色(反射率)
颜色或反射率图确定您的纹理颜色,并且主要由颜色信息组成,几乎没有光照或纹理信息。为了额外个性化,您还可以通过为图像图层添加不透明度来在反射率纹理中添加 透明度。
Alpha 模式
对于需要部分或完全透明区域的物体,例如草、叶子、花边或污垢或泥土等贴纸,您可以使用各种 Alpha 模式 来将透明度应用于颜色图层。如果您的颜色图层图像格式支持 alpha 通道,您可以应用一个灰度 alpha 图层,其中 0.0 是透明的,1.0 是不透明的。类似地,当使用 .png 等图像格式时,颜色图层上的任何不透明度在资产上表现为透明度。
您可以通过设置以下 AlphaMode 值来应用透明度,有两种不同的行为:
- 透明度 — 根据 ColorMap 中的透明度移除可见网格。这使得网格变得透明,并在存在透明的情况下不揭示原始网格颜色。
不透明
您可以使用 Enum.AlphaMode.Opaque 模式完全忽略 ColorMap 的 alpha 通道。在这种情况下,alpha 值被视为 1(完全不透明)。
以下示例演示了 Opaque 模式的工作原理,使用一个蓝色对象作为参考:
叠加
您可以使用 Enum.AlphaMode.Overlay 来揭示网格的原始颜色的部分区域。由于颜色图层的透明区域暴露了底层颜色,您可以设计一个独特的纹理图层,部分或完全揭示网格的 Color 属性,以适应自定义肤色或其他具有独特颜色的情况。
以下示例演示了 Overlay 模式的工作原理,使用一个浅蓝色球体作为参考:
以下示例使用 Overlay 模式用于自定义角色,揭示角色的原始肤色:


请参见 自定义肤色 获取有关优化肤色叠加的更多详细信息和类似应用程序。
透明度
您可以使用 Enum.AlphaMode.Transparency 模式创建复杂或精细的对象,例如花边或网眼,通过移除可见的网格部分作为雕刻网格几何形状的替代方案。由于这不会影响网格对象的几何形状,因此可以让您创建详细的对象,而不会对复杂的网格模型造成性能影响。
以下示例演示了在此模式下,部分和完全透明如何视觉上移除网格的部分:



在 Transparency 模式中,有两种结果,取决于 MeshPart.Transparency 的设置是 0 还是 至少 0.02,尽管数值精度可能导致小值(如 0.01)触发不透明透明度。
- 当 alpha 用于切出大部分不透明且边缘清晰的对象形状(如树叶、花边和网眼)时,将 MeshPart.Transparency 设置为 0。当表面某些部分完全不透明时,Roblox 引擎可以正确渲染深度基于遮挡。不透明表面通常也更好地与基于深度的效果搭配使用,如 DepthOfFieldEffect、玻璃和水折射,以及水面反射。
- 当 alpha 用于为半透明对象或具有平滑透明度渐变的对象添加细节时,将 MeshPart.Transparency 设置为 至少 0.02。这可以改善像污染的窗户和柔和边缘的羽毛这类对象的融合质量,但并非所有效果均适用。
色彩掩模
您可以使用 Enum.AlphaMode.TintMask 模式对表面的选择区域应用 SurfaceAppearance.Color 着色。着色在 alpha 通道完全可见的地方最为明显,并在 alpha 通道透明的地方不应用。

颜色着色
您可以通过修改 SurfaceAppearance.Color 属性将着色应用于您的颜色图。着色不会影响性能,您可以通过重用单个颜色图与不同的着色来节省内存。利用颜色着色,在您的 MeshPart PBR 纹理之间创建额外的低成本变体,或者在实时中以编程方式修改您的 PBR 表面颜色。
SurfaceAppearance.Color 着色是作为乘数应用的,因此最终外观是 Color3(纹素颜色)乘以 SurfaceAppearance.Color 的函数。这意味着,在接近白色灰度颜色中创作您的原始 SurfaceAppearance.ColorMap 能够在应用此属性时产生最强的着色效果。
着色仅适用于 SurfaceAppearance.ColorMap,而不涉及 MeshPart.Color。在应用时可以继续使用 alpha 通道 透明度。
当 SurfaceAppearance.AlphaMode 设置为 Overlay 并且存在 alpha 通道时,底层的 MeshPart.Color 将被揭示,且 SurfaceAppearance.Color 着色仅应用于可见的 SurfaceAppearance 颜色图层。
当 SurfaceAppearance.AlphaMode 设置为 TintMask 并且存在 alpha 通道时,alpha 通道控制 SurfaceAppearance.Color 着色的量。在 alpha 通道完全可见的地方,着色最为明显,而在 alpha 通道透明的地方则不应用。

法线
法线或表面图为您的表面添加了纹理深度,并且行为类似于 高度图。因此,该效果可能会根据视角和光照环境的不同而减弱或增强。
在以下图中,您可以在网格参考和图层参考之间切换,以比较法线图值:



图像的 R、G 和 B 通道分别对应于局部表面向量的 X、Y 和 Z 分量。均匀的颜色图像 [127, 127, 255] 转换为一个完全平坦的法线图。Roblox 只支持 OpenGL 格式 - 切线空间 法线图。
法线图显著影响网格的视觉表面,并可能强调纹理上的尴尬接缝。尽可能注意隐藏纹理接缝,以避免与网格存在视觉问题。
粗糙度
粗糙度或微表面图确定光线在您模型表面上的传播方式。当粗糙度为 0% 时,表面不会散射光线,从而在材料上导致更尖锐、更明亮的反射和光泽。在 100% 时,光线和反射均匀地散布在模型上,形成更不反射的哑光表面。
以下图形显示了各种粗糙度图值的比较:



粗糙度可能影响物体在不同角度下的反射程度,这被称为 菲涅尔 效应。Studio 的菲涅尔处理旨在实现物理现实准确性,尽管您可能在某些角度下,即使是粗糙的表面,也会出现意外的镜面反射。在某些情况下,您可以通过将粗糙度图值增加约 0.1 来补偿,以实现与材料的一致光照反应。
尽管 Roblox 准确地渲染此光照效果,表面的亮度和反射性可能在您的纹理内容创建软件(如 Substance Painter)和 Studio 之间不一致。请参阅 服装示例 以了解不同应用程序之间的渲染差异。
金属度
金属度确定表面的反射性。在大多数情况下,您应该将此值设置为 0%(非金属)或 100%(金属),尽管在创建具有中等反射特性的表面时,如缎面或丝绸,您可以使用部分金属度值。此做法可以微妙地伪造材料中的反射,以强调从 颜色/反射率图 反射的颜色,而非环境中反射的颜色。
请查看以下图形以比较各种金属度图值:



不同的 PBR 渲染器使用不同的工作流程来处理反射性。Studio 仅使用 金属度工作流程,确定材料是 非金属 还是 金属,有时称为 绝缘体 或 导体。
发光掩模
灰度的 EmissiveMaskContent 内容纹理在表面上应用 发光掩模。这让您使用纹理来控制发光性,为艺术表现提供比所有或无 Neon 材料更好的控制,并允许您创建细致的发光效果,如发光文本、未来主义盔甲或生物发光生物。
关联的 EmissiveTint 属性确定了发光贡献的色彩,EmissiveStrength 则确定了发光贡献的强度。











