Houdini地形总结

效果展示

image-20201112104702922

思路

首先利用HoudiniField 创建基本地形,HeightFieldNoise 对地形进行扰动,HeightFieldDistort对地形再次轻微扭曲失真添加细节,最后用HeightFieldErode模拟水力侵蚀和热力侵蚀。

image-20201111205217529

image-20201111205229801

利用HeightField slump 和HeightField flow 获取泥土坍塌堆积和水流流向Mask贴图,由于这两个节点的OutLayout名字都叫flowdir,为避免重复,需要用到heightField copylayout和heightfield Layer重新传递图层信息。

image-20201111205730008

image-20201111205741959

image-20201111205755804

利用maskByfeature,顾名思义是利用地形特点获取mask图,这里先获取平坦地面的mask图,然后利用blur和noise节点为平坦地面添加凹凸细节

image-20201111211908052

image-20201111211844494

image-20201111212100019

开始构造岩石,土壤,草地Mask

底层是岩石,中间是土壤,最上层是草地,三者互不重叠

image-20201105144214013

草地

image-20201111213252547

首先利用maskByFeature节点获取平坦地方的Mask,只用到了坡度来获取Mask

image-20201111212520982

可以法线获取到的Mask存在瑕疵,居然山顶上也有Mask,所以我还需要下一个maskByFeature进行处理

image-20201111212556907

这里模式为Subtract,即用上一个Mask图减去此节点得到的Mask,这里用到了Height和Valleys

image-20201111212751592

可以看到效果好了许多,得到最基本的GrassMask

image-20201111212837053

土壤

土壤利用flow层级信息获取最基本的土壤信息

image-20201111213235215

image-20201111213322478

岩石

岩石基础Mask比较简单,因为岩石是最底层,所以肯定为1全部覆盖,用maskbyClear即可得到

image-20201111214259233

image-20201111214246075

土壤和草地混合Mask

为了得到更加随机混合的效果,我们需要将之前得到的土壤和草地BaseMask进行合并

image-20201111213512156

image-20201111213458102

得到效果如下

image-20201111213545071

依然利用blur,remap获取一个新的草地Mask,然后利用maskByFeature的Valleys去除一部分草地的Mask

image-20201111213902857

得到的最终草地Mask,土壤Mask用合并的Mask再减去新的草地Mask即可得到

最终草地Mask

最终土壤Mask

岩石Mask也是减去土壤和草地合并Mask即可得到

最终岩石Mask

存储得到的rock,soil,grass层级信息

利用copyLayout来生成新的层级来存储Mask,然后利用HeightFieldLayout存储刚才得到的层级信息

image-20201111214453245

image-20201111214537997

image-20201111214723898

开始散布点

树肯定是分布在grass层级,所以我们要在grass层级上copy生成一个tree层级,然后scatter散布点

image-20201111215158189

tree层级

利用HeightFieldScatter进行点的散布

image-20201111215315583

这里根据CoverageMask进行覆盖,Coverage调整覆盖度(数量),剩下的OuterRadius和Falloff不大清楚是用来干嘛的,iteration大概是点生成的迭代次数,迭代越多越精准

image-20201111215352253

得到效果

散布完树的点之后,就要散布灌木,这里注意Tag名称,由于我们规定灌木要生长在树的周边,而我们之前生成好的树点都带有tree标签,我们根据Tag进行生成即可

image-20201111215813278

分别控制生成数量,生成范围,生成大小

image-20201111215954770

其他物体的生成也是如此推算即可。

生成HDA导入到UE4

首先把全部节点打包为一个subnet,右键生成HDA

image-20201111220320744

可以暴露参数到UE4里面进行修改

image-20201111220422258

这里暴露了HeightField的Size和GridSpace属性,这样在UE4就可以修改地形的大小

image-20201111220440315

在UE4引擎中开启Houdini插件即可,注意:需要安装对应版本的Houdini才会有这个插件出现

image-20201111220624308

地形材质LandScape

主要用到节点LandScapeUV,LayerBlend

image-20201111220820996

这里对应的图层信息为Houdini的图层名称,否则会出错

image-20201111220846653

这里我学到一个新的种草技能,利用LandScapeOutPut进行物体的在指定图层的摆放。这里就在Grass种草和种花

image-20201111221039097

需要landSpaceGrassTye

image-20201111221205436

进行模型的替换

这里有两种选择,一种在UE4进行手动替换

image-20201111221407109

第二种在Houdini里用代码规定好,例如利用attributeCreate规定地形的材质,利用AttributeWrangle设定模型

image-20201111221516447

image-20201111221842452

总结

Houdini地形创建先创造基本地形,然后利用各种Mask节点来构造土壤,岩石,草地的Mask分层,最后利用HeightFieldScatter进行点的散布,导进UE4进行地形材质的构造,种草种花完美结束。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2021 Opda
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信