所有文章
教學 · 3 min read

如何在 Unreal Engine 5 中散佈岩石:快速、可信、效能好

一套實用的 UE5 散佈工作流(密度繪製、坡度遮罩、物種規則與聚簇),因為一切都烘焙為實例,所以始終保持高效能。

Illustration of a circular scatter brush placing rocks on a ground plane

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