从Houdini到UE4全流程
Houdini地形生成:
制作地形时可以使用一些真实世界的高度信息作为基础来辅助地形生成。可以有网上的资源,还有开放的卫星测量数据。
这些高度信息最后压缩在图片中变成高度图,使用houdini的heightfield file节点来读取即可生成。
01 - Heightfields,指在Houdini中用来代表地形的2D volumes,其中每个voxel包含了在特定grid point的地形高度信息;在Houdini的viewport中,只是使用3D的方式展现2D的heightfields信息;同样也可以mask出需要修改的部分进行编辑;
02 - 可以在Terrain Tools中建立HeightField,在HeightField的基础上添加各种节点来修改地形:

03 - 添加heightfield noise节点给地形以起伏,可以修改Noise的类型:

还可以添加heightfield blur(模糊)、heightfield distort(扭曲)等节点来调整效果:

04 - 使用heightfield mask by feature来按照坡度、高度等条件来mask出相关区域,这些条件可以并存;比如用坡度条件mask出区域:

05 - 在以上基础上,使用heightfield slump节点让所选区域产生塌落效果,这样可以产生出标注冲刷区域的flow mask(按住鼠标中键点击节点可显示节点详细信息,可见heightfield slump节点影响 了Mask layer,并输出了Flow和Flow Direction layers):

06 - 使用Heightfield Remap节点让输出的Flow值归一化,Layer to Remap参数选择Flow > 点击Compute Range按钮 > 设置Output Max值为1 ;使用Heightfield Mask Clear清理掉刚才生成的Mask Layer中的信息,方便以下做新的Mask:

07 - 同理,继续做新的Mask:添加heightfield mask by feature来mask所需的区域,这次使用heightfield copy layer节点把mask结果保存到一个新的名为GT的layer中去,鼠标中键点击heightfield copy layer节点可见其生成了新的layer:

然后仍然使用Heightfield Mask Clear清理掉Mask Layer中的信息,方便以下的制作;
08 - 再利用Mask Layer制作新的Layer,使用heightfield mask by feature节点Mask by Slope Mask by Curvature参数mask出地形的“高光边”,这样一张地形peaks的mask可以作为细节mask使用在很多地方,同样把Mask Layer的信息通过heightfield copy layer节点复制到一个名为Peaks的新建Layer中去,再Heightfield Mask Clear清理掉Mask Layer中的信息:

09 - 做好了以上三个Layer之后(Flow、GT、Peaks),使用heightfield visualize节点利用颜色让各个Layer可视化,首先在节点的参数面板重新Compute Range,使之匹配现有的heightfield;然后在不同颜色中选择各自的Layer:

可以调整各个Layer的颜色,还可以通过Height Ramp调整其它区域的由高度改变的渐变色:

10 - 可以在之前的Shape the Terrain部分之后添加Heightfield Remap节点来重新调整地形高度,当然首先还是在节点的参数面板重新Compute Range,通过Output Min和Output Max的值来修改高度输出;然后可以通过Remap来设置高度变化曲线(下图的参数是让地形中段有一个平直的区域):

10 - 在以上的Heightfield Remap节点后再添加heightfield erode节点来演算地形的侵蚀效果,演算方式是激活节点后,在参数栏的Visualization中重新Compute Range:

然后直接播放即可自动生成侵蚀过程的动画帧:

可以使用任何一帧作为运算结果;heightfield erode节点会生成多个Layer,包括water layer,把water layer与heightfield visualize节点中的Layer3关联起来,以显示出侵蚀所形成的湖泊地形颜色:


在heightfield erode节点的Advanced面板,有降水量等参数可供调整:

11 - 然后开始在地形的特定区域生成Scatter points,方便生成树木等类似物件; 特定的区域还是使用heightfield mask by feature节点把Slope Angle在0~50范围且Height在一定范围的区域选择出来;选择出来的是在第十个步骤中利用Remap节点制作出的平直区域;之后添加heightfield scatter节点来生成Points,注意输入的时候需要同时输入heightfield和Mask 信息(节点中有点熟悉相关信息,取消掉Match Normals with Terrain来让Points的法线不贴合地形,模拟树的垂直形态):

这样就在特定区域生成了Points:

12 - 使用copy to points把不同的Mesh放置到Points上,这里使用一个上色的tube来模拟简单的树木:

然后使用Merge节点把copy to points的结果和地形的heightfield visualize结合起来,才能同时观察地形和所添加的tube;在heightfield scatter节点之后还可以使用point节点来修改所生成的Points的各项属性:

13 - 这样就完成了一个基本地形的制作;下面把地形导入到UE4引擎;这里需要借助Houdini Digital Asset(HDA)来完成;选中所有节点,点击Create Subnet from Selected按钮生成subnet:

然后对生成的subnet右键,选择生成Digital Asset:

接下来会出现更改文件名等配置选项,保存为HDA文件即可;
导入UE4:
14 - 安装了Houdini插件之后,UE4可以直接Import进来HDA文件:

直接把导入的文件拖入到场景中,即可自动生成相关对象:

15 - UE4场景中,可以自由修改相关对象,以上,即为完整的地形相关的Houdini - UE4流程:

16 - 假如需要修改HDA文件中的节点,直接打开相关文件进行编辑,如果被锁定,可以右键让其可编辑:

编辑完成后,右键重新保存,覆盖原HDA文件:

UE4中Reimport这个HDA文件后,在场景中重新Rebuild一下即可完成更新:

全部评论

暂无留言,赶紧抢占沙发
热门资讯

专访|王氏教育集团康海威老师:国民手游《王者荣耀》曹操高低模打造者...

原画绘画风格,你知道几种?

《口袋奇兵》海外月流水居然超2亿?

现有的绘画手法分类你都认识那些?

如何理清 C# 委托、事件、Action、Func?

男孩学什么专业特长好就业?

女孩中考成绩不好学什么专业?

活动中奖结果公布!快来看看有木有你~

【干货】Mono和IL2CPP的区别



