UE4-材质法线强度调整法线贴图混合自定义材质函数材质边缘过渡植被动态效果
Posted 懒猫睡大觉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4-材质法线强度调整法线贴图混合自定义材质函数材质边缘过渡植被动态效果相关的知识,希望对你有一定的参考价值。
一、法线强度
想控制一张法线贴图的呈现强度,不能直接对整个贴图的UV进行运算,需要对法线贴图的RG通道进行运算,并将每个通道的计算结果通过追加节点Append组成新的数值,改变强度参数,从而改变物体表现的强度。
1.各通道使用乘法与强度参数NormalIntensify相乘
2.使用追加节点,组合新的向量。并将值与Normal链接。
二、法线贴图融合 BlendAngleCorrectedNormals
1.使用 BlendAngleCorrectedNormals 节点,完成两张法线贴图的叠加。
2.蓝图连线
3.如果想要控制第二张贴图的法线强度,按照一图中的方法复制强度控制及追加逻辑,要注意的是强度参数命名避免使用同一名称,如果使用相同的命名,系统会自动将两个参数识别成一个。
三、使用普通贴图制作法线 NormalFromHeightMap
1.使用 NormalFromHeightMap节点
2.注意:需要将贴图转换为纹理对象
四、材质函数的编辑
以NormalFromHeightMap节点为例,对材质的重复率进行控制。
注意:一定要在新建的材质函数中操作,不要再源蓝图函数中操作。
1.创建材质函数,在材质与纹理的分类中找到,打开创建的材质函数,双击 NormalFromHeightMap节点,进入到函数中,将逻辑复制到新蓝图中,并将输出值连接好。
2.在原节点中的 InputHeightMapUVOffset传入值后面有(S)标识,说明此值是参数,在方法体内找到此参数对应的节点,进行复制,并重命名,就可以增加节点参数的输入。
2.复制上图节点,重命名,并完善UV的重复率逻辑
3.保存,应用。将我们新建的材质函数拖拽放入到材质蓝图中
4.在节点中出现我们自己增加的参数。将此参数提升为变量,通过材质实例可以进行控制。
5.完整连线,创建材质实例,可以在实例中调整参数,查看效果。
五、修复UV拉伸 WorldAlignedTexture
我们拉伸简单物体的时候,贴图也会跟随拉伸。使用此节点可以设置UV进行平铺,物体拉伸时,贴图会自动进行平铺。
注意:不要对特别复杂的物体进行此操作,因为此操作没有作用。也不要对球体进行此操作,球体顶部也会存在拉伸。
将贴图转换为纹理对象与节点进行连接。
六、材质边缘过渡 DitherTemporalAA
使用乘法调整变异的融合度。此节点基本不使用。
作用:能够让模型与模型,模型与地面接触的边缘进行颜色过渡,不会过于生硬。
六、植被动态效果
使用SimpleGrassWind节点设置风的大小、权重、速度、断裂处拉伸贴图
此节点在材质中与世界场景位置偏移链接,通过对网格体顶点的移动来造成偏移,所以当随风晃动的时候会出现中间区域撕裂的情况,就需要链接一张断裂处拉伸贴图用来避免出现断裂的情况。
直接节点使用会出现整个植被都会随风飘摇,需要处理一张黑白贴图,将植被贴图根部为黑色,与原结果相乘,就会实现黑白贴图中黑色区域部分不动,其余部分动的效果。
如果觉得制作黑白贴图太麻烦,可以使用VertexColor节点,使用网格体绘制笔刷,模式选择绿色通道,选择绘制模式。选择要绘制顶点着色的植被。
绘制时注意绘制的颜色,如果选择绘制颜色黑色,当绘制时,变黑的地方,使用风效果时,是不会动的。
备注:植被在VertexColor节点中一般使用绿色通道,置换时使用红色通道。
UE4 FBX静态网格物体通道
概述
FBX导入通道中的静态网格物体支持使得将网格物体从3D应用程序中导入到虚幻引擎4中变得更加容易简单。这时不仅会导入网格物体,而且也会导入在3D应用程序中应用到这些网格物体上的任何材质中使用的贴图(仅漫反射贴图和法线贴图),将会自动创建材质并把它们应用到导入的网格物体上。
使用FBX导入骨架网格物体所支持的功能:
-
平滑组
-
多个单独的静态网格物体(也可以在导入时组合到一个单独的网格物体中)。
一般设置
通常,您可以随意使用您想使用的任何工具和方法来创建 Static Meshes(静态网格物体) 。为了可以将所创建的网格物体顺利地导出及导入到虚幻编辑器中并使其进行正常的工作,在设置UVs、放置网格物体等方面您需要考虑几个注意事项。
支点
虚幻引擎中,网格物体的支点决定了执行任何变换(平移、旋转、缩放)时所围绕的点。
当从3D建模应用程序中导出网格物体时,支点总是位于原点处(0,0,0)。由于这个原因,所以最好在原点处创建网格物体,这样原点位于网格物体的一个角落上,从而当对齐到虚幻编辑器中的网格时可以进行正确的对齐。
三角化
虚幻引擎中的网格物体必须进行三角化处理,因为图形硬件仅处理三角形。
有很多三角化网格物体的方法。
-
仅使用三角形建模网格物体 — 最好的解决方案,提供对最终结果最大控制。
-
在3D应用程序中三角化网格物体 - 较好的解决方案,允许在导出之前进行整理和修改。
-
让FBX导出器三角化网格物体 - 一般解决方案,不允许进行清除整理但对于简单网格物体来说是有效的。
-
让导入器三角化网格物体 - 一般解决方案,不允许进行清除整理但对于简单网格物体来说是有效的。
在3D应用程序中手动地三角化网格物体将总是最好的解决方案,这样可以控制边的方向和放置位置。自动三角化处理可能会导致意想不到的结果。
UV 贴图坐标
虚幻引擎4中的FBX通道支持导入多个UV集合。对于 静态网格物体 来说,这一般用于处理漫反射的一组UV集合。设置使用FBX通道的静态网格物体的UV没有特殊要求。
创建法线贴图
在大部分建模应用程序中可以通过创建低分辨率的渲染网格物体和高分辨率的细节网格物体来直接地为您的网格物体创建法线贴图。
高分辨率细节网格物体的几何体用于生成法线贴图的法线。Epic内部处理流程中引入了 XNormal,从而在虚幻引擎4中渲染时生成更好的法线。关于这个过程的更多详情,请参照Normal Map Creation Guide。
材质
在外部应用程序中建模的应用到网格物体上的材质将会随着网格物体一同导出,然后会一同导入到虚幻编辑器中。这简化了导入过程,因为贴图不必再单独地导入到UnrealEd中,不需要再创建及应用材质等。当使用FBX通道时导入过程可以执行所有这些动作。
这些材质也需要以特殊的方式设置,尤其是当网格物体具有多个材质或者网格物体上的材质的顺序很重要时(也就是,对于一个角色模型,材质0需要用于躯体部分,材质1需要用于头部)。
关于设置材质进行导出的完整细节,请参照FBX材质通道页面。
碰撞
简单的碰撞几何体对于优化游戏中的碰撞检测是很重要的。虚幻引擎4在 静态网格物体编辑器 中提供了创建碰撞几何体的基本工具。但是,某些时候,最好还是通过在您的3D建模应用程序中创建自定义的碰撞几何体然后再将其随同渲染网格物体导出来进行处理。一般,这适用于任何不需要和具有开放区域或凹陷区域的网格物体进行碰撞的对象。
比如:
-
Doorway(门口)网格物体
-
具有窗框的墙壁。
-
形状奇怪的网格物体。
导入器基于碰撞网格物体的名称识别碰撞网格物体。碰撞命名语法应该是:
网格物体前缀和名称 | 描述 |
---|---|
UBX_[RenderMeshName]_## | 在Max中使用 Box(盒子) 对象来创建盒式碰撞,或者在Maya 中使用 Cube(立方体) 多边形图元来创建盒式碰撞。您不能以任何方式移动顶点或者使其发生变形来使它成为不是正规图元的其它形状,否则它将不能正常工作。 |
USP_[RenderMeshName]_## | 球体可以使用 Sphere(球体) 对象类型进行创建。球体根本不需要有太多的分段(分为 8 段比较合适),它将会为碰撞转换为真正的球体。就像盒子一样,您不能到处移动单独的顶点。 |
UCX_[RenderMeshName]_## | 凸面体可以是任何完全闭合的凸面 3D 图形。比如,一个盒子可以是一个凸面物体。下面的图表解释了什么是凸面体及什么不是凸面体: |
警告和注意事项
-
RenderMeshName
名称必须同3D应用程序中和碰撞网格物体相关联的渲染网格物体的名称一样。所以,如果您在3D应用程序中渲染网格物体命名为Tree_01
,那么在场景中和那个网格物体相关的碰撞网格物体一样,命名为UCX_Tree_01
** ,然后将其随同渲染网格物体导入到FBX文件中。如果您需要为一个网格物体设置多个碰撞对象,那么您可以使用额外的修饰符扩展它们的名称,比如:UCX_Tree_01_00
、UCX_Tree_01_01
、UCX_Tree_01_02
, ** 等...所有这些碰撞对象都会和那个网格物体相关联。
-
目前球体仅应用于钢体碰撞、虚幻的零粗细踪迹(比如武器),而不应用于非零粗细踪迹(比如玩家运动)。同事,如果 网格物体 不是均匀缩放的,则球体和盒体碰撞则不能正常工作。一般来说,您或许想创建 UCX 图元。
-
一旦您设立了碰撞对象,您便可以把图形及碰撞网格物体导入到同一个.FBX文件中。当您把 .FBX 文件导入到虚幻编辑器时,它将会找到碰撞网格物体,把它从渲染网格物体上移除,并将其转换为碰撞模型。
-
把一个非凸面网格物体分解为凸面图元是一个非常复杂的操作,并且可能会产生不可预测的效果。另一个方法是在 3D MAX 或 Maya 中把碰撞模型分解为凸面块。
-
当一个物体的碰撞是由多个凸面的外壳定义时,这些外壳彼此之间没有相互交叉时会获得最好的效果。比如,如果一个棒棒糖的碰撞是通过两个凸面外壳来定义的,一个用于糖果另一个用于手棒,那么在两者之间应该留有空隙,如下所示:
-
UCX_Candy
-
碰撞表面间的小间隙
-
UCX_Stick
顶点颜色
可以通过使用FBX通道来转换静态网格物体的顶点颜色。不需要特殊设置。
导出网格物体
静态网格物体可以独立地进行导出或者也可以把多个网格物体导出到一个单独的FBX文件中。除非通过在导入时启用 Combine Meshes(组合网格物体) 设置指定出了组合网格物体,否则导入过程将会把多个静态网格物体划分为目标包中的多个资源,。
导入网格物体
-
在内容浏览器中点击按钮。再打开的文件浏览器中导航到您想导入的文件并选中它。注意: 您可以在下拉菜单中选择 来过滤不需要的文件。
-
在 Import(导入) 对话框中选择适当的设置。但大部分情况下默认设置就足以满足需求。请参照FBX导入对话框部分获得关于这些设置的完整信息。
-
点击 按钮来导入网格物体和LOD。如果导入过程成功,那么将会在内容浏览器中显示最终的网格物体、材质和贴图。
通过在静态网格物体编辑器中查看导入的网格物体并启用显示碰撞功能,您就可以判断该导入过程是否按照期望的方式进行了。
静态网格物体LOD
为了限制随着骨架网格物体距离相机的距离的逐渐变远而产生的性能影响,我们可以在游戏中使用骨架网格物体的细节层次(LODs)。一般,这意味着每个细节层次级别所具有的三角形数量将会变少、或许会给该层次级别的骨架网格物体应用更简单的材质。
可以使用FBX通道来 导入/导出 这些LOD网格物体。
LOD设置
一般
一般情况下,LODs通过创建具有不同复杂程度的模型来进行处理,包括从具有完整细节的基本网格物体到最有最低细节的LOD网格物体。这些LOD网格物体应该和同样的支点对齐并占用同样的空间。每个LOD网格物体可以分配完全不同的材质,包括不同数量的材质。这意味着基本网格物体可以使用多个材质来在近距离处产生理想的细节质量;但低细节网格物体可以使用一个单独的材质,因为细节不是那么显著。
导出LOD
要想导出 静态网格物体 LOD:
导入LOD...
在内容浏览器中,静态网格物体LODs可以随同基础网格物体一同导入,或者可以通过AnimSet编辑器单独地导入这些静态网格物体LODs。
具有LOD的网格物体
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
以上是关于UE4-材质法线强度调整法线贴图混合自定义材质函数材质边缘过渡植被动态效果的主要内容,如果未能解决你的问题,请参考以下文章