工具概述
在 Houdini 中开发的道路生成 HDA。在 Unreal Engine 中直接编辑样条曲线,即可控制道路走向和车辙形态。道路两侧可配置岩石、树木和碎石等环境元素,调整资源类型、数量和缩放比例。路径变化时,地形会随之抬高、平整或雕刻,环境元素自动避让,保证道路与环境自然衔接。
道路路径与地形投射
用 Curve 节点绘制道路路径,通过 Sweep 扩展为带菱形截面的几何体,模拟道路截面结构。再用 HeightField Project 将其投射到地形上,并与原始地形做 Minimum 运算,得到与地形自然融合的基础路面。
方向性地形与植被遮罩
为还原参考图中“南低北高”的地势,在原始地形上生成一个方向性渐变遮罩,用滑块控制褶皱的分布范围,实现从南向北逐渐抬升。该遮罩再与 HeightField Pattern 结合,叠加有节奏的起伏。植被只生长在较高且平缓的区域,因此用 HeightField Mask by Feature 结合坡度与高度条件生成树木分布遮罩,排除陡坡和低洼处。
查看 VEX 代码 · heightfield_wrangle2
生成方向性渐变遮罩:按位置把地形从一端到另一端映射为 0–1,再用 Ramp 曲线调整渐变形状,控制地势抬升的范围。
float ramp = fit( @P.z, -200, 200, 0, 1 );
@mask *= chramp( "ramp", ramp );树木与岩石分布
基于道路及两侧隆起形成的遮罩进行定向撒点。为了让遮罩中心分布大石块、两侧逐渐过渡为灌木和碎石,没有直接用 Scatter 控制尺寸,而是用 Copy to Points 配合 VEX 表达式,按遮罩梯度动态控制实例尺寸,使大小从中心到边缘平滑过渡。大型岩石会改变地表材质,因此用同样方式为岩石生成独立材质区域,并通过 HeightField Expand Mask 扩大范围,划出与沙地不同的地貌分区。岩石周围再撒布小碎石、灌木和杂草,丰富细节层级。
杂草分布与遮罩整合
杂草使用前面所有遮罩的反向区域,避开树木、岩石和灌木,再做模糊、平滑并适度收缩,打破边缘,形成自然随机的覆盖。最后整合所有点信息与遮罩,排除多余区域,并重新分配和命名材质 ID 与遮罩层,使其与 Unreal Engine 5 中的 Landscape 混合材质对齐。
展示视频

技术内容整理自作者作品集及项目文件。