点云生成地形
首先点云数据我们是可以到https://opentopography.org/进行获取的,也可以去任何你知道的点云数据库下载,并需要将得到的文件转化为.las格式。
Houdini中我们使用Lidar Import节点来导入点云数据,File设置为.las文件路径即可
导入后我们发现场景中是空的,因为导入节点后位置不对,需要进行调整才能看到。
我们创建一个transform节点,并将Translate三个值改为“-$CEX/Y/Z”,节点命名为recenter
此时我们就可以看到场景中出现了点云,但方向不对。我们再创建一个transform,将rotateX改为-90,并将节点命名为rotate_up
经过这两个transform节点的调整,我们就可以看到点云数据在Houdini中的表现了
接下来我们使用这个点云数据来生成Heightfield
创建一个Attribute Wrangle节点,写上:
f@my_height = @P.y;
@P.y = 0;
这一步是把每个点的高度信息存起来,然后把y轴归零,否则生成出的地形会有很多锯齿
随后创建一个Volume Wrangle节点,写上
int my_ref = nearpoint(1, @P);
@height = point(1, "my_height", my_ref);
同时另外创建一个heightfield节点,将其连在Volume节点的第一位,将上一步的Attribute节点连到第二位,如图
可以看到我们生成出了完美还原点云数据的地形,到这一步就可以导入UE4直接使用了。
地形处理
在这篇文章里我们可以继续探索一下Heightfield的相关处理。
(注:没有点云的话,我们在默认heightfield节点下加一个heightfield noise就可以获得一个差不多的地形来进行下面的步骤)
首先我们使用地形侵蚀工具,为地形添加一些具有真实感的细节:创建一个HeightField Erode节点。
可以看到我们的地形只是变了颜色,没有细节,这是因为该节点是基于时间来计算的,我们点击下方的播放键即可看到效果
我们可以在这里确定我们想要哪一帧的效果,然后去节点属性页面,设置Freeze at Frame即可保留该侵蚀效果
同时我们切换选项卡,取消勾选Visualize,即可隐藏地形上的颜色(这些颜色展示的是侵蚀节点自动计算出的一些Layer)
侵蚀效果大致如下
接下来,由于地面上我们可能需要进行铺设道路,生成植被等工作,坑坑洼洼反而不太好,所以我们试试将其平滑:先创建一个HeightField Mask by Feature节点,选择Mask by Slope 15-90度,同时勾上Invert Mask,即可得到平地的mask
随后我们接连创建HeightField Slump和HeightField MaskClear节点,先将视图切到MaskClear节点,Layer 1选择mask,再选中Slump节点,拖动Spread Iterations参数,可以发现随着参数改变,平地也变得光滑了。我们调整该参数到想要的效果即可。
至此常用的地形处理就完成了,接下来就可以在其上计算各个mask,绑上材质等等,可以参考我这篇文章中的“Houdini部分”https://blog.csdn.net/qq_42219469/article/details/108002214
地形导出到UE4
进行这一步之前,确保当前视图在你想输出的节点,或者直接使用一个output节点连接到你想输出的节点后面
我们按下ctrl+a全选前面步骤创建的所有节点,然后选择Assets-New Digital Asset From Selection
修改一下名字,位置之类的参数,然后确认,即可生成HDA数字资产。
确保你的UE4安装了Houdini Engine插件,将HDA拖入UE4中进行cook,Houdini Engine就会自动根据我们处理完的Heightfield在UE4中生成Landscape。最后在HDA实例中点击Bake按钮,该地形就会独立出来供我们使用。