查看: 247|回复: 0

[引擎的各个功能] 创建分层材质

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2017-4-8 06:47:13 | 显示全部楼层 |阅读模式

创建分层材质



       
     
     Intermediate

     Unreal Engine 4.9

       
     
         



       
创建分层材质




在这个简短教程中,我们将概述创建简单 分层材质 的过程,该材质包含两个材质层:铬合金和雪。最终的分层材质会自动将雪置于对象的顶部表面,从而在两种材质之间有效地进行切换。材质之间的混合将总是检查顶部表面,这意味着即使您旋转对象,雪也总是停留在顶部。


       
创建材质层时,通常将层创建为材质,然后将节点网络复制/粘贴到新函数中。但是,为了节省时间,我们先在函数内构建层。


简单铬合金


       
       


       
                T_ExampleLayers_Metal_1_BC.png
               
               
                T_ExampleLayers_Metal01_N.png
               
       

       
                (右键单击并选择“另存为”)
               
               
                (右键单击并选择“另存为”)
               
       




在第一个材质层中,我们将创建一个相当简单的铬合金,其表面有少许腐蚀或瑕疵。为了帮助说明一些可编辑性,我们还将创建一些输入来控制整体外观。


在 内容浏览器 中,单击 新增(Add New)按钮并选择 材质与纹理(Materials & Textures)> 材质函数(Material Function)。


创建分层材质



将新函数命名为 Layer_Chrome。


创建分层材质



双击 该函数,以在材质编辑器中将其打开。


创建分层材质



在材质图区域中 右键单击 以打开快捷菜单,搜索 Make 并选择 建立材质属性(Make Material Attributes)。


创建分层材质



将新的 建立材质属性(Make Material Attributes) 节点连接到 输出结果(Output Result)。


创建分层材质


铬合金层网络


此材质层的网络相当简单。为了加快构建速度,它已进行拆分。使用的两个纹理分别是 T_ExampleLayers_Metal_1_BC.png(用于底色及粗糙度)和 T_ExampleLayers_Metal01_N.png(用于法线贴图),这两个纹理均可从本页顶部下载。


请单击以查看标准大小的图片,或者右键单击并选择“另存为”(Save As)


       
创建分层材质
创建分层材质





此材质层已拆分为注释块,说明如下:


底色(Base Color)- 此部分的网络非常简单。我们已设置线性插值,该插值在铬合金底色与非常深的灰色之间进行混合。底色实际上是名为 Tint 的函数输入。这个输入设置为 Vector3,从而允许我们将颜色输入到函数中,并更改铬合金颜色。我们使用 T_ExampleLayers_Metal_1_BC 纹理的红色通道在这两者之间驱动插值。


金属色(Metallic)- 因为我们要创建金属,所以将“金属色”(Metallic)设置为 1。


粗糙度(Roughness)- 我们是在创建铬合金,因此粗糙度通常非常低。但是,我们要在较暗的区域稍稍加大粗糙度,以使材质整体看起来有一定的深度。实际上,除了仅仅在 0.2 与 0.4 之间插值之外,此网络与用于底色(Base Color)的网络相同。


可定制的法线(Customizable Normal)- 此网络仅仅接收切线空间法线贴图,并分隔控制着大量贴图细节的绿色和红色通道。我们将每个通道乘以从另一个函数输入提供的值。此输入设置为标量类型,名为 Normal Multiplier,其默认值为 1.0。产生的结果将通过“附加矢量”(AppendVector)节点附加到一起,然后附加到法线贴图的蓝色通道。这样,用户就能够通过更改“法线乘数”(Normal Multiplier)值来调整法线的高度。


完成后,务请保存材质层函数。

简单的雪


       
       


       
                T_Cave_Ice_Tiling_D.png
               
               
                T_Cave_Ice_Noise_N.png
               
       

       
                (右键单击并选择“另存为”)
               
               
                (右键单击并选择“另存为”)
               
       




现在,我们创建雪效果材质层:


在 内容浏览器 中,单击 新增(Add New)按钮并选择 材质与纹理(Materials & Textures)> 材质函数(Material Function)。


创建分层材质



将新函数命名为 Layer_Snow。


创建分层材质



双击 该函数,以在材质编辑器中将其打开。


创建分层材质



在材质图区域中 右键单击 以打开快捷菜单,搜索 Make 并选择 建立材质属性(Make Material Attributes)。


创建分层材质



将新的 建立材质属性(Make Material Attributes) 节点连接到 输出结果(Output Result)。


创建分层材质


雪层网络


下图是雪材质层的简单明细。这个层使用 T_Cave_Ice_Tiling_D.png 和 T_Cave_Ice_Noise_N.png,这两个纹理均可从本页顶部下载。


请单击以使用完整大小,或者右键单击并选择“另存为”(Save As)


       
创建分层材质
创建分层材质





底色(Base Color)- 这可能是此网络中唯一相对复杂的部分,这仅仅是因为使用了 FuzzyShading 材质函数。此函数的作用仅仅是避免材质在接收到光线时变得太暗。这有点像光线穿过纤维状表面。因此它是用于天鹅绒、苔藓或本例中的雪的完美选择。首先,我们处理底色(Base Color)纹理 (T_Cave_Ice_Tiling_D.png),通过对它进行 0.3 幂运算来消除一定的对比度。


接着,我们将结果插入 FuzzyShading 材质函数,该函数可从材质编辑器的“函数”(Functions)选项卡拉取。将 核心暗度(Core Darkness) 设置为 0,将 幂(Power) 设置为 1,并将 边缘亮度(EdgeBrightness) 设置为 0.5。最后,我们将整体结果乘以非常淡的蓝色 (R=0.8, G=0.9, B=0.95),产生一种冰冷的颜色投射效果。


金属色(Metallic)- 这是非金属表面,所以将“金属色”(Metallic)设置为 0。


粗糙度(Roughness)- 我们希望雪在受到光线直射时发出一点光亮,因此使用 _Cave_Ice_Tiling_D.png 纹理的红色通道来驱动 0.6 与 0.3 之间的插值。


法线(Normal)- 此设置也相当基本。我们希望降低切线空间法线贴图的效果,这可通过成倍增强蓝色通道来实现。加强蓝色会降低法线贴图高度的整体外观。


完成后,请保存结果!

分层材质


现在,我们可以使用目前为止生成的层来创建分层材质。我们将稍微增大空间以进行实例定制,使得雪总是出现在表面的顶部。


在 内容浏览器 中,单击 新增(Add New)按钮并从快捷菜单中选择“材质”(Material)。


创建分层材质



将新函数命名为 Mat_SnowyChrome。


创建分层材质



双击 该材质,以在材质编辑器中将其打开。


创建分层材质



从 内容浏览器 拖放上述步骤中创建的 Layer_Chrome 和 Layer_Snow 材质层。


       
创建分层材质
创建分层材质





在 细节(Details)面板中,启用 使用材质属性(Use Material Attributes)。


创建分层材质



在“函数”(Functions)面板中,拖入 MatLayerBlend_Simple 函数和 World_Aligned_Blend 函数。我们将使用 MatLayerBlend_Simple 来处理从铬合金到雪的过渡,并使用 World_Aligned_Blend 根据表面的方向加强层混合效果。

分层材质网络


以下是 Mat_SnowyChrome 网络的明细以及每个注释区域的说明。


请单击以查看标准大小的图片,或者右键单击并选择“另存为”(Save As)


       
创建分层材质
创建分层材质





铬合金设置(Chrome Setup)- 在此处,我们已引入铬合金材质层,并将 2 个材质参数与之相连。第一个是标量参数 Chrome Normal,用于驱动 法线乘数(Normal Multiplier) 输入。第二个是矢量参数 Chrome Tint,用于驱动 色调(Tint) 输入。这些参数可以用来改变法线贴图的强度,以及稍后进行实例化时更改铬合金颜色。


雪设置(Snow Setup)- 这是最简单的操作:我们只需要雪材质层。


全局一致混合设置(World Aligned Blend Setup)- 在这部分网络中,我们首先将 混合清晰度(Blend Sharpness) 设置为 10。然后,我们将标量参数 雪偏差(Snow Bias) 连接到 混合偏差(Blend Bias) 输入。这样,在将此材质实例化时,就可以编辑雪覆盖范围。


材质层混合(MatLayerBlend)- 仅包含用于驱动混合的节点。基本材质为铬合金。顶部材质为雪。World_Aligned_Blend 负责处理过渡。


完成后,请记得保存材质!

分层材质实例化


我们已使用参数来设置此材质,这些参数进而驱动材质层的各个方面,现在,我们可以将此材质实例化并进行编辑。此过程在 UE4 中非常简单。


如果您创建项目时已包括“起步内容”,那么您有可应用新材质的一组椅子和桌子。否则,请随意添加您自己的资产或 BSP。


创建分层材质



右键单击 Mat_SnowyChrome 材质,并选择 创建材质实例(Create Material Instance)。可以接受默认名称。


创建分层材质



将新实例从 内容浏览器 拖放到场景中的某个对象上。


创建分层材质



双击 该实例,并根据需要任意更改其属性。您可以更改铬合金的颜色、铬合金法线贴图的深度以及该实例顶部的积雪量。


       
创建分层材质








                                       
                                       
完整内容索引
                                       
                               
                       
                       
            

            
            

     2004-2017, Epic Games, Inc. 版权所有。Unreal 及相关的商标是 Epic 在美国和其他国家的注册商标。


    使用条款 | 隐私政策

            
        
               
       
   
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部