UE5材质大师班:PBR工作流核心参数与实战案例详解
2026/9/24 14:17:29 网站建设 项目流程

做场景材质时,最常见的困惑不是“不会连节点”,而是“节点连对了,效果还是不对”。UE5 默认材质体系基于 PBR(Physical Based Rendering,基于物理的渲染),这意味着只要把 Base Color、Metallic、Roughness、Normal 这几个核心参数理解透,材质效果就已经能覆盖大部分场景需求。这篇是《UE5 材质大师班》的上篇,我会从 PBR 基础讲起,一路做到一套完整的高级材质制作工作流,包含材质编辑器操作、核心参数拆解、常用节点组合、石板路面和磨损金属两个实战案例,以及 UV 动画和材质生长这类进阶技巧。

适合的读者很明确:刚接触 UE5 材质系统、想系统建立 PBR 材质认知的场景美术同学,已经会连基础节点、但想提升材质细节和可维护性的 TA,以及需要在项目里落地材质规范和性能预算的开发者。读完这篇文章,你能独立完成一个不会“发灰”、不会“假塑料”、能在场景灯光下自然反馈的 PBR 材质,并且知道怎么用材质实例和材质函数把工作流沉淀下来。如果目标是 Nanite/Lumen 下的高质量场景,这套基础同样适用。

先说结论:这次至少要记住两个东西。第一,UE5 材质默认是 Metallic / Roughness 工作流,金属和非金属的参数行为完全不同,判断正确比参数精确更重要。第二,材质编辑器里的 Stats 面板是判断材质性能和工作状态最直接的窗口,后面所有案例都会用到。下面先把材质系统的能力范围拉出来。

1. UE5 材质系统核心能力速览

在进入操作前,先把 UE5 材质系统的能力边界一次说清楚。这张表来自 UE5 常用项目的默认状态,不涉及特定第三方插件,适合作为后续所有工作的基础认知。

能力项说明
渲染管线默认延迟渲染,与 Lumen 全局光照、Nanite 几何体配合
材质模型默认 PBR:Metallic / Roughness / Specular 工作流
编辑入口内容浏览器右键 -> 材质
核心输出节点Main Material Node,包含 Base Color、Metallic、Specular、Roughness、Normal、Emissive、Opacity、World Position Offset 等引脚
常用工作流纹理采样、Lerp 遮罩混合、顶点色混合、材质函数、材质实例
性能观察材质编辑器 Stats 面板显示指令数、纹理采样数、UV 通道数
适用场景场景美术、道具、角色、地形、特效、UI、动画材质
版本建议推荐 UE 5.1 及以上版本

从这张表能看出,UE5 的材质系统不是单纯“连贴图”的工具,而是一套完整的渲染状态控制体系。Opaque(不透明)材质是使用频率最高的一类,后续案例都以它为主;Masked(带遮罩)和 Translucent(半透明)材质会涉及 Opacity Mask、透明排序和性能成本,属于进阶内容,可以在下篇展开。

2. PBR 基础与工作流选型

PBR 的核心思想是让材质在不同光照环境下都保持一致的物理反应。传统美术只要在固定灯光下调“看起来对”,而 PBR 要求你用物理参数描述表面属性,让引擎统一计算高光、漫反射和反射。这样能减少复杂光照下的校准成本,也是现代游戏引擎普遍转向 PBR 的根本原因。

UE5 默认采用 Metallic / Roughness 工作流。这套方案用两个核心参数描述表面属性:Metallic 决定表面是金属还是非金属,Roughness 决定表面光滑程度。与之相对的 Specular / Glossiness 工作流主要出现在其他引擎和旧内容中,UE5 里不推荐混用。如果你从 Substance Painter 或 Marmoset Toolbag 导出贴图,只要选择 PBR Metal/Rough 预设,贴图命名和引脚对应关系基本可以无缝对接。

这里给出一个直接可用的判断方法:金属表面,Base Color 通常接近黑色;非金属表面,Base Color 显示的是固有色。而 Metallic 几乎只取 0 或 1 两个极端值,边缘磨损产生的中间值用遮罩贴图混合出来,而不是直接把 Metallic 调成 0.5。这是新手最容易出问题的地方。

PBR 的好处是材质可复用。同一个金属材质,放到天光、点光、室内、室外,高光和反射都会自动适配,不用每换一个灯光就重调颜色。前提是贴图本身符合线性工作流要求:颜色贴图用 sRGB,法线、粗糙度、金属度、AO 等数据贴图用线性(非 sRGB),这个设置在 UE5 导入纹理时默认处理,但如果你从别处手动导入,要检查纹理压缩设置。

3. 环境准备与材质编辑器基础

3.1 版本与项目设置

建议使用 UE 5.1 及以上版本。4.27 也支持 PBR 材质,但节点命名、默认渲染器和 Lumen 支持有差异,如果你后续想深入 Nanite 和 Lumen,建议直接使用新版本。项目类型可以选择 Basic 或 Blank,场景光照用默认带定向光的模板即可。

贴图资源方面,推荐准备四张基础贴图:Base Color(反照率)、Normal(法线)、Roughness(粗糙度)、AO(环境光遮蔽)。如果要做 Masked 材质,还需要 Opacity Mask 或通道图。主流 DCC 软件如 Substance Painter 导出的贴图命名通常是_BaseColor_Normal_Roughness_AO,直接拖入 UE5 内容浏览器即可自动导入。

导入后建议检查纹理的压缩设置。普通颜色图保持 sRGB 勾选,法线贴图需要把纹理压缩设置为 Normalmap(法线贴图),这样采样结果才能正确参与光照计算。如果你发现材质里法线方向不对、高光位置异常,优先检查这一步。

3.2 材质编辑器布局

在内容浏览器右键 -> 材质,命名后进入材质编辑器。界面主要分四块:左侧是 Palette(节点面板),可以搜索所有节点;中间大块是节点图,连线在这里完成;右侧是 Detail 面板,显示当前选中节点的参数;下方或右侧是预览视口,默认显示一个球体,可以切换成平面、立方体或自定义网格体。

打开编辑器后,第一件事是从 Palette 里搜索 Texture Sample Parameter2D、Scalar Parameter、Vector Parameter、Constant、Lerp、Multiply 这几个节点,把它们连一次,感受节点连接逻辑。材质编辑器里所有输入都是引脚,输出引脚可以连接多个目标,输入引脚只能接收一个来源,这个规则会导致很多新手困惑。

3.3 Stats 面板与材质质量等级

材质编辑器右下角有一个 Stats 面板,默认显示指令数、纹理采样数、UV 通道数等关键指标。指令数越高,GPU 压力越大;纹理采样数过多会触发平台限制;UV 通道数影响移动端顶点缓冲区大小。每次修改节点后,Stats 面板都会实时刷新,所以做性能优化时第一件事就是看它。

如果要在场景里观察材质性能,可以用控制台命令切换材质质量等级和着色器复杂度视图:

# 切换材质质量等级:1=低,2=中,3=高,0=不使用质量等级 r.MaterialQualityLevel 3 # 切换到 Shader 复杂度视图,可以看到场景各模型着色复杂度 viewmode shadercomplexity
# 回到普通光照视图 viewmode lit

这个小技巧在材质开发中非常实用。低质量级下如果材质表现为简化版,说明材质节点里使用了 Quality Switch 或 Feature Level Switch 节点,这也是项目里常见的多平台策略。

4. PBR 材质核心参数拆解

材质编辑器中,最终输出节点是 Main Material Node。双击输出节点可以看到所有引脚,真正决定 PBR 效果的核心参数只有几个。

引脚含义金属非金属常见错误
Base Color反照率颜色接近黑色固有色金属给了明显颜色,导致变成“塑料金属”
Metallic金属度0.8 到 1.00.0非金属给了非 0 值,高光异常发亮
Roughness粗糙度按镜面/拉丝状态按表面状态全图 0.5,高光均匀且死板
Specular高光度默认 0.5默认 0.5绝大多数情况不需要改动
Normal法线细节可叠加可叠加强度过高,接缝明显
AO环境光遮蔽可选可选AO 过强,模型整体发黑

Base Color 是最直观的引脚。非金属颜色要接近真实固有色,金属颜色要压暗,因为金属的反射色来自高光反射而不是漫反射;如果金属给了高亮度颜色,反射会被颜色染色,效果就会失真。更准确的判断是:金属的 Base Color 应该表示它的光谱反射特性,比如金是偏橙的暗黄,铁是偏灰的蓝黑。

Roughness 的数值语义是“表面微观不平整度”。0 代表完全镜面,1 代表完全粗糙。同一个材质里,不同区域的粗糙度差异比绝对值更重要。真实世界里很少有均匀粗糙度的表面,所以粗糙度贴图比单个常量更常见。另外,法线贴图与粗糙度要配合:法线细节很强但粗糙度均匀,表面看起来会像打了蜡;法线细节弱但粗糙度有明显变化,表面仍然会有真实感。

AO 引脚本质是给环境光遮蔽额外加权。它不影响直接光,只影响环境光在凹槽处的衰减。AO 过强会让模型变黑,AO 为 0 又会丢失立体感。一般建议 AO 贴图完整保留原始灰度,不要强行拉高对比度。

Normal 引脚负责表面细节。UE5 里直接连接法线纹理节点即可,如果贴图质量一般,可以用 FlattenNormal 降低法线强度,或用 NormalBlend 混合多层法线。法线不是越多越好,场景物体在近距离观察时,法线细节要能与几何体高度匹配,否则会出现“模型边缘光滑但表面凹凸很重”的割裂感。

Specular 在 UE5 默认工作流里基本不需要动。它只用于非金属材料的菲涅尔修正,常见值在 0.5 附近。如果不确定,保持默认连线即可。

5. 常用材质节点与工作流组合

PBR 参数本身不难,真正决定工作流质量的是节点组合。以下节点在材质制作中几乎每个案例都会用到。

  • Texture Sample:单张贴图采样,适合临时测试。
  • Texture Sample Parameter2D:带参数包装的贴图采样,可以在材质实例中更换贴图。
  • Scalar Parameter / Vector Parameter:数值或颜色参数,材质实例中可覆盖。
  • Constant / Constant3:固定颜色或常量,适合不会变的值。
  • Multiply / Add:数值运算,控制强度、偏移。
  • Lerp:线性插值,两个输入按遮罩混合,是材质混合的核心。
  • Texture Coordinate:UV 坐标,控制平铺和偏移。
  • Vertex Color:读取模型顶点色,用于做脏渍、磨损和边缘过渡。
  • Material Function:把一段节点逻辑封装成函数,便于复用。

最常见的组合是“贴图 + 参数 + 乘法”来控制整体强度。写一个通用模板:

Texture Sample Parameter2D(Roughness) * Scalar Parameter(RoughnessScale) -> Roughness 引脚

粗糙度贴图的输出范围通常是 0 到 1,乘以一个 0.5 到 2 的强度参数,就可以在材质实例里实时控制整张贴图的强度,不用重做材质。

Lerp 是材质混合的核心节点。它的三个输入是 A、B、Alpha,Alpha 为 0 输出 A,Alpha 为 1 输出 B,中间值按比例混合。常见用法是用一张灰度贴图控制两个颜色或两个粗糙度之间的过渡。比如路面:干燥区域粗糙度 0.7,潮湿区域粗糙度 0.2,用一张水渍灰度图作为 Alpha,Lerp 输出到 Roughness 引脚,就能得到干湿混合的路面。

顶点色的主要应用是旧化。模型在 DCC 里刷一层顶点色,深色表示磨损、浅色表示干净,或者反过来。在材质里用 Vertex Color 节点接到 Lerp 的 Alpha,可以控制脏渍和磨损的分布范围,完全不需要额外的 UV 贴图。顶点色的好处是美术可以直接在模型上绘制,位置准确且不消耗额外纹理内存。

可维护性方面,建议所有需要调整的参数都暴露为 Scalar Parameter 或 Vector Parameter,然后把材质保存为材质实例。美术在蓝图中或者场景里调材质实例,不会破坏主材质,也不会因为误改节点导致全局崩溃。每个项目都应该以“少量主材质 + 大量材质实例”的结构组织资源。

如果需要更复杂的混合,可以使用 Material Attribute 连接和 MakeMaterialAttributes 节点,把多个材质属性作为一个整体输出。这在分层材质和地形材质中特别有用,但需要保证基础节点结构规整,否则排查难度会指数上升。

6. 实战案例:石板路面与磨损金属

6.1 石板路面材质

石板路面非常适合讲解多贴图 PBR 工作流。准备 Base Color、Normal、Roughness、AO 四张贴图,打开材质编辑器,按以下步骤连接:

  1. 添加四个 Texture Sample Parameter2D,分别加载 Base Color、Normal、Roughness、AO。
  2. Base Color 贴图直接连到输出节点的 Base Color。
  3. Normal 贴图连到输出节点的 Normal。
  4. 把 Roughness 贴图乘一个 Scalar Parameter(初始值 1.0),再接入输出节点的 Roughness。
  5. AO 贴图连到输出节点的 Ambient Occlusion。
  6. 保存并编译,将材质应用到地面静态网格体。

验证标准很直接:场景中有清晰的方向光时,石板表面应该出现自然的镜面反射变化,接缝处有 AO 阴影,法线细节在侧光下能看出凹凸起伏。如果整体发灰,优先检查 Roughness 是否没有变化,或者 Base Color 是否贴图颜色本身过于平均。

石板路面的进阶做法是加一层“干湿变化”。把 Roughness 贴图再采样一次,用一张水渍遮罩图作为 Lerp 的 Alpha,干燥处 0.7,潮湿处 0.2,结果接到 Roughness 引脚。这样雨天场景下只需要更新遮罩贴图,不用改材质逻辑。

6.2 边缘磨损金属材质

金属材质的关键在于 Metallic 和 Base Color 的配合。步骤:

  1. 新建材质,命名M_ScratchedMetal
  2. 添加 Base Color 贴图,金属底色尽量暗;如果没有贴图,用 Vector Parameter 设置一个偏暗的铁灰色。
  3. Metallic 引脚接常量 1.0。
  4. Roughness 引脚接 Roughness 贴图,或先用 Scalar Parameter 占位。
  5. 添加法线贴图,并加上 FlattenNormal 控制强度。
  6. 添加一张磨损遮罩图,接到 Lerp 的 Alpha。
  7. Lerp 的 A 输入加一个 Scalar Parameter(磨损区粗糙度,例如 0.8),B 输入接原始 Roughness,结果交给输出节点。

这样,磨损区域会表现出更粗糙的金属表面,正常区域则保留较光滑的金属反射。再配合顶点色做边缘磨损:把 Vertex Color 接到 Lerp 的 Alpha,深色区域显示脏渍和划痕,浅色区域保持干净金属。

验证标准:在场景中旋转模型,金属高光应随着视角变化而移动,边缘磨损区域不再有强烈高光。如果整体像塑料,说明 Metallic 没有生效,或者 Base Color 太亮,需要压暗底色。

7. 高级材质技巧:UV 动画与材质生长

7.1 UV 平铺与 Panner 动画

材质里做滚动、流动、生长效果,基础是 UV 动画。Texture Coordinate 节点可以设置 Tiling 次数,Panner 节点可以随时间偏移 UV。Panner 有两个输入:速度(Speed)和 UV。速度是一个二维向量,X 控制水平滚动,Y 控制垂直滚动。

单独用 Panner 时要注意:如果材质需要保持单张贴图平铺,必须把 Texture Coordinate 的 Tiling 设置成 1,然后通过 Panner 的 Speed 做偏移,否则会出现跳帧和接缝。更稳妥的做法是先对 UV 做 Tiling,再给 Panner 一个很小的速度值,例如 (0.1, 0),让纹理缓慢滚动。

Time 节点在材质动画中是核心。你可以把 Time 输出到乘法节点,再控制参数,就能得到与时间相关的数值变化。UE5 材质编辑器还内置了不少预设节点,比如 Sine、Abs、Saturate,组合它们可以做出脉冲、闪烁、开关门等效果。

7.2 材质生长遮罩

“材质生长”是比较常见的高级需求,很多场景里会用到:物体从地面生长出来、建筑从边缘刷出、或者模型渐进显现。核心思路是用一个灰度遮罩控制 World Position Offset(WPO)或 Opacity Mask,让模型随遮罩值逐渐出现。

如果只是让像素出现,可以用遮罩控制 Opacity Mask,但这样边缘容易有锯齿,也不参与阴影,效果比较扁平。更真实的做法是结合 WPO:把顶点沿法线方向按遮罩值偏移,让模型从地面“长出来”,同时配合顶点色的高度渐变,效果会自然很多。

这里给一个自定义节点

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询