虚幻引擎---材质篇

一、基础知识

  • 虚幻引擎中的材质(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) 属性上;
  • 修改浮点数节点的数值,即可看到材质球表面的凹凸感变化,如图:

五、总结

在虚幻引擎中,可以自由的创建各种材质。通过修改材质球的各项属性,可以改变材质的基础颜色、金属感、粗糙度、凹凸感等等。同时,使用类型多样的贴图可以达到更高级的效果,如附着纹理、改变模型各部分的透明度等等。

相关推荐
异次元的归来4 小时前
Unity DOTS中的share component
unity·游戏引擎
向宇it7 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
向宇it8 小时前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
每日出拳老爷子11 小时前
【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接
unity·游戏引擎·图形渲染
YY-nb19 小时前
Unity Apple Vision Pro 开发教程:物体识别跟踪
unity·游戏引擎·apple vision pro
向宇it1 天前
【从零开始入门unity游戏开发之——C#篇23】C#面向对象继承——`as`类型转化和`is`类型检查、向上转型和向下转型、里氏替换原则(LSP)
java·开发语言·unity·c#·游戏引擎·里氏替换原则
Cool-浩2 天前
Unity 开发Apple Vision Pro空间锚点应用Spatial Anchor
unity·游戏引擎·apple vision pro·空间锚点·spatial anchor·visionpro开发
一个程序员(●—●)2 天前
四元数旋转+四元数和向量相乘+音频相关
unity·游戏引擎
冒泡P2 天前
【Lua热更新】上篇
开发语言·数据结构·unity·c#·游戏引擎·lua
十画_8242 天前
Unity 6 中的新增功能
unity·游戏引擎