当前位置: 首页 > article >正文

虚幻引擎---材质篇

一、基础知识

  • 虚幻引擎中的材质(Materials) 定义了场景中对象的表面属性,包括颜色、金属度、粗糙度、透明度等等;
  • 可以在材质编辑器中可视化地创建和编辑材质;
  • 虚幻引擎的渲染管线的着色器是用高级着色语言(HLSL) 编写的;
  • 材质的节点图表被虚幻引擎解析并转换为HLSL以创建着色器;
  • 编译器把着色器代码转换为GPU硬件可执行的汇编语言指令
  • GPU硬件执行汇编指令把每个像素颜色输出到显示器。

二、材质属性

在虚幻引擎的内容浏览器的右键菜单中点击材质选项可以创建新的材质,双击该材质进入材质编辑器会看到一个基础节点,如下:材质基础节点

1. 基础颜色

节点的第一项是材质的基础颜色,也就是通过RGB通道计算得到的颜色。按住键盘的数字键3,在材质图表窗口的空白处点击鼠标左键,可以创建一个包含三个参数的节点,如图:RGB参数
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) 属性上;
  • 修改浮点数节点的数值,即可看到材质球表面的凹凸感变化,如图:
    法线贴图

五、总结

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


http://www.kler.cn/a/428118.html

相关文章:

  • YOLOv8源码修改(4)- 实现YOLOv8模型剪枝(任意YOLO模型的简单剪枝)
  • 基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发
  • 前端axios拦截器
  • ICSE‘25 LLM Assistance for Memory Safety
  • 《HelloGitHub》第 106 期
  • 在Putty创建php文件
  • 路径规划之启发式算法之九:灰狼优化算法(Grey Wolf Optimizer,GWO)
  • 3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切
  • 沃德云商协系统微信小程序PHP+Uniapp
  • 【返璞归真】-切比雪夫不等式(Chebyshev‘s Inequality)
  • cmakelist使用总结
  • pycharm集成环境中关于安装sklearn库报错问题分析及解决
  • Django drf 基于serializers 快速使用
  • 专升本计算机——计算机基础知识测试(答案解析)
  • PHP和GD库如何给图片添加透明效果
  • CorsConfig前后端数据跨域连接,IDEA右侧Maven窗口消失
  • 每日一练 | Diff-Serv在QoS配置中的应用
  • 树莓派3B+驱动开发(4)- LED驱动(DTS和Driver模式)
  • 计算机毕业设计Python医疗问答系统 医疗可视化 BERT+LSTM+CRF深度学习识别模型 机器学习 深度学习 爬虫 知识图谱 人工智能 大数据毕业设计
  • [ABC267D] Index × A(Not Continuous ver.)
  • Linux系统 —— 进程系列 - 进程的概念,PCB与PID和fork
  • Redis与缓存
  • 如何解决 docker 容器中 “-bash: ping: command not found” 错误 ?
  • vue3父子组件通信
  • Asp.net Mvc在VSCore中如何将增删改查的增改添加数据传输到页面(需配合上一篇Mvc的增删改查一起)
  • IDEA社区版创建新模块时,无Spring Initializr选项