PBR 纹理

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

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

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

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

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

启用表面效果

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

要为 MeshPart 启用表面效果:

  1. Explorer 窗口中,悬停在 MeshPart 上,然后单击 ⊕ 按钮。

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

    在 Studio 的 Explorer 窗口中为 MeshPart 关联的 SurfaceAppearance 对象。

    当您准备将纹理图添加到 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 引擎可以正确渲染深度基于遮挡。不透明表面通常也更好地与基于深度的效果搭配使用,如 DepthOfFieldEffect、玻璃和水折射,以及水面反射。
  • 当 alpha 用于为半透明对象或具有平滑透明度渐变的对象添加细节时,将 MeshPart.Transparency 设置为 至少 0.02。这可以改善像污染的窗户和柔和边缘的羽毛这类对象的融合质量,但并非所有效果均适用。
色彩掩模

您可以使用 Enum.AlphaMode.TintMask 模式对表面的选择区域应用 SurfaceAppearance.Color 着色。着色在 alpha 通道完全可见的地方最为明显,并在 alpha 通道透明的地方不应用。

一种温暖的、浅色的砖纹理,砖缝之间有较深的灰色纹理。
示例砖纹理,展示了砖面和砖缝之间的颜色细节。

颜色着色

您可以通过修改 SurfaceAppearance.Color 属性将着色应用于您的颜色图。着色不会影响性能,您可以通过重用单个颜色图与不同的着色来节省内存。利用颜色着色,在您的 MeshPart PBR 纹理之间创建额外的低成本变体,或者在实时中以编程方式修改您的 PBR 表面颜色。

一座带有默认黄色着色和反射玉石样特性的雕像。
来自 达瓦尔驱动的神秘 的雕像网格,没有着色。
一座带有红色着色和继续从其其他纹理图层中反射的光滑反射特性的雕像。
雕像网格,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 是我们在美国及其他国家或地区的注册与未注册商标。