PCG:马路、森林与载具
基于地形的程序化道路生成工具链:Houdini 成本场寻路 + UE5 样条编辑工具 + 自动地形材质,整合原生赛车系统展示成果。
职责
技术策划(工具向)
引擎
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)对高度场做三角剖分,密度控制更精确,计算时间显著减少。


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


Unreal 样条编辑工具
通过 Public API 在 Unreal 中实例化 Houdini Actor、获取参数并触发 recook,实现"删除源路径 → 重渲染新路径"的编辑循环:
- 左键单击创建新样条点或在线段中插入样条点;Ctrl + 左键删除选中样条点
- 为样条创建 Gizmo,可直接在 Unreal 中调整
- Worldtrace(自定义函数):拖动样条点时保持吸附地形
- Snap to Ground(自定义函数):重渲染路径时样条点自动吸附地形




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


Electric Dream 资产包适配
整合 Electric Dream PCG 资产包并手动调整节点,符合本项目的地形与道路生成规则:
- 将植被生成高度限制在特定范围内
- 调整点位生成逻辑,避免在斜坡上生成树木和大型岩石
- 根据地貌层过滤道路区域,避免在路面上生成植被


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





© 2026 Heron