ue4-材质编辑器material
ue4-材质编辑器material. 类似于 unity 的 shaderlab, unity 中是以 文本 的方式写 shader, 而 ue4 是以 可视化 方式写shader, 两者写完都要进行编译后才能看到效果. 同时 ue4 还支持编写 hlsl. 可以参照下面的 [unity 与 ue4 的 material, shader 对比](#unity 与 ue4 的 material, shader 对比)
官方文档: https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/index.html
前篇
- Material Functions - https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/Functions
- Material Expression - https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/ExpressionReference
替换预览模型
选中模型mesh资源 (可以是 场景内 或 Content中 的) , 再点击材质编辑器预览中的 茶壶
也可以 选中 模型 资源, 点击这里替换预览模型
快速创建贴图节点
快速创建贴图节点: 选中 贴图 资源, 然后在材质编辑器中, 按住 T 键再点击 鼠标左键
给贴图节点替换贴图:
最简单粗暴的还是直接把 贴图 拖进去
设置节点实时动画
高亮 Live Nodes 即可实时显示 Texture Sample 中的uv流动动画
节点说明
光标移到节点上, 按住 ctrl + alt
Physics Material
- Physics Material in Unreal Engine 4 - https://www.youtube.com/watch?v=YEyqewn409E
可以摩擦力等物理系数, 来达到真实的效果
material 和 material instance 区别
参考:
- Instanced Materials - https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/MaterialInstances
- A Material Instance in Unreal Engine 4 - https://www.youtube.com/watch?v=qus9WjHX4_4
简单的说
- material 是可编辑逻辑的且需要编译的,
- material instance 是在 material 的基础上实例化出来的, 是不可编辑逻辑的且不需要编译的, 只能编辑 material 暴露出来的参数
unity 与 ue4 的 material, shader 对比
unity 中写的 shader (xxx.shader) 等价于 ue4 中 material, 都是需要 写逻辑 和 编译 .
unity 中的 material (xxx.mat) 等价于 ue4 中的 material instance, 都不需要 写逻辑 和 编译, 只将 unity xxx.shader中 和 ue4 material 的需要控制的参数暴露出来 (也就是 gl 中 uniform 变量) 形成一个 材质, 交给程序控制或编辑中调整.
创建 material instance
是以 material 为基础创建的. 右键 material -> create material instance
material 暴露参数
需要暴露的参数类型都在 parameters 分组下, 参数显示在 parameter defaults 面板中, 右键增加了参数后需要 apply 之后才能生效
apply 之后在 material instance 中才可以看到暴露才来的参数, 需要勾上对应的参数才能生效
多维材质
需要在 max 等建模软件中指定多个材质id, 就可以在 ue4 中赋予多个材质球
Animating UV Coordinates
后处理 post processing
ue4 中已经内置很多后处理效果, 只需要调下参数就可以轻松看到一些后处理效果 (bloom, dof, motion blur 等), 而在 unity 中需要自己去实现或者通过一些插件 (PostProcessing) 实现
开启 后处理
edit -> project settings -> rendering 下的 postprocessing 和 default settings
然后在 摄像机组件 cameraComponent 中可以开启效果
屏幕空间反射
新建一个材质球, metal 值为 1, roughness 值为 0 即可看到放射效果
还可以在 摄像机组件 的 postprocess 中设置反射强度
内置节点说明
相关参考
常用节点1
TexCoord : 平铺贴图
constant 一维向量 R 快捷键1
constant2Vector 二维向量 RG 快捷键2
constant3Vector 三维向量 RGB 快捷键3
constant4Vector 四维向量 比三维多alpha 快捷键4
Add 加法,将两个通道上的数值或者纹理增加到一起 快捷键a
sub 减法 去掉共有的纹理
multiply 混合、乘法 取纹理重叠 快捷键m
divide 除法 快捷键d
abs 绝对值
appendVector 增加通道
TextureSample 纹理贴图
Panner 坐标平移 正负来代表纹理在该轴平移的方向,数值代表速度 快捷键 P
Rotator 旋转 以选定的X和Y的坐标交汇点进行一定速度的旋转 一般坐标设定为0.5
TextureCoordinate 纹理坐标 纹理数量等于UV值相乘 U为横向 V为竖向 快捷键U
Desaturation 去色 去除颜色,当赋予Fraction为0时,无作用,数值越靠近1,去色越明显
DepthFade 深度衰减 减少物体之间混合时生硬的效果 接线不透明度,默认Fadedistance为100,值越小接触点的透明度越低,根据需求定值
Time 时间 时间推进,一般连接正弦/余弦
Sine 正弦 在-1到0之间浮动的抛物线(曲线) 和time配合使用,比如可以用在物体自发光闪烁上(在-1到1之间反复运动)
Cosine 余弦 同上
Mask 分化蒙版,用来屏蔽、分离通道,分化多维向量的值等
if 做参数判断
Fresnel 菲涅尔效果 一般用在测光上
LinearInterpolate 线性插值 用来融合两个通道,当alpha值等于0时,融合值为A通道,为1时为B通道,因此0.5以下则为靠近A通道颜色,0.5以上靠近B通道,0.5为对等分融合
oneminus 反向,即反向颜色,如黑变为白,白变成黑 可以用来调整贴图蒙版
clamp 限制值,防止数值溢出
power 幂 让颜色或者光暗更加厚实,值过大就会出现色块
Particle color 用来调整粒子颜色
Particle SubUV 和textureSample用法一样,一般用在粒子上
Frac : res = x - floor(x), 例如: Frac(0.2) = (0.2). Frac(-0.2) = (0.8). Frac(0.0,1.6,1.0) = (0.0,0.6,0.0).
常用节点2
Panner
对UV坐标进行平移,用于UV动画的实现。
Rotater
对UV坐标进行旋转,同样用于UV动画的实现。
BlackBody
这个节点可以对贴图应用一个黑体辐射效果,实际效果就像是过了一遍热成像扫描。
BumpOffset
这个节点用于实现视差贴图,使得贴图更具有真实感。
ConstantBiasScale
这个节点将输入值加上一个值之后再乘上一个值。例如将正弦函数的结果由[-1
1]压制到[01]就可以使用1,0.5的参数来操作。Fresnel
这个节点将摄像机向量与网格法线向量进行点乘并应用到0~1的范围中。
当摄像机方向与网格的法线垂直时返回1,当方向一致时则返回0。Fresnel的计算在设置了法线贴图时则会使用法线贴图进行运算。这个节点可以用于区分边缘,例如玻璃材质就会使用到。
详细的用法可参照官方教程:Material – How To Use Fresnel in your Materials。
DepthFade
这个节点的作用是使得两个透明物体在叠加时显得更加自然。
DepthOfFieldFunction
这个节点的作用如其名称,提供景深的运算结果。0~1的范围代表从聚焦到模糊。
Desaturation
这个节点的作用是去色,会生成一个单调柔和的灰度图。
Distance
这个节点的作用是计算两个输入值的距离。输入值可以是两个点、颜色、位置或者向量。
FeatureLevelSwitch
这个节点允许对不同的设备使用不同的材质以保证材质在低运算率的设备上能够有平滑的切换。
QualitySwitch
这个节点可以让材质在不同的视频设置下使用不同的数值。
GIReplace
这个节点为材质提供在全域照明下产生不同间接光效果的方法。
LightmassReplace
这个节点可以使得材质在被到处为光照用时使用一个不同的值。
LinearInterpolate
就是Lerp,线性插值,基本上复杂的材质都会用到。
Noise
这个节点的作用是生成噪波图。
RotateAboutAxis
对给定的向量进行旋转,通常用于获得选择WorldPosition之后传递给WorldPositionOffset。
SphereMask
这个节点在指定的位置生成一个球形并进行距离计算,圆心处为1,外围为0。
AntialiasedTextureMask
对输入进行抗锯齿运算。
ComponentMask
分离通道, 比如 float2 分离出两个 float
常用快捷键
加入 float、Vector等变量
按住 1(2、3、4)键,and 双击 LMB,就对应生成
干掉连线,按住 Alt,单击 LMB
复制节点
选中要复制的几点, ctrl + w