UE5学习笔记(二)——3D材质蓝图的常用节点介绍

什么是材质:材质是模型表面涂抹的油漆,多层油漆形成了物理基础渲染(PBR Physically Based Rendering),它可以模拟自然界的任何材料的视觉效果。

双击一个材质,可以打开材质蓝图(Material Graph)
基础的四个属性为:

在使用材质蓝图时,以下几个快捷操作可以方便你使用:
按住右键移动整个蓝图
滚轮可以放大缩小蓝图视图
拖动左键框选可以选中多个节点
右键空白后,输入关键词,快速加入节点
法线纹理可以直接拖入蓝图中,生成节点
按住alt点击已连接的接口,可以断开接口
以下几个快捷键可以快速插入常用节点:
按住数字1,2,3左键点击空白区域,可以快速插入常数值、二位数值、三维数值
空白处按住U点击左键,添加纹理坐标(Texture Coordinate)节点,用于调整贴图的UV信息,放大缩小或是移动贴图
空白处按住M点击左键,添加正片叠底(Multiply)节点,用于对图片进行快速处理,规则类似PS里的正片叠底
空白处按住L点击左键,添加插值(Lerp)节点,通过一张蒙版图混合两个图片/颜色
以下会有详细说明。

先介绍一下UE5新手包中的贴图类型及用法:
漫反射贴图:为材质提供基本颜色。上下左右连贯,颜色丰富。
粗糙度贴图:基本为灰度图,提供材质上的细节质感。
法线贴图:由RGB构成,用色值代表向量值,去模拟光影,最终可以在平面上模拟出凹凸感。
每一种贴图的生成方式暂未明确,后续补充。

接下来说一下上文提到的几个常用节点的详细用法:

纹理坐标(Texture Coordinate)

任何贴图都是由UV值的,简单说来就是XY轴,U相当于X,代表横向坐标;V相当于Y,代表纵向坐标。
打个简单的比喻,如果模型是一头羊,贴图就是羊皮,纹理坐标就是控制这个羊皮在特定的位置。
当我改变了纹理坐标,有可能会把羊的脸移动到羊的背上,或者在屁股上出现两只羊角。
当想改变贴图位置,大小时,就可以使用这个节点。是一个非常常用的节点。
右键后搜索Texture Coordinate可以找到,或者快捷键U+鼠标左键。
用法就是把这个连在贴图的UVs上,并改变里面的U值和V值。
当有多个贴图想要同时变化时,就可以全部连上1个,改一个节点就可以引起多个变化,不会出现不同步。

正片叠底(Multiply)

用过PS的朋友都知道正片叠底,大致原理就是会取两张图片同一位置色值大的那个。
例如一个白色的羽毛球加一个红色图片,就会变成一个红色的羽毛球,但是对黑色无效。
右键后搜索Multiply,或者快捷键首字母M+鼠标左键,可建立该节点。
该节点支持2个资源混合,就不用在ps里费劲的调色了。
这张图可以很明显看出效果:
这个节点的另一种用法是改变值,如图所示,它可以通过传入一个值,改变整张贴图的深浅,值的范围是0-1。

插值(Lerp)

这个节点的打开方式稍微有点复杂,需要右键后搜索LinearInterpolate,搜lerp是没法直接定位到的,但是可以 快捷键首字母L+鼠标左键。
这个节点是通过蒙版Alpha的强度,去确定两个输入值获取颜色的比例,蒙版黑色区域显示为A值,白色的区域显示为B值。
因为本地没有明显的黑白通道图,我找到一张很棒的示意图,一眼就能看懂。截图资源来自网络视频,如有侵权请联系我。

调节法线强度(FlattenNormal)

这是一个比较冷门的节点,据说在官方文档上查不到,但是如果使用到了法线贴图,这个节点就用来调整凹凸程度。
值的范围在0-1,如果大于1的话,原本凹下去的位置会凸出来。
用法如下图

切换参数(Switch Param)

右键搜索StaticSwitchParameter,添加这个节点,因为是个参数,所以一定要为该节点起名。
这个节点里面一共true和false两个值,就好像一个火车轨道,如果搭了true,就走上面,如果搭了false,就走下面。
用法是这样的:
如上图所示,我新建了一个Has Cover的开关,并且为它接了两条路。
但其实我的起点都是Base texture,只不过如果为True,我的小火车就要绕道从上面的红油漆里走一下,就是这个原理。
这个节点最大的用途是在建立父素材的时候,可以在初期就想好一些可以快速调整的设置,当建立子素材之后,通过打勾就可以很快的改动里面的效果,比如这个红油漆的效果,我就可以直接关掉。
目前想到的应用场景就是用开关控制身上溅了血,过一会血消失了,就把开关关了。还没用都开始想上了,不愧是我。

父素材机制

UE5提供了一个很强大的父素材机制,这在ps里面叫智能对象,在axure里面叫母版,在unity里面叫perfab,在c#里面叫父类继承(略微有点不一样,但是目标是一致的)
这个功能的目的,是为开发者在开发过程中提供便捷。
在制作多个内容时,如果有很大一部分内容是重复,就可以将重复的部分封起来,只将需要修改的部分露出来,提供给后续制作相同内容时使用,让开发过程逻辑更加清晰,更加方便。
不过这种开发方式,对开发者也产生了新的要求,只完成逻辑是不够的,还需要有大局观,在开发父素材的时候就要考虑到后续的扩展性,并开放必要的参数出来调整。
当一个节点内容需要被开放出来时,可以点击节点,选择Convert to Parameter,并起名。
在父素材上右键,选择Create Material Instance,双击新建的子素材,就不需要再去做一次蓝图,而是在面板的Parameter Groups中看到被开放出来的各种参数,直接进行调节。

猜你喜欢

转载自blog.csdn.net/weixin_35106335/article/details/126981486