虚幻引擎【UE5】材质宝典【初学者材质基础入门系列】

【才开始学,笔记每天早上整理更新,不知道为啥这破网页晚上图放不上来】
材质介创建
面板右键创建材质

创建材质后命名,或者f2进行重新命名

材质添加
1.拖动材质球到物体
2.搜索材质并添加

材质编辑器
双击材质球打开材质编辑器

在预览窗口可以调整预览物体的形状

将网格物体放到材质浏览视口里的方法

在显示中可以关掉背景

节点可以在细节面板里调整参数

内容浏览器停靠在布局中

所有节点

打开实时更新,视口中所有操作都会同步

清理没有链接的节点

材质表达式节点
快捷键
按住ALT点击节点可取消连接
常量Constant(1+鼠标左键)
二维常量Constant 2Vector(2+鼠标左键)
Constant 3Vector(3+鼠标左键)
Constant 4Vecor(4+鼠标左键)
Add(A+鼠标左键)
凹凸贴图偏移BumpOffset(B+鼠标左键)
Divide(D+鼠标左键)
Power(E+鼠标左键)
材质函数调用MaterialFunctionCall(F+鼠标左键)
If(I+鼠标左键)
线性插值Lerp(L+鼠标左键)
乘Multiply(M+鼠标左键)
标准化Normalize(N+鼠标左键)
参数反向OneMinus(O+鼠标左键):用1减去参数
相位Panner(P+鼠标左键)
关联向量RelectionVector(R+鼠标左键)
标量参数ScalarParameter(S+鼠标左键)
纹理采样TextureSample(T+鼠标左键)
纹理坐标TextureCoordinate(U+鼠标左键)
向量参数VectorParameter(V+鼠标左键)
分离通道ComponentMask(Shift+C)
刷新节点预览(Space)
材质结果节点介绍
基础色
创建三维常量




如果有贴图可以直接拉进来连接

金属度
参数值0-1,数值越小金属度越不明显


粗糙度
参数值0-1,数值越大粗糙度越明显


高光度
参数值0-1,数值越大高光越明显


各向异性
参数值0-1,数值越大各向异性越明显
可以拉长高光


通过添加三维向量到切线来控制各向异性的方向

自发光颜色
参数值不限,数值越大发光越明显
自发光材质可以照明场景


不透明度
需要在细节面板中将混合模式改为半透明
参数值0-1,数值越小越透明

不透明蒙版
需要导入透明背景图
混合模式改为已遮罩

Normal法线
添加法线贴图,可直接拖入或者搜索


切线
让材质球在空间上产生位移
调整RGB来控制位置

Subsurface color次表面颜色
着色模型改为次表面
给基础色和次表面两个不同的颜色

不透明度为0时,透光效果非常好

Custom Data 0&Custom Data 1自定义输入端
在着色模型中选择要更改的材质类型

像素深度偏移
可以让网格物体在接触地面的位置进行像素偏移效果


材质分类

表面(Surface)
该设置将材质定义为将用于对象表面的东西;可以是金属、塑料、皮肤或任何物理表面。因此这是你大部分时间里都会用到的设置。

延迟贴花(Deferred Decal)
投射材质,制作贴花材质时,你将使用此设置。

光照函数(Light Function)
灯光闪烁,创建结合光照函数使用的材质时应使用此设置。

体积(Volume)
将材质的属性描述为3D体积时使用。
控制指数级高度雾和体积云

后期处理(Post Process)
如果材质将用作后期处理材质,则使用此设置。
需要配合后期处理体积一起用

材质运算
基础材质连接

自发光

StaticSwitchParameter
StaticSwitchParameter(静态开关参数)表达式接收两个输入,并且在参数值为 true 时输出第一个输入的值,否则输出第二个输入的值。
此参数称为"静态"是因为它不可在运行时更改,而只能在材质实例编辑器中设置。静态开关是在编译时(而非运行时)进行应用。这意味着删除的材质分支决不会执行,因此静态开关在运行时实际上是自由的。另一方面,对于材质中 使用的 每一种静态参数组合(滥用静态参数组合可能会导致着色器激增),都必须通过编译来产生材质的新版本。请尽量减少材质中的静态参数数目以及实际使用的静态参数排列数。

用法示例:静态开关可用于除去材质的整个分支,而不会产生运行时成本。各个实例可具有不同的值,这使您能够建立模板化的着色器设置,而不会影响性能。


转换为参数
将数据转换为实力材质中可以修改的参数

创建实列材质
必须在母材质上右键创建

排序优先级
同组节点排序方式从0开始逐渐递增排序


分组
选择分组放入,可以在实列材质中看到

数据运算概览
官方表达式索引
https://docs.unrealengine.com/5.1/zh-CN/unreal-engine-material-expressions-reference/


数据维度
三原色+alpha组成4个通道



空间坐标也用rgb标识

uv坐标用红绿标识



运算

一维数据和高维数据进行运算时会直接升维


Abs与三维坐标转换


移动节点组到另一个节点上

变换效果一致

用mask拆分UV坐标


纹理遮罩(mask) 是灰阶纹理,或纹理的单个通道(R、G、B或A),用于限制 材质 内的效果区域。
遮罩通常包含在另一个纹理的单个通道中,例如漫反射或法线贴图的 Alpha通道。 在其他情况下,单个图像文件通常包含"粗糙度(Roughness)"、"金属感(Metallic)"和"环境光遮蔽(Ambient Occlusion)"遮罩,每个遮罩占用一个通道。
这称为"通道打包",是通过减少材质所需的纹理样本数来提高材质性能的好方法。 从技术上讲,任何纹理的任何通道都可以被认为是纹理遮罩并用作纹理遮罩。
下面是初学者内容包中 SM_Chair 静态网格体的纹理遮罩的示例。

实际上,此图像文件在四个颜色通道(RGBA)的每一个通道中包含不同的黑白遮罩。

Add

Add 表达式接受两个输入,将它们相加并输出结果。
如果使用多个通道传递值,每个通道将分别添加。例如,如果将RGB颜色值传递给每个输入,则将第一个输入的R通道添加到第二个输入的R通道中,结果存储在输出的R通道中;将第一个输入的G通道添加到第二个输入的G通道中,结果存储在输出的G通道中,以此类推。
两个输入必须有相同数量的值,但其中一个值是单个常量值时例外。在这种情况下,将多通道输入的每个通道添加到单个浮点值,并将结果存储在输出值的单独通道中。

示例:0.2与0.4相加得0.6;(0.2,-0.4,0.6)与(0.1,0.5,1.0)相加得(0.3,0.1,1.6);(0.2,-0.4,0.6)与1.0相加得(1.2,0.6,1.6)
使用示例:Add常用于使颜色变亮/变暗或偏移UV纹理坐标。

AppendVector(App 组合通道)
AppendVector 表达式允许你组合通道,创建一个比原始通道更多的向量。例如,你可以获取两个单独的 常量 值,并将它们添加到一个双通道的 Constant2向量 值中。这种操作适合用于重新排列单个纹理中的通道,或将多个灰度纹理合并为一个RGB颜色纹理。

示例: 附加0.2 和 0.4 就是 (0.2,0.4);附加 (0.2,0.4) 和 (1.0) 就是 (0.2,0.4,1.0)。

控制物体偏移
做成实列材质后可控制物体偏移



加减乘除
相加
红色通道与红色通道相加
绿色通道与绿色通道相加
蓝色通道与蓝色通道相加



相乘



减法


除法
0除以任何数都是0


渐变
TextureCoordinateTextureCoordinate(纹理坐标)表达式以双通道向量值形式输出 UV 纹理坐标,从而允许材质使用不同的 UV 通道、指定平铺以及以其他方式对网格的 UV 执行操作。

用法示例: 如需访问网格体的第二个 UV 通道,请创建一个 TextureCoordinate(纹理坐标)节点,将其"坐标索引"(CoordinateIndex)设置为 1(0 表示第一个通道,1 表示第二个通道,等等),并将其连接到 TextureSample(纹理取样)节点的 UV 输入。


线性插值(混合节点)
L+鼠标左键
LinearInterpolate 表达式会以第三个输入值为遮罩参数,然后在两个输入值之间进行插值。可以想象成两张纹理根据一张遮罩进行过渡,类似Photoshop中的图层遮罩。遮罩Alpha的强度决定了两个输入值贡献的权重。如果Alpha是0.0,就使用第一个输入值。如果Alpha是1.0,就使用第二个输入值。如果Alpha在0.0和1.0之间,输出是两个输入之间的插值。注意,混合是按通道进行的。 所以,如果Alpha是一个RGB颜色,则Alpha的红色通道会定义A和B的红色通道之间的插值,它 独立 于Alpha的绿色通道,后者定义了A和B的绿色通道之间的插值。



alpha值只能在0-1之间
添加clamp节点,控制节点的最大值和最小值

Clamp 表达式接受一个或多个值,并将它们约束到由最小值和最大值定义的指定范围内。如果最小值为0.0,最大值为0.5,则意味着结果值永远不会小于0.0,且永远不会大于0.5。

示例:在最小值为0.0且最大值为1.0的情况下对0.3((0.0)到(1.0))的输入范围进行限制将得到结果0.3;在最小值为0.0且最大值为1.0的情况下对1.3进行限制将得到结果1.0。

或是satuiate节点,但不能修改数值,只能0-1

如果用图本身的alpha通道连alpha可以透出下面的底

数据维度控制
维度分解
用mask来拆分需要的通道

维度升级
AppendVector

AppendVector 表达式允许你组合通道,创建一个比原始通道更多的向量。例如,你可以获取两个单独的 常量 值,并将它们添加到一个双通道的 Constant2向量 值中。这种操作适合用于重新排列单个纹理中的通道,或将多个灰度纹理合并为一个RGB颜色纹理。

示例: 附加0.2 和 0.4 就是 (0.2,0.4);附加 (0.2,0.4) 和 (1.0) 就是 (0.2,0.4,1.0)。

MaterialFunctionCall
连接一维数据并生成2、3、4维数据
表达式允许您使用来自其他材料或功能的外部MaterialFunction,外部函数的输入和输出节点成为函数调用节点的输入和输出。如果一个MaterialFunction在放置这些表达式时被选择在内容浏览器中,它将自动被分配。
