一、基础知识
- 虚幻引擎中的材质(Materials) 定义了场景中对象的表面属性,包括颜色、金属度、粗糙度、透明度等等;
- 可以在材质编辑器中可视化地创建和编辑材质;
- 虚幻引擎的渲染管线的着色器 是用高级着色语言(HLSL) 编写的;
- 材质的节点图表被虚幻引擎解析并转换为HLSL以创建着色器;
- 编译器 把着色器代码转换为GPU硬件 可执行的汇编语言指令;
- GPU硬件执行汇编指令把每个像素颜色输出到显示器。
二、材质属性
在虚幻引擎的内容浏览器 的右键菜单中点击材质 选项可以创建新的材质,双击该材质进入材质编辑器 会看到一个基础节点,如下:
1. 基础颜色
节点的第一项是材质的基础颜色
,也就是通过RGB通道 计算得到的颜色。按住键盘的数字键3 ,在材质图表窗口 的空白处点击鼠标左键,可以创建一个包含三个参数的节点,如图:
XYZ分别对应RGB通道。把新节点连接到基础节点的基础颜色
属性上,然后修改这三个值,视口中的材质球颜色就会发生变化。
2. 金属感
金属感(Metallic) 属性可以让材质看起来更接近金属质感
。按住键盘的数字键1 ,在材质图表窗口 的空白处点击鼠标左键,可以创建一个浮点数节点,如图:
把浮点数节点连接到基础节点的金属感
属性上,并调节浮点数值,即可从视口中观察到材质球的金属质感变化。数值越接近1,质感越接近金属,数值越接近0,则反之。
3. 粗糙度
粗糙度(Roughness) 是影响材质表面反射性质
的属性。同样,创建一个新的浮点数节点连接到该属性上,调节浮点数值,即可观察材质球的粗糙度变化。数值越接近1,材质表面越接近镜面反射,越接近0,则漫反射越强。
4. 自发光颜色
自发光颜色 属性可以控制材质表面的发光颜色
。调节的方式与基础颜色
属性相似。颜色数值越大,发光越强,否则反之。
三、PBR贴图
PBR(Physically-Based Rendering) 是一种基于物理的渲染和光照方式,是一个工作流程。在此理论基础之上构建的贴图被用于模拟现实中物体的外观、粗糙度、凹凸程度等等,以下是常用的贴图类型及其作用:
1. 基本颜色贴图
标识符 :diff、D、Albedo
作用 :记录材质表面的基本颜色
信息。这是决定物体外观 最直观的贴图,为材质提供基础的颜色和纹理。
2. 粗糙度贴图
标识符 :Rough、ROU
作用 :记录材质表面的划痕、污渍 等等磨损的效果。
3. 法线贴图
标识符 :normal、nor、nrm
作用 :记录材质表面的法线
信息,并通过这些信息来模拟表面的凹凸感 。法线贴图不会改变模型的几何形状,但能在视觉上产生类似的效果。
4. 置换贴图
标识符 :displacement、disp、height
作用 :这种贴图也可以使物体产生凹凸感 。与法线贴图不同的是,它会让物体发生真实的形变,但不会破坏原来的模型。
5. 环境光遮蔽贴图
标识符 :AO
作用:记录光线的遮蔽信息,用来模拟物体相互遮挡所产生的阴影。
6. 透明贴图
标识符 :Translucency、opacity、alpha
作用:该贴图分为两种,透明度贴图和不透明度贴图。顾名思义,它们用于控制模型的各个部分的透明度。
四、使用贴图
在项目中添加初学者内容包 ,然后在内容浏览器 中打开All/内容/StarterContent/Textures
目录,即可看到虚幻引擎官方提供给我们的众多贴图。
1. 基础颜色贴图
从上述的目录中找到名为T_Rock_Basalt_D
贴图,我们用它作为示例。
- 创建一个新材质,双击打开材质编辑器;
- 把贴图拖入图表区域,会看到一个新节点产生;
- 把新节点连接到基础节点 的基础颜色属性上;
- 材质球表面会同步出现贴图上的纹理,如图:
在纹理上附着颜色的步骤如下: - 按住3键并点击鼠标左键创建三通道的常量节点;
- 按住M键 并点击鼠标左键创建乘法节点(Multiply);
- 把贴图节点和常量节点分别连接到乘法节点的两个输入点;
- 把乘法节点的输出点连接到基础颜色属性上;
- 修改常量节点的数值,可以看到在材质上同时存在纹理和颜色,如图:
粗糙度贴图的使用方式基本一致,只是以浮点数节点替换三通道节点。
2. 法线贴图
在Textures
目录中找到T_Rock_Basalt_N
贴图,用它来演示法线贴图的用法,如下:
- 以第一小节相同的方式创建浮点数节点、三通道节点和贴图节点;
- 按住"L键 "并点击鼠标左键创建线性插值(Lerp)节点 ;
- 把三通道节点 的Z 值修改为1.0,即呈现蓝色,然后把节点连接到Lerp节点的输入A;
- 将贴图节点 连接到Lerp节点的输入B;
- 把浮点数节点 连接到Lerp节点的输入Alpha;
- 将Lerp节点 的输出连接到基础节点 的法线(normal) 属性上;
- 修改浮点数节点的数值,即可看到材质球表面的凹凸感变化,如图:
五、总结
在虚幻引擎中,可以自由的创建各种材质。通过修改材质球的各项属性,可以改变材质的基础颜色、金属感、粗糙度、凹凸感等等。同时,使用类型多样的贴图可以达到更高级的效果,如附着纹理、改变模型各部分的透明度等等。