虚幻引擎---材质篇

一、基础知识

  • 虚幻引擎中的材质(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.mzph.cn/web/61935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析

本专栏会对爬虫进行从0开始的讲解,每一步都十分的细致,如果你感兴趣希望多多点赞收藏关注支持 简介:文章对爬虫展开多方面剖析。起始于爬虫的基本概念,即依特定规则在网络抓取信息的程序或脚本,在搜索引擎信息提取上作…

Y20030028 JAVA+SSM+MYSQL+LW+基于JAVA的考研监督互助系统的设计与实现 源代码 配置 文档

基于JAVA的考研监督互助系统 1.项目描述2. 课题开发背景及意义3.项目功能4.界面展示5.源码获取 1.项目描述 随着高等教育的普及和就业竞争的加剧,越来越多的学生选择继续深造,参加研究生入学考试。考研人数的不断增加,使得考研过程中的学习监…

【AI系统】推理流程全景

推理流程全景 本文介绍神经网络模型在部署态中的两种方式:云侧部署和边缘侧部署。其中,云侧部署适用于云服务器等具备强大计算能力和存储空间的环境,可以实现高吞吐量和集中的数据管理,但可能面临高成本、网络延迟和数据隐私等挑…

9.13[debug]

这个错误表明 Git 尝试通过 HTTPS 协议连接到 Gitee 上的仓库时,实际上却尝试连接到了本地的 127.0.0.1(即 localhost)的 7890 端口,这通常是因为 HTTP 代理配置错误或全局 Git 配置中的代理设置不正确 如果这些命令返回了代理设…

Linux-GPIO应用编程

本章介绍应用层如何控制 GPIO,譬如控制 GPIO 输出高电平、或输出低电平。 只要是用到GPIO的外设,都有可能用得到这些操作方法。 照理说,GPIO的操作应该是由驱动层去做的,使用寄存器操作或者GPIO子系统之类的框架。 但是&#xff0…

Altium Designer学习笔记 28 扇孔处理

基于Altium Designer 23学习版,四层板智能小车PCB 更多AD学习笔记:Altium Designer学习笔记 1-5 工程创建_元件库创建Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制Altium Designer学习笔记 11-15 原理图的封装 编译 检查 _PCB封装库的创建Al…

XiYan-SQL:⼀种多⽣成器集成的Text-to-SQL框架

发布于:2024 年 12 月 03 日 星期二 北京 #NL2SQL #阿里巴巴 #Text-to-SQL 文提出了一种用于自然语言到 SQL 转换的多生成器集成框架 ——XiYan-SQL,旨在应对大型语言模型在 NL2SQL 任务中的挑战。该框架融合提示工程与监督微调(SFT)方法,利用 SFT 的可控性与上下文学习(…

qtcanpool 知 08:Docking

文章目录 前言口味改造后语 前言 很久以前,作者用 Qt 仿照前端 UI 设计了一个 ministack(https://gitee.com/icanpool/qtcanpool/blob/release-1.x/src/libs/qcanpool/ministack.h) 控件,这个控件可以折叠。部分用户体验后&#…

嵌入式C编程:宏定义与typedef的深入对比与应用

目录 一、宏定义(Macro Definition) 1.1. 特点与应用 1.1.1 定义常量 1.1.2 定义函数式宏 1.1.3 条件编译 1.2. 作用范围和生命周期方面 1.3. 应用注意事项 二、typedef 2.1. 特点与应用 2.1.1 简化类型声明 2.1.2 提高代码可读性 2.1.3 实现…

如何高效写论文-学习笔记【AI算法研究猿James】

视频链接:如何高效写论文_哔哩哔哩_bilibili 视频里面广告内容较多,为便于复习回顾,现对学习内容进行记录。 目录 1、写论文总体认知 1.1、写论文到底有多重要? 1.2、写论文难在哪儿? 2、从审稿人角度看论文写作 2.1、审稿人在意的是…

电脑插入耳机和音响,只显示一个播放设备

1. 控制面板-硬件和声音-Realtek高清音频-扬声器-设备高级设置-播放设备里选择使用前部和后部输出设备同时播放两种不同的音频流 在声音设置中就可以看到耳机播放选项

代码随想录算法训练营day49|动态规划part11

最长公共子序列 这个与上篇笔记最大的不同就是子序列里的数可以不相邻,那么只需加入一个dp[i][j]的上和左的更新方向即可 class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size()1,vector<…

JavaEE-经典多线程样例

文章目录 单例模式设计模式初步引入为何存在单例模式饿汉式单例模式饿汉式缺陷以及是否线程安全懒汉式单例模式基础懒汉式缺陷以及是否线程安全懒汉式单例模式的改进完整代码(变量volatile) 阻塞队列生产者消费者模型生产者消费者模型的案例以及优点请求与响应案例解耦合削峰填…

qt QCryptographicHash详解

1、概述 QCryptographicHash是Qt框架中提供的一个类&#xff0c;用于实现加密散列函数&#xff0c;即哈希函数。哈希函数能够将任意长度的数据转换为固定长度的哈希值&#xff0c;也称为散列值或数据指纹。这个哈希值通常用于数据的完整性校验、密码存储等场景。QCryptographi…

【数据结构】动态规划-基础篇

针对动态规划问题&#xff0c;我总结了以下5步&#xff1a; 确定dp数组以及下标的含义&#xff1b; 递推公式&#xff1b; dp数组如何初始化&#xff1b; 遍历顺序&#xff1b; 打印dp数组&#xff08;用来debug&#xff09;&#xff1b; 以上5步适用于任何动态规划问题&#x…

字符串函数和内存函数

字符串函数 1、strlcpy 【字符串拷贝】 &#xff08;将原字符串中的字符拷贝到目标字符数组中&#xff0c;包括终止符号\0&#xff0c;并在这里停止&#xff1b;为了避免越界&#xff0c;目标字符串数组应该足够大去接收&#xff09;&#x1f446; &#xff08;返回值是 dest…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的&#xff0c;electron 29版本追加了很多新功能&#xff0c;但是这些新功能对开发者不友好&#xff0c;对electron构建出来的软件&#xff0c;使用者更安全&#xff0c;所以&#xff0c;我暂时不想研究electron 29版…

ML 系列:第 39 节 - 估计方法:最大似然估计 (MLE)

目录 一、说明 二、什么是最大似然估计 (MLE)&#xff1f; 2.1 理解公式 2.2 MLE 的定义 2.3 我们何时使用 MLE&#xff1f; 三、结论 一、说明 在统计学领域&#xff0c;我们经常需要根据观察到的数据估计统计模型的参数。为此目的广泛使用的两种关键方法是最大似然估计 ( MLE…

文本生成类(机器翻译)系统评估

在机器翻译任务中常用评价指标&#xff1a;BLEU、ROGUE、METEOR、PPL。 这些指标的缺点&#xff1a;只能反应模型输出是否类似于测试文本。 BLUE&#xff08;Bilingual Evaluation Understudy&#xff09;&#xff1a;是用于评估模型生成的句子(candidate)和实际句子(referen…

vue.js学习(day 19)

自定义创建项目 ESlint 代码规范 代码规范错误 手动修正 自动修正 settings.json {"emmet.triggerExpansionOnTab": true,"editor.fontSize": 25,// 当保存的时候&#xff0c;eslint自动帮我们修复错误"editor.codeActionsOnSave": {&qu…