手动摆放岩石是让地貌显得自然的最慢方式——而均匀的随机散布是让它显得虚假的最快方式。真实的 岩石分布遵循规则:碎石聚集在坡脚,大型岩体成簇,小石子填满它们之间的空隙。本指南展示一套 把这些规则编码进去的工作流,使用 UE5 中 Numivo 的 Surface Scatter。即便你手动散布,这些思路 也同样适用。
什么是表面散布(surface scattering)?
表面散布是由规则而非逐次点击驱动,将大量网格实例程序化地铺设到地形或几何体上——密度图、 坡度与海拔限制、间距约束以及随机化的变换。做得好,它把数小时的摆放变成数秒的绘制;做得差, 它产出每位玩家都认得的那种“实例浓汤”观感。
第 1 步:构建一个小型岩石物种,而非单个网格
不要散布单个岩石网格。创建一个物种(species)——一个带权重的集合:
- 2–3 个大型主角岩体(权重低,约 5%)
- 4–5 块中型巨石(权重约 25%)
- 6 块以上的小石与碎石(权重约 70%)
权重分布比网格本身更重要。自然界大多是小东西,配以罕见的大型锚点——把它反过来,场景就会 显得人工。
第 2 步:让坡度决定岩石栖身之处
设置一个坡度遮罩,让岩石偏好 15°–55° 的坡面,并在平地上逐渐消退。完美平坦草地上的岩石 看起来像是被摆上去的;紧贴在悬崖与地面过渡处的岩石看起来则有地质感。在 Numivo 里,这就是 物种上的两个滑块;手动时,则是你在摆放过程中要遵循的规则。
第 3 步:聚簇胜过随机
纯随机散布会产生均匀的间距,而均匀的间距在大喊“电脑”。启用聚簇,让实例聚集成彼此留有空隙的 组:对巨石而言,聚簇半径约 400–600 cm、每簇 3–7 个实例是不错的起点。然后针对你的树木物种 加一条 Avoid 规则(岩石很少紧贴树干),再加一条 Attract 规则,把小碎石拉向大型岩体 ——大岩石周围那圈“碎石裙边”正是大多数散布场景所遗漏的细节。
第 4 步:随机化正确的变换
- Yaw(偏航):始终完整 360°。
- Scale(缩放):0.8–1.3 非均匀,好让轮廓有所变化。
- Roll/Pitch(翻滚/俯仰):落地岩石仅 ±8°——大幅随机倾斜会显得漂浮。
- Sink(下沉):把实例埋入地形 5–15 cm。岩石是坐在地上而不是嵌入地里,这是最常见的 破绽。
第 5 步:保持性能,烘焙为实例
散布工具的价值在这里见分晓。Numivo 把结果烘焙为 Hierarchical Instanced Static Meshes (或按你所选的植被实例)——这些是原生的 UE5 资产,会合批为寥寥几次 draw call,能配合 Nanite, 并以零运行时插件开销发布。一片有 2 万块岩石的山坡会变成几批实例化批次;你的构建里根本 不含 Numivo 代码。
两条性能经验法则:
| 场景 | 建议 |
|---|---|
| 岩石 < 1 m,数量多 | 植被实例 + 激进的剔除距离 |
| 主角岩体,可行走 | 使用 Nanite 网格的 HISM,不剔除 |
在真实的山坡上试试
上面整套工作流第一次约需 10 分钟,等你的物种预设建立起来后约 90 秒即可。免费层 包含无时间限制的核心散布,所以你今天就能在自己的地貌上测试。若你卡住了,文档覆盖 每一个参数,而 Discord 里满是分享自己物种预设的人。