接触Houdini不久,属于菜鸡系列,看见UOD上西山居的自动化岛屿生成很感兴趣,做个笔记,如有书写和理解错误还请大佬扶正。

本篇为上一篇模型篇的后续材质篇,同样比较基础没有用很复杂的节点(因为复杂的用不明白.......)

开始制作材质

首先在UnrealEngine4 中新建一个材质,连接一个简单的地形材质做为后续测试使用。此处地形材质分为三层分别为 水(Water),草地(Grass),岩石(Rock)层。




houdini vex采样贴图_Game


地形材质(贴图来源官方新手包)

接下来复制刚刚新建的材质的路径


houdini vex采样贴图_图层_02

点击crtl+c也可以


在Houdini 中赋材质给上一篇制作的地形(节点unreal_material);

UnrealEngine4 中复制路径为(Material'/Game/YY/M_LandTT.M_LandTT')复制到Houdini节点中要做一定的修改(/Game/YY/M_LandTT.M_LandTT)。

这样再次将Houdini的地形导入UnrealEngine4 中时,就可以自动识别材质信息。


houdini vex采样贴图_Game_03

更改路径

提取材质层的信息

单一的图层信息

  • 根据地形高度提取材质层信息(节点heightfield_maskbyfeature);
  • 复制提取的材质层信息并命名,此处名字要和UnrealEngine4 地形材质混合层名字一样(节点heightfield_copylayer);
  • 重复这两步操作分别提取出 草地,岩石,水的材质层信息;
  • 可视化图层信息,方便观察与调节(节点heightfield_visualize);


houdini vex采样贴图_houdini vex采样贴图_04

调节的比较粗糙.....

  • 清除多余的图层信息(节点heightfield_layerclear);
  • 以免导入UnrealEngine4 里有多余的图层信息;
  • 保存,输出HDA文件;


houdini vex采样贴图_Game_05


重新导入UnrealEngine4 中,查看效果(材质与图层信息均显示正常)。


houdini vex采样贴图_图层_06


也可以利用(节点HeightField Output)输出图层的高度图,提供引擎使用。

复合的图层信息(主要利用heightfield_layer的各种混合模式叠加图层)

使用侵蚀节点制作更加细节的岛屿(节点heightfield_erode);

(温馨提示,此节点很卡慎用,操作前尽量降低地形的分辨率,操作后在把地形分辨率提上去)


houdini vex采样贴图_Game_07

点击播放定位我们的效果在那一帧

侵蚀节点会生成四个图层,分别根据不同侵蚀效果产生。我们可以根据这些图层信息,直接修改成我们自己的材质混合层的名字输出到UE4中。也可以不用他自动生成的 根据自己的要求手动生成图层信息;

这里手动调节一下(主要侵蚀节点的迭代效率太吃电脑配置,调节太慢)(这里把侵蚀节点的可视化关掉,便于后续观察与调节);

根据高度 调节地形中水面层级Mask, 并复制Mask层级信息(heightfield_copylayer)命名为Water(与UE4中地形混合层名字一样);


houdini vex采样贴图_UE4如何贴混合贴图_08


  • 根据上一步水面Mask的参数,利用高度Mask提取出地形其余部分(heightfield_maskbyfeature);
  • 在根据坡度信息 把地形中水平区域提取出来(heightfield_maskbyfeature);
  • 最后合并图层信息(节点heightfield_layer,其中Lyaer改为Mask,混合模式为Add);
  • 复制Mask图层信息,并命名Rock,同样与UE4中地形混合层一样的名字(节点heightfield_copylayer);


houdini vex采样贴图_Mask_09

emmm就这样吧

  • 把上一步中,Mask的图层信息做一个反向的处理(节点heightfield_remap);
  • 在减去最开始水面的Mask信息 获取地形其余位置的Mask信息作为最后草地图层的信息(节点heightfield_layer,模式相减);
  • 复制Mask信息并命名Grass 与UE4中同名(heightfield_copylayer);


houdini vex采样贴图_Mask_10

emm.....

  • 最后清除掉不用的图层信息(节点heightfield_layerclear);
  • 可视化图层信息(节点heightfield_visualize);


houdini vex采样贴图_UE4如何贴混合贴图_11


保存文件,导入UE4中查看效果;


houdini vex采样贴图_Mask_12

显示一切正常(精度比较低)

我们有了地形的图层信息可以做一些植被的自动化操作

首先新建一个LandscapeGrassType,找一个植被模型指定给Mesh并调节一些参数;


houdini vex采样贴图_UE4如何贴混合贴图_13


  • 然后在地形材质中,新建一个Grass节点 和一个地形的图层节点,连接两个节点;
  • 把上一步新建的LandscapeGrassType赋给Grass节点;
  • 对图层节点命名,此处名字为我们想让植被生成在哪个图层的名字;


houdini vex采样贴图_Game_14


保存材质,查看效果,植被自动生成在草地的图层上;


houdini vex采样贴图_Mask_15


更加详细操作与参数说明:

3. Landscape Materials and the Grass Tooldocs.unrealengine.com

houdini vex采样贴图_图层_16

https://docs.unrealengine.com/en-US/Engine/OpenWorldTools/ProceduralFoliage/QuickStart/index.htmldocs.unrealengine.com


Houdini节点解释参考

HeightField Copy Layer 拷贝一个图层信息,创建一个新变量储存复制过来的图层信息,可以用来保存制作的图层信息,为后续操作提供基础;

HeightField Remap 把高度值映射到[0,1]然后输出[] 输出如果为[1,0]就可以起到反向Mask的作用;

HeightField Visualize 可视化图层信息,可以调节不同的颜色对应不同的图层,方便观察;