UE5 学习系列(八)材质基础认知
这篇博客主要介绍了 UE 中对材料的基础概念,包括自定义和如何修改材质并应用到模型上。
- B 站视频:s05-材质基础认知
1. 材质的作用
材质球简单来说就是 贴图和模型之间的媒介,贴图需要通过着色器中原有的一些光照算法将贴图中所包含的信息转换成可以显示的视觉效果并渲染,这种方式需要一个媒介去执行,在游戏引擎中通常是材质球。实际上即便是 SolidWorks 这种建模软件也是通过材质球进行渲染的。
同样,模型的一些表面纹理也需要先通过贴图吸附到材质球表面,然后再进行渲染。
1.1 打开新手资源地图
因为原视频中需要用到新手资源包中的地图,但在这之前咱们都没有打开过,这里先介绍下如何打开新手资源包的中的教程地图以便和视频的操作环境保持一致。
【Note】:如果你在自己的场景中已经完成编辑了,一定要先保存否则编辑会丢失!
在 UE Editor 中一定要记住:Ctrl
+ S
不能完整保存,需要在资源浏览器中点击保存全部 Save All
才能生效;
在确保自己的编辑内容都保存成功后按照下面的步骤打开新手资源地图:
- 在资源浏览器
Content Drawer
窗口进入到All->Content->StarterContent->Maps
目录; - 双击
StarterMap
打开新手地图;
1.2 预览新手地图中提供的材质球
双击打开后可以看到下面的画面:
在此处可以大概浏览一下能看见很多材质球效果:
2. 材质编辑器
【Note】:为了养成好的习惯,你可以先创建一个文件夹用来存放所有自己定义的素材,我这里同视频作者一样直接使用之前博客 《UE5 学习系列(四)导入模型资产》 中导入模型时创建的文件夹,路径为 Content->MatMesh
。
在资源浏览器的空白处点击右键找到材质 Material
创建一个新的材质:
创建成功后双击点开这个材质球进入材质编辑器,在空白处按住 鼠标右键
就可以拖动界面,鼠标滚轮
可以缩放编辑器中的视图大小,窗口左侧的小球可以通过按住 鼠标左键
进行旋转预览:
3. 调节基础的PBR材质球
PBR英文全拼 Physically-based rendering
即基于物理的渲染,当前介绍的材质球编辑就是基于 PBR 进行渲染的。
3.1 创建 1D 常量
在操作面板空白处,按住键盘上的数字 1
+ 鼠标左键
会创建一个 1D 常量:
3.2 创建 2D 向量
在操作面板空白处,按住键盘上的数字 2
+ 鼠标左键
会创建一个 2D 向量:
3.3 创建 3D 向量
在操作面板空白处,按住键盘上的数字 3
+ 鼠标左键
会创建一个 3D 向量:
3.4 修改颜色
修改颜色有两种方式,按照下面步骤操作:
- 将长条的基础颜色
Base Color
和刚才创建的 3D 向量的第一个点链接; - 直接修改 3D 向量中
X
、Y
、Z
的值; - 或者先选中3D向量,然后在左侧找到
Constant
并展开,再点击X
上面的空白框就可以唤出调色盘;
在调色盘上有两个滑块,左侧的表示颜色深浅,右侧表示颜色明暗。完成调色后一定要点击下面的完成 OK
,否则外面材质球的颜色是不会变得。
【Note】:如果你点了 OK
并退出后外面的材质球颜色没有发生变化,那么重新进入一次再点 OK
即可。
3.5 调整粗糙度
颜色 RBG 需要三个值进行表示,但表面粗糙度和金属光滑度只需一个物理量表示就够。
对于粗糙度而言,值为 0
表示光滑的镜面反射;值为 1
表示完全粗糙与漫反射;
按照以下步骤修改表面粗糙度:
- 将长条中的粗糙度
Roughness
和 1D 常量连接; - 直接修改这个 1D 常量中的值;
- 或者选中1D常量后在左侧找到材质表达式常量
Material Express Constant
,然后将鼠标落在绿框的数字上左右拖动预览粗糙度变化;
【Note】:粗糙度在调整的时候可以超越 [0,1] 区间但超过的部分不生效而已;
显示效果如下,可发现调整完粗糙度后球体的表面反光基本没了:
3.6 调整金属光泽
金属光泽值越接近 1
表示100%金属;0
表示 100% 非金属,在UE中金属光泽直接等价于是否为金属以及金属占比;
因为我们已经将 1D 常量用了,所以这里还需要新建一个 1D 常量:在空白处按住键盘 1
+ 鼠标左键
,然后按照以下操作进行:
- 将长条中的金属光泽
Metallic
和 1D 常量连接; - 直接修改这个 1D 常量中的值;
- 或者选中1D常量后在左侧找到材质表达式常量
Material Express Constant
,然后将鼠标落在黄框的数字上左右拖动预览金属光泽变化;
【Note 1】:金属光泽在调整的时候可以超越 [0,1] 区间但超过的部分不生效而已;
【Note 2】:如果你已经确定了这个材质球要给非金属使用的,那么可以干脆不链接;
在这里你可同时将表面粗糙度修改成 0
,并将金属光泽修改成 1
就可以得到一个镜面的效果:
4. 贴图与基本调整
这里需要用到之前博客 《UE5 学习系列(五)导入贴图资产》中 2. 导入贴图 导进来的四张贴图,我放置的位置是 All->Content->Texture
:
4.1 导图贴图到材质编辑器
选中这四张贴图直接拖拽进材质编辑器中:
【Note】全选技巧:首先点击第一个,然后按住 Shift
后再去点击最后一个;
拖拽进来后的贴图样子:
为了和视频操作保持一致,将上面几个新建出来的向量删除。
4.2 创建注释
【Note】这一步不是必要操作,只不过视频一开始没有演示,到了这个环节才做了一下;
在空白处鼠标不用点击,键盘敲击 C
即可新建注释:
4.3 底色贴图
按照下面步骤查看一个贴图是否为底色贴图:
- 随便选中一个贴图框;
- 在右侧找到材质贴图信息
Material Expresson Texture Base
标签并定位到贴图Texture
; - 将缩放图旁边的菜单展开可以看到这个贴图文件的完整文件名;
【Note】:一个规范的贴图素材文件通常会在文件名中使用 diff
、BaseColor
、Albedo
标识底色贴图,例如这里的文件名中就包含了 diff
字段;
在确定好底色贴图后将长条中的基础颜色 Base Color
和这个和贴图连接:
4.4 置换贴图
这里不是将贴图换掉,而是有一种贴图形式叫做 置换贴图,通常是文件名中包含 disp
的贴图文件,其工作原理是存储表面纹理的凹凸信息用以增加模型细节,例如这里的置换贴图是下图中红框标记的那张,这里暂时先不用,找到后直接删除即可:
4.5 粗糙度贴图
和上面一样找到文件名中包含 rough
的文件,即粗糙度贴图。然后将这个贴图的 R
、G
、B
三个通道的其中一个 和长条的粗糙度 Roughness
相连:
【Note】:这里之所以只连一个通道是因为描述粗糙度只用了一个数字,所以连接R、G、B都可以,如果你直接连到 RGB 通道上也是可以的,但通常不这么做。
4.6 删除连线
在贴图编辑器中选中线后按 Del
是无法删除连线的,需要按住 Alt
然后再去选线:
4.7 更改连线的末端
修改线头两端的连线可以通过删除重连,但最方便的方法是按住 Ctrl
然后拖动线头的其中一个端点,即可只修改一端的连接结果:
4.8 法线贴图
法线贴图通常是文件名中包含 nom
的贴图,法线贴图可以在环境中有光照的时候对显示效果进行扭曲,当光照射到表面时可以呈现出一种凹凸的效果,直接将最后一张法线贴图连接到长条的法线 Normal
上:
【Note】:法线贴图需要连接 RGB 三通道,不能只连接一个;
5. 使用贴图
返回到 UE Editor 主窗口,进入你在第一步创建材质球的路径中可以看到生成了一个新的材质球:
首先拖拽模型到环境中:
让后按照下面的步骤将材质球赋予模型:
- 选中环境中的模型;
- 在右侧的细节
Detail
栏中找到材质Materials
; - 拖拽材质球到元素1
Element 1
上;
等待渲染完成后就可以看见模型的材质发生了变化:
6. 倍化贴图效果
通常情况下贴图倍化只对法线贴图、粗糙度贴图这类有效,因为RGB底色贴图如果直接乘上某个数会把颜色变白,这里就直接将法线贴图的效果乘以3倍。
6.1 创建乘法工具
在空白处按下 M
+ 鼠标左键
:
6.2 倍化粗糙度贴图
为了实现乘法还需要在创建一个 1D 常量,空白处 1
+ 鼠标左键
,然后按照下面步骤操作:
- 修改1D常量到一个想要的值;
- 连接1D常量和乘法工具的一端;
- 连接粗糙度贴图和乘法工具的另一端;
- 连接乘法工具输出和长条中的粗糙度
Roughness
;
6.3 参数暴露
如果每次都进来修改这个1D的倍数就有些麻烦,而且有时候游戏中还需要动态修改表面粗糙度,这就需要将这个数作为参数暴漏出去:右键点击1D常量,在弹出的菜单中选择转化为参数 Convert to Parameter
,并为其进行命名,我这里命名为 Rough_int
:
Ctrl
+ S
保存后回到 UE Editor 找到材质球后右键创建材质实例 Create Material Instance
:
然后你会发现多出来了一个材质球:
双击打开后在右侧多出来一个参数组 Parameter Groups
,勾选上后就可以编辑暴露出来的参数: