【转载】Landscape - 从 Houdini 到 UE4 全流程

515 阅读5分钟

原文链接:《Landscape - 从 Houdini 到 UE4 全流程》 | 作者:MoonChildInSky

Houdini 地形生成:

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,并输出了 FlowFlow 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 之后(FlowGTPeaks),使用 heightfield visualize 节点利用颜色让各个 Layer 可视化,首先在节点的参数面板重新 Compute Range,使之匹配现有的 heightfield;然后在不同颜色中选择各自的Layer:

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

10

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

10

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

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

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

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

11

然后开始在地形的特定区域生成 Scatter points,方便生成树木等类似物件; 特定的区域还是使用 heightfield mask by feature 节点把 Slope Angle0~50 范围且 Height 在一定范围的区域选择出来;选择出来的是在第十个步骤中利用 Remap 节点制作出的平直区域;之后添加 heightfield scatter 节点来生成 Points,注意输入的时候需要同时输入 heightfieldMask 信息(节点中有点熟悉相关信息,取消掉 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 一下即可完成更新: