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


创建 PBR 纹理有多种应用和工作流程。您可以在自定义 3D 对象创建的建模和纹理阶段使用这些纹理,前提是 Roblox Studio 支持 您使用的特定纹理贴图。
本指南提供了有关 设置 您的网格对象以使用 PBR 纹理贴图的说明,并描述了 Roblox 支持的 PBR 纹理贴图 的常见用例和最佳实践。创建您自己的表面时,请参见 材料参考 以获取常见材料值、图像比较和服装示例。
启用表面外观
您可以通过添加 SurfaceAppearance 对象将 PBR 纹理添加到任何 MeshPart,该对象会覆盖原始分配的纹理。一般来说,您不能在游戏中通过脚本修改 SurfaceAppearance 属性,因为引擎需要一些预处理来显示这些图形。与添加基本纹理类似,每个纹理图像贴图必须指向适当的上传图像资产 ID。
要为 MeshPart 启用表面外观:
在 资源管理器 窗口中,将鼠标悬停在 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 引擎可以以适当的深度基 occlusion 渲染它们。不透明表面通常也更适合深度基效果,如 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 确定发光贡献的强度。











