接触Houdini不久,属于菜鸡系列,看见UOD上西山居的自动化岛屿生成很感兴趣,做个笔记,如有书写和理解错误还请大佬扶正。
本篇为上一篇模型篇的后续材质篇,同样比较基础没有用很复杂的节点(因为复杂的用不明白.......)
开始制作材质
首先在UnrealEngine4 中新建一个材质,连接一个简单的地形材质做为后续测试使用。此处地形材质分为三层分别为 水(Water),草地(Grass),岩石(Rock)层。
地形材质(贴图来源官方新手包)
接下来复制刚刚新建的材质的路径
点击crtl+c也可以
在Houdini 中赋材质给上一篇制作的地形(节点unreal_material);
UnrealEngine4 中复制路径为(Material'/Game/YY/M_LandTT.M_LandTT')复制到Houdini节点中要做一定的修改(/Game/YY/M_LandTT.M_LandTT)。
这样再次将Houdini的地形导入UnrealEngine4 中时,就可以自动识别材质信息。
更改路径
提取材质层的信息
单一的图层信息
- 根据地形高度提取材质层信息(节点heightfield_maskbyfeature);
- 复制提取的材质层信息并命名,此处名字要和UnrealEngine4 地形材质混合层名字一样(节点heightfield_copylayer);
- 重复这两步操作分别提取出 草地,岩石,水的材质层信息;
- 可视化图层信息,方便观察与调节(节点heightfield_visualize);
调节的比较粗糙.....
- 清除多余的图层信息(节点heightfield_layerclear);
- 以免导入UnrealEngine4 里有多余的图层信息;
- 保存,输出HDA文件;
重新导入UnrealEngine4 中,查看效果(材质与图层信息均显示正常)。
也可以利用(节点HeightField Output)输出图层的高度图,提供引擎使用。
复合的图层信息(主要利用heightfield_layer的各种混合模式叠加图层)
使用侵蚀节点制作更加细节的岛屿(节点heightfield_erode);
(温馨提示,此节点很卡慎用,操作前尽量降低地形的分辨率,操作后在把地形分辨率提上去)
点击播放定位我们的效果在那一帧
侵蚀节点会生成四个图层,分别根据不同侵蚀效果产生。我们可以根据这些图层信息,直接修改成我们自己的材质混合层的名字输出到UE4中。也可以不用他自动生成的 根据自己的要求手动生成图层信息;
这里手动调节一下(主要侵蚀节点的迭代效率太吃电脑配置,调节太慢)(这里把侵蚀节点的可视化关掉,便于后续观察与调节);
根据高度 调节地形中水面层级Mask, 并复制Mask层级信息(heightfield_copylayer)命名为Water(与UE4中地形混合层名字一样);
- 根据上一步水面Mask的参数,利用高度Mask提取出地形其余部分(heightfield_maskbyfeature);
- 在根据坡度信息 把地形中水平区域提取出来(heightfield_maskbyfeature);
- 最后合并图层信息(节点heightfield_layer,其中Lyaer改为Mask,混合模式为Add);
- 复制Mask图层信息,并命名Rock,同样与UE4中地形混合层一样的名字(节点heightfield_copylayer);
emmm就这样吧
- 把上一步中,Mask的图层信息做一个反向的处理(节点heightfield_remap);
- 在减去最开始水面的Mask信息 获取地形其余位置的Mask信息作为最后草地图层的信息(节点heightfield_layer,模式相减);
- 复制Mask信息并命名Grass 与UE4中同名(heightfield_copylayer);
emm.....
- 最后清除掉不用的图层信息(节点heightfield_layerclear);
- 可视化图层信息(节点heightfield_visualize);
保存文件,导入UE4中查看效果;
显示一切正常(精度比较低)
我们有了地形的图层信息可以做一些植被的自动化操作
首先新建一个LandscapeGrassType,找一个植被模型指定给Mesh并调节一些参数;
- 然后在地形材质中,新建一个Grass节点 和一个地形的图层节点,连接两个节点;
- 把上一步新建的LandscapeGrassType赋给Grass节点;
- 对图层节点命名,此处名字为我们想让植被生成在哪个图层的名字;
保存材质,查看效果,植被自动生成在草地的图层上;
更加详细操作与参数说明:
3. Landscape Materials and the Grass Tooldocs.unrealengine.com
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 可视化图层信息,可以调节不同的颜色对应不同的图层,方便观察;