Heron
返回作品

PCG:马路、森林与载具

基于地形的程序化道路生成工具链:Houdini 成本场寻路 + UE5 样条编辑工具 + 自动地形材质,整合原生赛车系统展示成果。

PCG技术美术HoudiniUE5工具开发

职责

技术策划(工具向)

引擎

Houdini + UE5

团队

个人项目

周期

2024.10

背景与目标

程序化生成技术广泛应用于大型开放世界游戏和独立游戏中,我希望将其纳入作品集并作为未来研究的重点方向。本项目专注于基于地形的程序化道路生成:为提升视觉效果,采用地形驱动的材质分配,以及受《Electric Dream》启发的节点编辑技术,并整合 Unreal Engine 原生赛车系统展示最终效果。

孤岛惊魂的道路设计参考
参考:《孤岛惊魂》
幽灵行动荒野的开放世界道路参考
参考:《幽灵行动:荒野》
风格与氛围参考
风格与氛围参考

Houdini 路径生成算法

成本场(Cost Field)设计——对地形上的每个网格点按多种因素赋权,路径沿低成本区域生成:

  • Slope cost:直接使用网格点的法线单位向量,法线点积与坡度负相关,坡度越陡成本越高
  • Ascend / Descend cost:基于相邻点连线(微积分方法)计算表面坡度,坡度大则成本高
  • Convexity / Concavity cost:用 measure_curvature 节点区分凸起与凹陷——河流生成在凹度大的地方,兽径生成在切面倾斜低的地方
  • User attribute / Slump cost:用 heightfield_maskbyfeature 将坡度超过阈值的点归类为悬崖
曲率成本可视化
曲率成本可视化:红色为凸起、绿色为凹陷
悬崖遮罩可视化
悬崖遮罩:坡度超过阈值的点被标记为红色

Remesh 优化:Houdini 内置 Remesh 节点在高度图划分过细时系统开销过高;改用自定义网格(Custom Mesh)对高度场做三角剖分,密度控制更精确,计算时间显著减少。

Houdini 内置 Remesh 节点效果
内置 Remesh:网格过密,计算开销高
自定义网格三角剖分效果
Custom Mesh 三角剖分:密度可控,计算显著提速

Spline 序列化:支持多起始点与多终点,可定义多条互不相连的路径。

多路径生成结果一
依据成本场生成的多条路径
多路径生成结果二
多起点 / 多终点的路径网络

Unreal 样条编辑工具

通过 Public API 在 Unreal 中实例化 Houdini Actor、获取参数并触发 recook,实现"删除源路径 → 重渲染新路径"的编辑循环:

  • 左键单击创建新样条点或在线段中插入样条点;Ctrl + 左键删除选中样条点
  • 为样条创建 Gizmo,可直接在 Unreal 中调整
  • Worldtrace(自定义函数):拖动样条点时保持吸附地形
  • Snap to Ground(自定义函数):重渲染路径时样条点自动吸附地形
创建与插入样条点
左键创建 / 插入样条点
样条 Gizmo 编辑
Gizmo:白线为用户样条,绿线为生成路径
recook 重新生成路径
调整后 recook,路径沿新样条重新生成
样条点吸附地形
Snap to Ground:样条点始终吸附地形表面

自动地形材质

依据 Houdini 输出的地形遮罩与命名规则,在 Unreal 中创建材质序列并依次赋予材质,兼容路径工具与地形材质(人造马路、兽径、河流等在 Houdini 中暴露 paint layer 参数供选择)。视觉优化:摄像机接近地面时降低贴图密度、远景时增加纹理密度,减少重复感(fade distance 对比 1000 / 5000)。

地形材质自动混合
基于地貌层的材质自动分配与混合
路径材质层
路径区域自动写入对应 paint layer

Electric Dream 资产包适配

整合 Electric Dream PCG 资产包并手动调整节点,符合本项目的地形与道路生成规则:

  • 将植被生成高度限制在特定范围内
  • 调整点位生成逻辑,避免在斜坡上生成树木和大型岩石
  • 根据地貌层过滤道路区域,避免在路面上生成植被
Electric Dream 资产包
Electric Dream PCG 资产包
植被生成结果全景
调整节点后的植被生成:道路区域自动避让

最终成果

完整可用的"Houdini 算法 + UE 编辑工具"路径生成管线,美术可在编辑器内直接调整路径;整合 UE 原生赛车系统进行最终演示。

载具行驶在生成的道路上
整合 UE 原生赛车系统的最终演示
最终成果截图二
最终成果截图三
最终成果截图四
最终成果截图五

© 2026 Heron