PBR 纹理

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

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

一个有着辫子的类人头像,穿着光泽外套、带有贴花的牛仔裤和靴子。
一个有着短发的类人头像,穿着皮夹克、七分裤和橙色鞋子。

创建 PBR 纹理有多种应用和工作流程。您可以在自定义 3D 对象创建的建模和纹理阶段使用这些纹理,前提是 Roblox Studio 支持 您使用的特定纹理贴图。

本指南提供了有关 设置 您的网格对象以使用 PBR 纹理贴图的说明,并描述了 Roblox 支持的 PBR 纹理贴图 的常见用例和最佳实践。创建您自己的表面时,请参见 材料参考 以获取常见材料值、图像比较和服装示例。

启用表面外观

您可以通过添加 SurfaceAppearance 对象将 PBR 纹理添加到任何 MeshPart,该对象会覆盖原始分配的纹理。一般来说,您不能在游戏中通过脚本修改 SurfaceAppearance 属性,因为引擎需要一些预处理来显示这些图形。与添加基本纹理类似,每个纹理图像贴图必须指向适当的上传图像资产 ID。

要为 MeshPart 启用表面外观:

  1. 资源管理器 窗口中,将鼠标悬停在 MeshPart 上并单击 ⊕ 按钮。

  2. 从上下文菜单中插入 SurfaceAppearance

    在 Studio 的资源管理器窗口中,SurfaceAppearance 对象作为 MeshPart 的子对象。

    当您准备好将纹理贴图添加到 SurfaceAppearance 对象时,您可以单击 属性 窗口中的每个贴图属性并输入资产 ID。

纹理贴图

Studio 目前支持 5 种类型的 PBR 纹理贴图:颜色法线粗糙度金属度发光。这些贴图中的每一个都对应于对象表面外观的一个重要方面。纹理贴图仅改变视觉外观,不影响 MeshPart 对象的几何形状。

请参见以下示例,以获取 Roblox 支持的纹理贴图和其他资源的概述:

ColorMap 属性设置表面的颜色数据,包括贴图中存在的任何透明度。有关更多信息,请参见 颜色 (albedo)

一幅完全填充的图像,主要是红色,带有各种黑色斑点和白色划痕。
示例贴图
一个空白的白色球体,背景为深色。
示例网格
一个红色球体,带有黑色斑点和白色划痕,背景为深色。
网格和纹理

颜色(铝白)

颜色,或 铝白,贴图决定了您的纹理颜色,主要由颜色信息组成,几乎没有光照或纹理信息。为了进一步自定义,您还可以通过在铝白纹理中添加不透明度来添加 透明度

Alpha 模式

对于需要部分或完全透明的对象,例如草、叶子、蕾丝或污垢或污垢的贴花,您可以使用各种 alpha 模式 将透明度应用于您的颜色贴图。如果您的颜色贴图图像格式支持 alpha 通道,您可以应用灰度 alpha 贴图,其中 0.0 是透明的,1.0 是不透明的。类似地,当使用 .png 等图像格式时,颜色贴图上的任何不透明度都将作为资产上的透明度应用。

您可以通过设置以下 AlphaMode 值来以两种不同的行为应用透明度:

  • 不透明 — 忽略 ColorMap 的 alpha 通道,并直接使用颜色贴图中的颜色值。
  • 叠加 — 将 ColorMap 叠加在底层网格的 MeshPart.Color 上。使用叠加模式的颜色贴图在透明度存在的地方揭示网格的基础颜色。这是默认设置。
  • 透明度 — 根据 ColorMap 中的透明度移除可见网格。这使网格变得透明,并且在透明度存在时不会揭示原始网格颜色。
  • 色调遮罩 — 将着色的 ColorMap 混合到未着色的 ColorMap 上。
不透明

您可以使用 Enum.AlphaMode.Opaque 模式完全忽略 ColorMap 的 alpha 通道。在这种情况下,假定 alpha 值为 1(完全不透明)。

以下示例演示了 Opaque 模式如何使用蓝色对象作为参考:

带有透明度的圆点纹理。背景完全透明。
颜色/铝白贴图带有透明度
一个蓝色球体在平面上。
示例网格对象
球体表面上散布着圆点图案。透明度值被忽略。
AlphaMode 设置为 Opaque
叠加

您可以使用 Enum.AlphaMode.Overlay 来揭示网格原始颜色的部分区域。由于颜色贴图的透明区域暴露了底层颜色,您可以设计一个独特的纹理贴图,部分或完全揭示网格的 Color 属性,以适应自定义肤色或其他具有独特颜色的情况。

以下示例演示了 Overlay 模式如何使用浅蓝色球体作为参考:

一幅完全填充的图像,带有小的浅蓝色方块的半重复图案。背景为棋盘格以指示透明度。
颜色/铝白贴图带有透明度
一个空白的青色球体,背景为深色。
示例网格对象
一个白色球体,表面上散布着小的蓝色方块。
AlphaMode 设置为 Overlay

以下示例使用 Overlay 模式为自定义角色揭示角色的原始肤色:

一幅完全填充的图像,显示 3D 类人模型的纹理贴图。图像的各个部分是棋盘格或部分棋盘格,以指示不同的透明度级别。
包含透明度的颜色贴图,以揭示原始网格颜色
四个相同的类人模型,肤色不同:浅棕色、黑色、白色、深绿色。
使用 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 表面颜色。

一座带有默认黄色色调和反射性翡翠特性的雕像。
来自 The Mystery of Duvall Drive 的雕像网格,没有着色。
一座带有红色色调的雕像,继续具有来自其他纹理贴图的光泽反射特性。
雕像网格,Color 设置为红色。
一座带有绿色色调的雕像,继续具有来自其他纹理贴图的光泽反射特性。
雕像网格,Color 设置为绿色。

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 通道透明的地方不应用。

一个漂浮的方形平面,带有青色石板纹理,从左侧逐渐变化为完全透明到右侧完全不透明。漂浮平面下方的细长水平条带有黑色到白色的渐变。
AlphaMode 设置为 Transparency。底部的灰度渐变条表示 alpha 值。MeshPart.Color 设置为红色,SurfaceAppearance.Color 设置为青色。

法线

法线,或 表面,贴图为您的表面添加纹理深度,并且行为类似于 高度贴图。因此,效果可能会根据视角和光照环境的不同而减弱或增强。

在下图中,您可以在网格参考和贴图参考之间切换,以比较法线贴图值:

一个粘土颜色的光滑球体。
一个粘土颜色的球体,表面有适度的岩石纹理。
一个粘土颜色的球体,表面有极其岩石的纹理

图像的 RGB 通道分别对应于局部表面向量的 XYZ 组件。颜色为 [127, 127, 255] 的均匀图像转换为完全平坦的法线贴图。Roblox 仅支持 OpenGL 格式 - 切线空间 法线贴图。

法线贴图显著影响网格的视觉表面,并可以突出纹理中的尴尬接缝。尽可能保持纹理接缝隐藏,以避免网格的视觉问题。

粗糙度

粗糙度,或 微表面,贴图决定了光线如何在模型表面上散布。当粗糙度为 0% 时,表面根本不散射光线,导致材料的反射和光泽度更尖锐、更明亮。在 100% 时,光线和反射均匀散布在模型上,导致表面呈现出较少反射的哑光外观。

下图显示了各种粗糙度贴图值的比较:

一个蓝色光泽球体。
0%
一个蓝色半光泽球体。
50%
一个蓝色哑光球体。
100%

粗糙度可能会影响物体在不同角度的反射性,称为 菲涅尔 效应。Studio 的菲涅尔处理旨在实现物理真实世界的准确性,尽管即使在粗糙表面上,您在某些角度可能会获得意外的镜面反射贡献。在某些情况下,您可以通过将粗糙度贴图值增加约 0.1 来补偿,以实现与材料的一致光照响应。

尽管 Roblox 准确渲染此光照效果,但表面的亮度和反射率可能在您的纹理内容创建软件(如 Substance Painter)和 Studio 之间不一致。有关应用程序之间渲染差异的更多信息,请参见 服装示例

金属度

金属度 决定了表面的反射性。在大多数情况下,您应该将此值设置为 0%(非金属)或 100%(金属),尽管在创建具有适度反射特性的表面(如缎面或丝绸)时,您可以使用部分金属度值。这种做法可以微妙地伪造材料中的反射,以突出来自 颜色/铝白贴图 的颜色,而不是环境中反射的颜色。

请参见下图以比较各种金属度贴图值:

一个棕色球体,带有光斑。
0%
一个棕色球体,带有光斑和一些反射性。
50%
一个棕色球体,带有适度的光斑和大量的反射性。
100%

不同的 PBR 渲染器使用不同的工作流程来处理反射性。Studio 仅使用 金属度工作流程,该工作流程确定材料是 非金属 还是 金属,有时称为 绝缘体导体

发光遮罩

灰度 EmissiveMaskContent 内容纹理在表面上应用 发光遮罩。这使您可以使用纹理来控制发光性,提供比全有或全无的 Neon 材料更具艺术性的控制,并允许您创建详细的发光效果,例如发光文本、未来主义盔甲或生物发光生物。

相关的 EmissiveTint 属性确定发光贡献的着色颜色,而 EmissiveStrength 确定发光贡献的强度。

一个橙色球体,带有紫红色的南瓜发光遮罩。
EmissiveTint = [255, 0, 255]
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。