Unreal地形 根据斜率分配地形材质,以及利用材质Grass Output 节点, 以及Foliage 系统添加植被,以及Procedural Foliage Spawn

总结:

1利用heightlerp来调整坡度上地表的拉伸

2利用材质里的grass out put节点来根据地形的mask自动生成地面的草 花  等小细节

3利用ProceduralFoliageVolume生成树木

4利用Foliage 植被系统来调整ProceduralFoliageVolume自动生成的植被

目的:根据地形的斜率来混合地形材质,制作地形时,当地形有高度抬升时,被拉伸部位的贴图会出现拉伸,或者想要在拉伸区域使用其他类型种类的贴图时。如果使用笔刷对地形进行更改是耗费时间的,所以想要整体一次性更改,需要使用高度融合节点HeighLerp 及材质层融合节点 MatLayerBlend_Standard 实现。

HeighLerp节点,材质函数,可双击进入查看逻辑。可以理解为 高度的线性插值。可以控制地形在高度上拉伸时,控制填充其他类型贴图高度范围。

MatLayerBlend_Standard节点,材质函数,可双击进入查看逻辑。可理解为顶层和基础层的混合。地形在高度上拉伸时,想象成一个高度内拥有两端及中间区域,需要两端显示的材质链接TopMaterial节点,中间拉伸部位显示的材质链接BaseMaterial节点,Alpha:插值系数

 

TopMaterial节点一般链接地形现有层材质即可。

拉伸区域的材质需要自定义材质函数。

 2 创建岩石材质函数(拉伸区域的材质需要自定义材质函数)(希望在地形高度差的位置上表现的材质)

1 创建一个材质函数

2 创建岩石材质函数

worldalignedtextures_complex 节点:

备注:在模型拉伸使想要让贴图跟随物体拉伸,进行平铺使用WorldAlignedTextures节点即可实现效果. 

在地形高度融合中,根据高度区域大小实现贴图平铺,需要使用WorldAlignedTextures_Complex节点完成,此节点是一个材质函数,官网没有解释。可以理解为 官方提供了一个规则,让我们直接按照规则使用。

将材质蓝图中的贴图转换为纹理对象,不同类型的贴图与WorldAlignedTextures_Complex中对应节点链接。
 

注意:所有连接到WorldAlignedTextures_Complex节点的贴图输入项后边括号内标有(T2d)的都要转为2d纹理(选中贴图右键“转换为纹理对象”)

 使用worldAlignedTextures节点设置后无法直接进行输出,需要使用制作材质属性节点(MakeMaterialAttributes)来输出

如果需要再额外输出ao等信息需要新建output节点

注意这里处理UV贴图重复度的方式~  第三个参数TextureSize是UV重复度值,我们需要外部将此参数值传入,需要创建输入节点命名为 UV重复度,控制板搜索input选择FunctionInput。将节点类型更改为函数输入标量(实际上就是个一维)。x默认值设置成300。

 

 最后使用时候需要创建一个函数从这里输入tilling值,如果这里没有输入则使用节点上的默认值。

 最后岩石材质函数节点

3 然后创建普通地表贴图的材质函数:(草地之类的)

1创建材质函数:

2地表贴图的材质

4 地面材质蓝图公式:

创建一个材质球,将两个岩石材质函数拖入,创建一个一维参数节点(命名:小岩石贴图大小)连接到小岩石材质函数的Tiling(这里如果不输入参数的话贴图大小就默认制作材质函数时输入的x:800为默认参数);

      创建一个LinearInterpolate(简:Lerp 线性插值),三维常量和一维参数节点(小岩石法线混合值),将三维常量连接到Lerpde的A点并设B通道为1,将小岩石材质函数的Normal连接到B点,一维参数节点连入Alpha通道;
      创建一个Transform(空间转换,将线性空间转换代世界空间),选中Transform节点在细节面板的Source选项改为‘Tangent Space’,Destination选项改为‘World Space’;z再将Lerp连接到Transform 
      转换到世界空间后Transform的数值范围是无穷大的,所以需要一个归一化节点Normalize约束一下数值在一定范围内(0-1);
      创建一个DotProduct(简:Dot)将Normalize节点连接到A点,再把刚刚创建的三维常量节点连接B点,这样是世界空间与原始数据对比;
将得出的对比数据连接到ConstantBiasScale节点(常量偏差比例);

创建一个Layer Blend节点将绘的材质函数连接起来,有几个残值函数添加几个混合层,每个混合层的混合模式改为高度混合(Blend Type: LB Height Blend),还要设置每个绘制层的混合权重(Preview Weight);

 

最后完整的材质节点图:

然后创建材质实例,赋予地形就OK~

enjoy~  地形坡度两层岩石地表混合方式完成~    

下面为简单的地形坡度地表混合节点图:

地表节点图

高度范围值逻辑

完整的材质节点图

材质函数的贴图参数开放~  在材质函数里把Tex Object转成 param Tex Object这样调用这个材质函数的材质球就可以替换对应的贴图了~ 

利用材质Grass Output 节点, 以及Foliage 系统添加植被

1在材质蓝图里创建landscapeGrassOutput节点

2然后再资源库里创建landscape grass type 在grass type这里设置植被或者草的密度是性价比比较高的~ ,如果在材质蓝图里利用遮罩蒙版来控制植被密度 性能上不是很好。

利用jitter来控制生成植物之间的间距

 利用density 来控制生成植被的密度

3 材质蓝图里控制landscape grass type里植被的生成范围(相当于制作了一个mask)可以控制mask的范围但是植被的密度最好是在landscape grass type里设置好~  

可以利用图片来和地形的mask进行减法来做出变化~  (mask图片可以RGB做三种不同变化)

4 最后实现的效果,因为使用了 岩石立面避免拉伸的mask 所以 岩石的立面不生长植被(草和树(不过树不推荐用这个方法)比较适合草 花 小岩石  地面的小树枝等)。

5 利用UE地形节点 Landscape Layer Weight节点创建一个Foliage Removal层,用来控制 Grass Output节点生成的植被。

【想了解其他类似地形相关节点  搜索 ue4地形表达式】

(上图有个问题,不需要修改Blend Mode 为mask就可以显示Landscape Layer Weight节点创建d的Foliage Removal层)

利用 LandscapeLayerWeight 表达式可根据地形材质中获取的关联图层权重混合所有材质网络。该图层的权重用作混合两个输入网络的Alpha值

  1. 参数名称 – 给定参数的唯一命名。
  2. 预览权重 – 材质编辑器中用于预览的权重。
  3. 恒定底色 – 可在此指定地形需要拥有的底色
  4. 基础 – 要与该图层混合的网络。此通常为前一图层混合的结果,但如是首个图层,则可以为空。
  5. 图层 – 要混合起来创建该图层的网络。

 LandscapeLayerWeight表达式利用乘法和原来的mask进行blend然后连接到对应的Grass out put节点上~   

搭配Foliage 系统添加植被

1 创建Mesh foliage 类型~  指定植物的static mesh

可以设置植被的大小 旋转等参数~    

利用来设置植被的生产地形~ ("草地")这个名字需要和地表的名字对应上~  这样就只能在名字对应的地表上进行刷对应的植被了

2 OK 然后正常刷植被即可~   

Procedural Foliage Spawner 程序化植被系统

利用程序化快速生成植被,生成后可以利用UE的植被笔刷来修改程序化植被生成后的植被结果

1 创建Procedural Foliage Spawner

2 在Procedural Foliage Spawner里指定两个设置好的 Static Foliage Spawner 

static mesh Foliage 里的设置:

Collision       碰撞 :该属性主要用来控制,当植被的碰撞半径,与另一种植被类的碰撞半径或着色半径重叠时,会根据植被类型对象的优先级,确定哪种植被的种子会被取代或移除。

Clustering    集群设置:  通过设置集群中的阶数来控制植被的年龄
                                        通过设置初始种子密度来控制植被的总体密度

Growth        生长设置:  通过对生长设置进行调整,植被类型对象的网格体实例会根据设置随时间生长。     

3 把创建的Procedural Foliage Spawner拽到场景里~  然后缩放调整生成框的大小

设置好框大小后,点击Resimulate 生成~  

4  Procedural Foliage Blocking Volume 设置植被阻挡体积

该遮挡体积可以阻挡植被工具进行生成,即被该体积覆盖的地方,不会有植被被生成。

5 利用程序区域生成的植被,可以支持UE的植被笔刷来调整~  

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值