Houdini创建通道和铁路(三)

思路

首先利用curve节点绘制出道路和铁路的路径轨迹,利用ray节点将曲线投射在地形的表面,根据投射得到的Mask对道路和铁路的地形进行修改,最后copy to points节点将石块和铁轨放置在点上。

image-20201130154350820

image-20201130131722045

curve曲线投射地形

curve节点绘制出道路和铁路的基本形状

image-20201130124839080

ray节点将曲线投射在地形上,在此之前要将HeightField转换为geometry

image-20201130125041029

image-20201130125057280

利用投射曲线创造Mask并修改Mask地形

curve节点随便构建一个用于sweep的横截面,要在前视图创建曲线,根据需求用Transfrom对曲线进行scale的修改

image-20201130125402354

sweep得到的图形

image-20201130125457068

为了让sweep构成的图形朝上的方向为Y轴,可能是为了平面更平,需要修改一下选项(虽然我也不知道这些东西有啥用)

image-20201130131102923

接下来就可以maskByObject得到道路和铁路的Mask

image-20201130131701548

用project节点将道路和铁路的object投射到地形上,造成地形的不平坦

image-20201130131939120

可以看到project造成的地形拉起有一点过于明显,需要blur模糊一下

image-20201130132129245

同样mask遮罩也过于生硬,用maskblur进行模糊

image-20201130132210644

接下来就可以为道路和铁路的地形添加noise细节,更多的不平坦效果

image-20201130132326994

用blend混合模式来混合原有地形和noise地形的结合

image-20201130132417556

最后要对mask的区域进行erode侵蚀效果处理,由于我们只想要mask地区进行侵蚀而非全部heightField,我们需要blast节点删除我们不需要的信息层。

image-20201130142430191

同时早erode节点开启mask on表示使用mask,否则还是会应用到全地形

image-20201130142519084

接下来就是将计算出来的mask层存储为Layer_03层级,在此之前我们需要将mask减去一些层级信息,最后maskclear

image-20201130142753497

地形就能处理好了

image-20201130142854698

利用点生成石块和铁轨

同样先将我们的曲线resample,得到更多的点,可以修改Treat Polygons As 方法得到更加平滑的曲线

image-20201130143101334

利用rand函数随机删除几个点,达到不规则的效果,其次为了让物体跟随曲线的旋转而旋转,需要添加orientalongcurve节点计算,得到属性N和up,这两个属性共同控制物体的朝向和旋转,如果不这样做,就会出现一下错误结果

错误结果

正确结果

同时为了让生成物体更好的卡在地形表面而非被地形淹没,我们需要将地形转换为geometry然后smooth重新计算法线,将法线N更改为up,attributetransfer将地形的up传递给曲线的up属性,这样得到的效果会更好

image-20201130144120978

同理铁路也一样的处理方式,最后我们可以利用Mask在道路和铁路周围散布植物的点云。

首先利用blur节点的expand方法将layer_03往外扩一点

image-20201130144348579

再减去利用maskByfeature得到的斜坡遮罩,最后减去layer_03得到植物的mask遮罩,scatter散布点即可

image-20201130144520872

生成模型合并在一起,得到最后结果

image-20201130153048776

输出结果

OutPut总共分为3个,一个输出地形,一个输出生成的模型,一个输出点云

image-20201130153318367

image-20201130153328375

image-20201130153338818

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

请我喝杯咖啡吧~

支付宝
微信