虚幻引擎---材质篇

一、基础知识

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

五、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/928958.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python从入门到入狱

Python是从入门到入狱?这个充满调侃意味的说法在程序员圈子里流传甚广。表面看,它似乎是在嘲笑这门语言从简单易学到深陷麻烦的巨大反差,实际上却隐藏着很多值得深思的问题。要解读这个话题,得从Python的特点、使用场景以及潜在风…

使用PaddlePaddle实现线性回归模型

目录 ​编辑 引言 PaddlePaddle简介 线性回归模型的构建 1. 准备数据 2. 定义模型 3. 准备数据加载器 4. 定义损失函数和优化器 5. 训练模型 6. 评估模型 7. 预测 结论 引言 线性回归是统计学和机器学习中一个经典的算法,用于预测一个因变量&#xff0…

华为NPU服务器昇腾Ascend 910B2部署通义千问Qwen2.5——基于mindie镜像一路试错版(三)

文章目录 前言纯模型推理启动服务后面干什么?这可咋整啊?愁死了!总结前言 这是咱这个系列的第三个文章了。 毕竟,这是我好几天摸索出的经验,能帮助各位在几个小时内领会,我觉得也算是我的功劳一件了。 所以,一是希望大家耐心看下去,耐心操作下去;而是恳请各位多多关…

BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示

说在前面 最近使用自己的数据集对bert-base-uncased进行了二次预训练,只使用了MLM任务,发现在加载训练好的模型进行输出CLS表示用于下游任务时,同一个句子的输出CLS表示都不一样,并且控制台输出以下警告信息。说是没有这些权重。…

【Linux操作系统】多线程控制(创建,等待,终止、分离)

目录 一、线程与轻量级进程的关系二、进程创建1.线程创建线程创建函数(pthread)查看和理解线程id主线程与其他线程之间的关系 三、线程等待(回收)四、线程退出线程退出情况线程退出方法 五、线程分离线程的优点线程的缺点 一、线程…

Android ConstraintLayout 约束布局的使用手册

目录 前言 一、ConstraintLayout基本介绍 二、ConstraintLayout使用步骤 1、引入库 2、基本使用,实现按钮居中。相对于父布局的约束。 3、A Button 居中展示,B Button展示在A Button正下方(距离A 46dp)。相对于兄弟控件的约束…

【论文复现】隐式神经网络实现低光照图像增强

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 隐式神经网络实现低光照图像增强 引言那么目前低光照图像增强还面临哪些挑战呢? 挑战1. 不可预测的亮度降低和噪声挑战2.度量友好…

【机器学习】机器学习的基本分类-监督学习-决策树-C4.5 算法

C4.5 是由 Ross Quinlan 提出的决策树算法,是对 ID3 算法的改进版本。它在 ID3 的基础上,解决了以下问题: 处理连续型数据:支持连续型特征,能够通过划分点将连续特征离散化。处理缺失值:能够在特征值缺失的…

Spring和SpringBoot的关系和区别?

大家好,我是锋哥。今天分享关于【Spring和SpringBoot的关系和区别?】面试题。希望对大家有帮助; Spring和SpringBoot的关系和区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring和Spring Boot是两种相关但有所…

Scrapy 中的配置笔记

概述 scrapy在命令启动之前,先设置好了各种配置文件。其中包括系统自带的默认配置文件,还有用户自定义的settings.py。其中还有一个日常开发中不怎么用的scrapy.cfg文件,这个文件是用来告诉scrapy用户自定义的settings.py文件在哪里的 关键…

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

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

Python知识分享第十九天-网络编程

网络编程 概述用来实现 网络互联 不同计算机上运行的程序间可以进行数据交互也叫Socket编程 套接字编程 三要素IP地址概述设备在网络中的唯一标识分类IPV4城域网13广域网22局域网31IPV6八字节 十六进制相关dos命令查看ipwindows: ipconfigmac和linux: ifconfig测试网络ping 域…

CAN接口设计

CAN总线的拓扑结构 CAN总线的拓扑结构有点像485总线,都是差分的传输方式,总线上都可以支持多个设备,端接匹配电阻都是120Ω。 485和CAN通信方面最大的区别:网络特性。485是一主多从的通讯方式,CAN是多主通讯,多个设备都可以做主机。那多个设备都相要控制总线呢?…

Latex转word(docx)或者说PDF转word 一个相对靠谱的方式

0. 前言 投文章过程中总会有各种各样的要求&#xff0c;其中提供word格式的手稿往往是令我头疼的一件事。尤其在多公式的文章中&#xff0c;其中公式转换是一个头疼的地方&#xff0c;还有很多图表&#xff0c;格式等等&#xff0c;想想就让人头疼欲裂。实践中摸索出一条相对靠…

数据结构——单调队列

这篇博客我们来讨论一下单调队列的问题&#xff0c;其实和之前学的单调栈都是一种上通过改变操作来解决问题的一种数据结构 我们先来回忆一下单调栈的内容&#xff0c;这样方便将其和单调队列做区分 单调栈&#xff1a;(单调性从栈底到栈顶&#xff09; 1.单调栈是一种栈数据…

解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享20241204

&#x1f6e0;️ 解决 Maven 部署中的 Artifact 覆盖问题&#xff1a;实战经验分享 &#x1f4cc; 引言 在软件开发过程中&#xff0c;持续集成和持续部署&#xff08;CI/CD&#xff09;是提高开发效率和代码质量的关键手段。Hudson 和 Maven 是两种广泛使用的工具&#xff0…

[go-redis]客户端的创建与配置说明

创建redis client 使用go-redis库进行创建redis客户端比较简单&#xff0c;只需要调用redis.NewClient接口创建一个客户端 redis.NewClient(&redis.Options{Addr: "127.0.0.1:6379",Password: "",DB: 0, })NewClient接口只接收一个参数red…

Solving the Makefile Missing Separator Stop Error in VSCode

1. 打开 Makefile 并转换缩进 步骤 1: 在 VSCode 中打开 Makefile 打开 VSCode。使用文件浏览器或 Ctrl O&#xff08;在 Mac 上是 Cmd O&#xff09;打开你的 Makefile。 步骤 2: 打开命令面板 按 Ctrl Shift P&#xff08;在 Mac 上是 Cmd Shift P&#xff09;&…

交换机四大镜像(端口镜像、流镜像、VLAN镜像、MAC镜像)应用场景、配置实例及区别对比

在网络管理中&#xff0c;端口镜像、流镜像、VLAN镜像和MAC镜像都是用于监控和分析网络流量的重要技术。 端口镜像&#xff08;Port Mirroring&#xff09; 定义&#xff1a;端口镜像是将一个或多个源端口的流量复制到一个目标端口&#xff0c;以便于网络管理员能够监控和分析…

Unity数据持久化

二进制数据持久化的好处&#xff1a;安全、效率高、利于网络通信 文章目录 补充文件夹相关EditorResourcesSteammingAsset 序列化和反序列化序列化反序列化 二进制数据持久化转换为字节数据文件操作写入字节&#xff1a;读取字节安全关闭文件夹操作操作文件夹目录信息和文件信息…