手動擺放岩石是讓地貌顯得自然的最慢方式——而均勻的隨機散佈是讓它顯得虛假的最快方式。真實的 岩石分佈遵循規則:碎石聚集在坡腳,大型岩體成簇,小石子填滿它們之間的空隙。本指南展示一套 把這些規則編碼進去的工作流,使用 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 裡滿是分享自己物種預設的人。