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


各种应用程序和工作流程可用于创建 PBR 纹理。在自定义 3D 对象创作品的模型和纹理阶段,您可以使用这些,只要 Roblox Studio 支持 您正在使用的特定纹理地图。
本指南提供有关设置你的网格对象以使用 PBR 纹理地图的说明,并描述 Roblox 支持的 PBR 纹理地图的常见用途和最佳实践。当创建自己的表面时,请参阅材料参考以获取常见材料值、图像比较和服装示例。
启用表面外观
您可以通过添加一个覆盖原始分配的纹理的 MeshPart 对象来将 PBR 纹理添加到任何 SurfaceAppearance 上,从而覆盖原始分配的纹理。一通用来说,你不能在体验期间通过脚本修改 SurfaceAppearance 属性,因为引擎需要进行一些预处理才能显示这些图形。与添加基本纹理类似,每个纹理图像地图必须指向适当的上传的图像资产ID。
要启用MeshPart表面外观:
纹理地图
Studio 目前支持 4 种类型的 PBR 纹理地图:颜色、普通、粗糙和金属。这些地图各自对应对象表面外观的重要方面。纹理地图仅更改视觉外观并不影响 MeshPart 对象的几何形状。
查看以下示例,了解 Roblox 支持的纹理地图和额外资源的概览:
ColorMap 属性设置了表面的颜色数据,包括地图中存在的任何透明度。请参阅颜色(反射率)获取额外信息。



颜色(反射率)
颜色 或 反射率 ,地图决定了你的纹理颜色,主要由少量灯光或纹理信息组成的颜色信息构成。为了进一步自定义,您还可以通过添加不透明度到图像地图来在反射材质中添加 透明度。
Alpha 模式
对于需要部分或完整透明度的对象,例如草、叶子、蕾丝或像尘土或朋克一样的装饰的透明度,您可以使用各种 测试版模式 来应用透明度到您的颜色地图。如果你的颜色地图图像格式支持阿尔法通道,你可以在 0.0 透明的情况下应用 1.0 不透明的阿尔法地图。同样,当使用图像格式,例如 .png 时,颜色地图上的任何不透明度都会应用为素材上的透明度。
您可以通过设置以下 AlphaMode 值来应用透明度在两种不同的行为中:
- 透明度 — 基于透明度在 ColorMap 中移除可见的网格。这会渲染网格透明,并且在透明存在时不会揭示原始网格颜色。
覆盖
您可以使用 覆盖 来显示网格的原始颜色的部分。由于透明区域的颜色地图暴露了底层颜色,您可以设计一个独特的纹理地图,部分或全面揭示网格的 Color 属性为特殊皮肤颜色或其他情况的独特颜色。
以下示例展示了如何使用白色球体参考使 覆盖模式 工作:
以下示例使用 覆盖模式 为自定义角色启用,显示角色的原始肤色:


请参阅自定义肤色获取有关优化皮肤和类似应用程序的覆盖的额外细节。
透明度
您可以使用 透明模式 来创建复杂或极细的对象,例如蕾丝或编织网,通过移除网格中可见的部分来替换雕刻网格几何。由于这不会影响网格对象的几何图形,因此您可以创建详细对象而不会影响复杂网格模型的性能影响。
以下示例展示了如何在此模式中部分和全透明度视觉移除网格的部分:



根据 模式是否设置为 或 至少 最少 ,数值精度可能导致小值,例如 触发不透明透明。
- 当使用 alpha 来切割大多数不透明对象的形状,例如叶子、编织织物和网络时,将 MeshPart.Transparency 设置为 0 。当表面的部分完全不透明时,Roblox 引擎可以用正确的深度基于密闭来渲染它们。不透明表面也一般来说更适合使用基于深度效果的效果,例如 DepthOfFieldEffect 、玻璃和水折射以及水反射。
染色面具
您可以使用 Enum.AlphaMode.TintMask 模式来应用 SurfaceAppearance.Color 染色到表面的选择区域。染色最强烈的地方是阿尔法通道完全可见且不适用于阿尔法通道透明的地方。

颜色染色
您可以通过修改 SurfaceAppearance.Color 属性来应用染色到您的颜色地图。染色不会影响性能,您可以通过重复使用单个颜色地图来保存内存。使用颜色染色来在你的 MeshPart PBR 纹理之间创建额外的低成本变化或在实时修改你的 PBR 表面颜色。
SurfaceAppearance.Color 染色作为乘数应用,因此最终外观是由 Color3 (texel 颜色) 倍 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 。染色最强烈的地方是阿尔法通道完全可见且不适用于阿尔法通道透明的地方。

正常
正常或表面添加深度纹理到你的表面,并且与高度地图相似地行为。因结果,效果可能会根据观察角度和照明环境而淡化或加强。当普通地图不存在时,值设置为 0.0 。
在下图中,您可以在网格参考和地图参考之间切换,进行普通地图值的比较:



图像的 R 、 G 和 B 通道分别对应本地表面向量的 X 、 Y 和 Z 组件。统一的颜色图像 [127, 127, 255] 转换为完全平坦的普通地图。Roblox 仅支持 OpenGL 格式 - Tangent Space 普通地图。
普通地图显著影响网格的视觉表面,可以强调网格中不便的缝合缝。尽可能地,将你的纹理缝隐藏起来,避免与网格的视觉问题。
粗略度
粗糙度 , 或 微表面 , 地图决定光如何在模型表面分布。当粗糙度达到 0.0 时,表面不会散射光,导致材料上的反射和光泽更锋利和更亮。在 1.0 时,光线和反射匀称地散射在模型上,导致反射率较低的磨砂效果。
粗糙度可能会影响物体在不同角度的反射率,也称为 法棱 效果。请参阅fresnel获取更多细节和最佳实践,以保持一致的反射行为。
下图显示了各种粗糙度地图值的比较:



弗雷曼
棱镜 指的是对表面的反射量,以当前观察角度为参考。工作室的棱镜处理旨在达到物理世界的准确度,尽管你可能在粗糙表面上获得意外的反射贡献,但在某些角度也可能获得意外的反射贡献。在某些情况下,您可以通过使粗糙度地图周围的 0.1 变得更粗来实现与材料一致的照明响应。
尽管 Roblox 精确地渲染了这个灯光效果,但表面的亮度和反射率可能不会在您的纹理内容创建软件(例如 Substance Painter 和 Studio)之间一致响应。请参阅服装示例,了解应用之间的渲染差异。
金属性
金属性 决定了表面的反射率。金属性值介于 0.0 和 1.0 之间。Roblox 将默认值设置为 0.0 如果缺少金属地图。
请参阅以下图表比较各种金属性地图值:



不同的 PBR 渲染器使用各种工作流程来处理反射率。工作室仅使用 金属性工作流程 来确定材料是否是 非金属 或 金属 ,有时称为 绝缘器 或 导体 。
在大多数情况下,您应该将此值设置为 0.0 (非金属) 或 1.0 (金属)。您可以在创建具有中等反射性质的更不常见的表面时使用部分金属性值,例如绒毛或丝绸。这种实践可以悄无声息地伪造材料中的反射来突出颜色来自环境中反射的颜色。颜色/反射率地图上的颜色。