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


前篇


替换预览模型

选中模型mesh资源 (可以是 场景内 或 Content中 的) , 再点击材质编辑器预览中的 茶壶

也可以 选中 模型 资源, 点击这里替换预览模型


快速创建贴图节点

快速创建贴图节点: 选中 贴图 资源, 然后在材质编辑器中, 按住 T 键再点击 鼠标左键

给贴图节点替换贴图:

最简单粗暴的还是直接把 贴图 拖进去


设置节点实时动画

高亮 Live Nodes 即可实时显示 Texture Sample 中的uv流动动画


节点说明

光标移到节点上, 按住 ctrl + alt


Physics Material

可以摩擦力等物理系数, 来达到真实的效果


material 和 material instance 区别

参考:

简单的说

  • 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 下的 postprocessingdefault 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

    这个节点将输入值加上一个值之后再乘上一个值。例如将正弦函数的结果由[-11]压制到[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