内容来源于,仅供个人学习使用
https://learn.unrealengine.com/
一、创建主材质
我们先在新关卡中,创建一个新材质,然后将其打开:
首先要做的是为材质添加一些颜色,所以要添加一个矢量参数节点
然后简单设置Name和Group,将其连接到Base color,设置RGB都为0.5。
接着我们在内容浏览器中选中一张纹理,使用T键将他添加到材质中。然后我们右击将其转换为参数
接下来要做的,是让我们有能力选择使用纹理或标准的颜色值。为此,我们要使用静态开关,它允许我们在材质实例中决定是使用纹理还是开销更低的矢量颜色参数。我们先创建一个StaticSwitchParameter,然后将其Default value设置为true。
然后我们将节点连接起来,它的作用是:默认情况下,输出“Base color”,如果我们取消默认设置,我们就会看到纹理。
接下来我们添加一个常量数值,然后将它转换为参数,然后将它设置成“Metallic”的输入值。
首先,按住键盘上的1,然后点击左键,创建节点。然后右击这个节点,选择“转换为参数”,并将其放入新的Group--“金属”中,然后连接到对应节点:
就“金属”而言,其默认值在0-1之间,要么是要么不是。所以我们将Slider Min为0,Max为1。
接下来我们要做的是设置“粗糙度”。但是我们要设置的粗糙度,必须允许我们通过线性插值函数上调或降低粗糙度数值,从而控制粗糙度效果。
首先,我们到内容浏览器中将对应的材质,拖到材质图标上。还有一件需要注意的事情是,我们设置粗糙度时,要能被压缩到纹理的红绿蓝通道中的粗糙度贴图。
首先,我们要确保“细节”面板中,将纹理取样的采样类型设置为“Mask”
然后我们要获取遮罩参数,这一步的作用是允许我们在材质实例中,筛选纹理的红绿蓝通道。
然后我们将纹理取样节点,将其转换纹理取样,然后转换为参数,将其命名为Roughness_Texture
接下来,按住键盘上的L键,点击创建一个线性插值节点,将遮罩参数的输入引脚与线性插值节点的阿尔法通道相连。ranh按下键盘上的1键,创建两个标量参数,然后将其都转换为参数。分别设置两个节点:
这是为了确保美术师不会在材质实例中误设数值。然后我们将这两个节点连接到线性插值的A和B上。将线性插值的输出,连接到材质节点的粗糙度输入上。
接下来我们要做的是继续添加法线贴图。我们同样创建包含法线贴图的纹理取样节点,然后将其连到Normal引脚上,然后我们将其转换为参数。最后我们选择应用并保存。
二、
接下来我们演示如何修改刚刚创建的材质,然后获得一个完全不同的主材质:
首先我们将刚创建好的结果,复制一个新的。我们准备将其转换为玻璃材质。
接着,我们进入细节面板,找到Blend Mode,可将其改为Translucent
然后我们同样的创建标量,转为参数,将这个参数命名为Opacity,Default为0.5,Slider Max为1.0,然后将这个不透明度参数连接到“Opacity”输入上。
我们选中“Base color”,然后将它直连到“底色”输入,删除原来的纹理。
然后我们要改变着色模型,让玻璃与光照产生更好的互动,将LightMode改为Surface Forward Shading。
关于法线贴图,我们直接更换一个有一些细节的贴图。
三、材质函数
接下来便是创建材质函数,材质函数是一种在材质之间共享着色器代码的方法。材质函数的作用是,允许你共享特定的材质代码片段。而且只需要更改一个材质函数,并应用。然后任何使用该材质函数的材质,都会更新调整。
接下来就是创建材质函数:
关于它的设置,我们想要的是简单实现一些纹理平铺效果,然后再刚刚我们创建的两个主材质中,共享这个效果。
我们要做的就是添加材质坐标,将它与输入参数相乘,然后输出结果。我们还需要设置“Material Expression Function input” 等。
首先,我们添加一个“纹理坐标”节点,然后添加一个“函数输入”节点,将其输入形式改为“Input Scalar”,因为要将材质坐标和一个我们能够上下调整的数值相乘,以便缩放纹理UV的大小。
我们按下M键,创建相乘节点。然后将“纹理坐标”连接到A引脚,“输入纹理缩放标量”到B引脚,最后链接到输出。然后还要添加Preview value。
回到之前的Glass中,我们将材质函数拖入到材质图表上。然后我们创建一个标量,转换成参数,设置为以下结果:
然后将输出连至材质函数,然后将材质函数的输出连到粗糙度和发现纹理的UV贴图输入上:
三、材质实例
Parent Child Relationship :
有些类似于继承关系,假设我们有一个父类,这个父类可以使用3个颜色,则父类的任何子类都能使用这三个颜色。就父类而言,子类可以访问所有父类可以访问的内容。
使用材质实例:
在UE中有很多方法进行材质实例的创建,最简单的就是:
另一种是:
如何使用(省略)
Vertex Animations:
顶点动画用于廉价地传达复杂项目的微妙运动,如水、树叶、布料或任何需要看起来移动的东西。Vertex Animation 开销很低 ,因为它完全发生在 GPU 而不是 CPU 上,所以它开销更低 。下面是个例子:
通常,要获得 Vertex Animation 提供的动画类型,你需要使用大量骨骼或运行完整的物理模拟。
由于顶点动画是在 GPU 上完成的,因此碰撞之类的事情将不起作用。
你应该将其更多地视为视觉效果的增强,而不是用作可以与场景交互的东西。
顶点动画的设置:
首先,我们创建一个材质,然后进入细节面板将Blend Mode改为Masked,因为我们要使用Mask Texture。将纹理拖进面板后,连接引脚。同样我们拖入法线贴图。
接着,我们加入SimpleGrassWind,将它连接至“World Position Offset”。然后我们增加一些常量作为它的输入。