【UE4地形】轻松实现UE4自动地貌和自动植被分布
UE4地形Game艺视界原创 39775 1
实名

通过了实名认证的内容创造者

发布于 2022-3-19 17:57:31

您需要 登录 才可以下载或查看,没有账号?注册

x
image.png



首先介绍下我们制作自动地貌所需要的节点顺序不分先后
b10e4166e93f6581e25fcf35b65acd69.png
  • Break MaterialAttributes(中断材质属性)
在使用 分层材质 ("材质功能"系统的一项特性)时,BreakMaterialAttributes(中断材质属性)表达式十分理想。在材质中使用 材质层功能 时,您可能想只使用材质层的某一个方面。例如,您可能有一个定义漂亮的一般材质(如钢铁)的材质层。您可能希望在最终材质中仅使用该材质层的"粗糙度"和"底色"属性,而不是使用整个材质层。在此类情况下,您可使用 BreakMaterialAttributes(中断材质属性)节点对材质层的所有传入属性进行拆分,然后仅连接所需的属性。这也使您能够对各种材质属性进行复杂混合。

  • Grass植被输入


  • LandscapeLayerBlend(景观混合层)


添加多张地表材质
  • Sample None(地形图层采样)
景观混合器种权重信息配合Grass
  • Normalize(归一化)
数据压缩例如最小值-100最大值+100通过归一化可以将数据统计为0-1
  • Landscapecoords(景观坐标)


控制地表材质平铺tilingNormalize 表达式计算并输出其输入的归一化值。归一化矢量(也称"单位矢量")的整体长度为1.0。这意味着输入的每个分量都除以矢量的总大小(长度)。
示例:通过Normalize传递(0,2,0)或(0,0.2,0)都将输出(0,1,0)。通过Normalize传递(0,1,-1)将输出(0, 0.707, -0.707)。全零矢量是唯一的例外,它不会改变。



  • Dot
A 接受一个值或任意长度的矢量。 B 接受一个值或具有与 A 相同长度的矢量。

  • Transformvector(空间坐标转换)


Transform(转换)表达式将三通道矢量值从一种参考坐标系转换到另一种参考坐标系。默认情况下,材质的所有着色器计算都在切线空间中完成。矢量常量、摄像机矢量和光线矢量等在材质中使用之前,都会转换到切线空间。Transform(转换)表达式允许将这些矢量从切线空间转换到全局空间、局部空间或视图空间坐标系。另外,它允许将全局空间和局部空间矢量转换到任何其他参考坐标系。
源(Source) 指定要转换的矢量的当前坐标系。这可以是以下其中一项:全局(World)、局部(Local)或切线(Tangent)。
目标(Destination) 指定要将矢量转换到的目标坐标系。这可以是以下其中一项:全局(World)、视图(View)、局部(Local)或切线(Tangent)。 Transform(转换)节点会对镜像 UV 加以考虑,例如,以使凸显仅影响人物的右侧边缘。
对于生成全局空间法线以便对立方体贴图进行取样,Transform(转换)节点非常有用。法线贴图可转换到全局空间。以下示例将法线转换到全局空间,以便对立方体贴图进行取样:

  • ConstantBiasScale(常量偏差比例)
常量偏差比例(ConstantBiasScale) 表达式接收输入值,加上偏差值,然后乘以比例缩放系数并输出结果。例如,要将输入数据从[-1,1] 转换到[0,1],请使用偏差值1.0和比例缩放系数0.5。偏差(Bias) 指定要与输入相加的值。 比例(Scale) 指定偏差结果的乘数。

  • Make Material Attributes(建立材质属性)
MakeMaterialAttributes(建立材质属性)节点的作用与 BreakMaterialAttributes(中断材质属性)节点正好相反。此节点将各属性汇聚到一起,而不是拆分属性。这在您创建自己的 材质层 功能时非常有用,因为您将能够访问所有的标准属性以用于输出。此节点也可用于复杂材质设置,在这些设置中,您希望定义多种类型的材质,并将它们全部混合到一个材质中。

  • Heightlerp(高度线性差集 针对材质)




针对图片
  • Matlayerblend_Standard


接下来我们实际操作下,在地形高低不等情况下如何实现自动化材质打开ue4新建地形、新建材质球、新建节点

创建好材质球后赋予给地形进入绘制模式就可以看到我们创建的材质层


接下来保存我们层信息选择保存位置按照制作规范保存,接下来就可以直接在地表上刷纹理了



以上是基础地表纹理设置下面我们来设置我们节点参数
首先将我们材质转换为材质属性

新建节点后相连


有了顶层材质我们设置下底层地面到入一张贴图土地

需要转换下在连接




  • 新建三维常量数值(0.0.1)切线空间也代表R.G.B 1=b也就是蓝色朝上面
  • 切线空间转换世界空间
  • 新建归一化节点(因为转换了世界空间坐标不是0.0.1我们要将其变成0.0.1)
  • 空间向量运算是否等于1
  • 常量偏差比(无论dot运算结果如何最终都会转化0-1)
  • 控制线性差值也就是斜坡材质范围(为了后期方便调节)
  • 常量控制边缘过度


整个公式就是在计算红色区域范围,过渡值是侧面材质与上下两面衔接是否柔和



黄色区域大小


值得注意的是黄色区域是不能再绘制模式下通过笔刷绘制其他地表贴图的
第二种方法导入我们准备好的地表贴图左下角星形表示资源未保存



材质函数节点


材质


  • 材质函数____我们的基础材质(地表和刷起高度后侧面两种材质)
  • 基础材质外其他地表材质可以增加多张pc端
两种方式实现同一效果看实际应用中那个更适合
接下来我们在制作下根据地表区域分配植被这就用到我们Grass灌木节点准备我们地形中分配资源数 灌木 草导入到ue4赋予材质贴图接下来回到我们之前制作好的节点中运用之前介绍的节点Grass可以创建多组数据添加数据组元素 草 树 灌木

回到我们材质资源目录新建地形草地类型


创建好后我们进入设置添加我们植被,并且进行简单设置。


植被节点名称需要和混合图层名字一一对应


我们已经通过地表权重实现了植被分布,但是有个问题我们侧面高度也被赋予了模型这不是我们想要的所以还要做一步排除


新建节点Oneminus 1-节点

减法

自动分配植被这一段完整的节点


最终效果排除了侧面出现的植被测试文件惨不忍睹大家看实现方式忽略效果




原帖地址:【UE4地形】轻松实现UE4自动地貌和自动植被分布 (qq.com)


               


14fe50fd47fa338f6eaa75d80a7146ea.png
052874cd22ecba313390018d671f6864.png
image.png

本帖被以下画板推荐:

微信公众号:Game艺视界
使用道具 <
qq_qquser_S3R  发表于 2023-9-17 03:43:31  
2#
牛昂昂  啊啊啊啊啊啊啊啊啊a
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表