Tất cả bài viết
Hướng dẫn · 3 min read

Cách rải đá trong Unreal Engine 5: nhanh, đáng tin, hiệu năng tốt

Một quy trình scattering UE5 thực tế, vẽ mật độ, mask độ dốc, quy tắc loài và clustering, vẫn giữ hiệu năng tốt vì mọi thứ được bake thành instance.

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

Đặt đá bằng tay là cách chậm nhất để khiến một khung cảnh trông tự nhiên, và scatter ngẫu nhiên đồng đều là cách nhanh nhất để khiến nó trông giả. Việc đặt đá thực tế tuân theo quy tắc: mảnh vụn tụ ở chân dốc, các khối lớn kết cụm, đá nhỏ lấp đầy khoảng trống giữa chúng. Hướng dẫn này trình bày một quy trình mã hóa những quy tắc đó, dùng Surface Scatter của Numivo trong UE5. Các ý tưởng vẫn áp dụng được ngay cả khi bạn rải bằng tay.

Surface scattering là gì?

Surface scattering là việc đặt nhiều instance mesh lên terrain hoặc geometry một cách thủ tục (procedural), điều khiển bằng quy tắc thay vì từng cú nhấp chuột: bản đồ mật độ, giới hạn độ dốc và độ cao, ràng buộc khoảng cách và các transform ngẫu nhiên. Làm đúng, nó biến hàng giờ đặt thủ công thành vài giây vẽ. Làm sai, nó tạo ra cái nhìn "súp instance" mà người chơi nào cũng nhận ra.

Bước 1: Xây một loài đá nhỏ, không phải một mesh

Đừng rải một mesh đá duy nhất. Hãy tạo một loài (species), một tập có trọng số:

  • 2–3 khối hero lớn (trọng số thấp, ~5%)
  • 4–5 tảng đá cỡ trung (trọng số ~25%)
  • 6+ viên đá nhỏ và mảnh vụn (trọng số ~70%)

Phân bố trọng số quan trọng hơn bản thân các mesh. Thiên nhiên chủ yếu là những thứ nhỏ với vài điểm neo lớn hiếm hoi; đảo ngược điều đó và khung cảnh sẽ đọc thành nhân tạo.

Bước 2: Để độ dốc quyết định nơi đá cư ngụ

Đặt một mask độ dốc để đá ưu tiên các độ nghiêng 15°–55° và thưa dần trên vùng phẳng. Đá trên một đồng cỏ phẳng lì trông như được đặt vào; đá ôm lấy vùng chuyển tiếp giữa vách đá và mặt đất trông có tính địa chất. Trong Numivo đây là hai thanh trượt trên loài; khi làm tay, đây là quy tắc bạn tuân theo trong lúc đặt.

Bước 3: Clustering thắng ngẫu nhiên

Scatter thuần ngẫu nhiên tạo khoảng cách đều, và khoảng cách đều hét lên "máy tính". Bật clustering để các instance tụ thành nhóm với khoảng trống ở giữa: với tảng đá, bán kính cụm khoảng 400–600 cm với 3–7 instance mỗi cụm là điểm khởi đầu tốt. Rồi thêm một quy tắc Avoid với loài cây của bạn (đá hiếm khi ép sát vào thân cây) và một quy tắc Attract kéo mảnh vụn nhỏ về phía các khối lớn: cái "tạp dề mảnh vụn" quanh những tảng đá lớn chính là chi tiết mà hầu hết cảnh rải bỏ sót.

Bước 4: Ngẫu nhiên hóa đúng transform

  • Yaw: trọn 360°, luôn luôn.
  • Scale: 0,8–1,3 không đồng đều, để bóng dáng đa dạng.
  • Roll/pitch: chỉ ±8° cho đá đã bám đất; độ nghiêng ngẫu nhiên lớn trông như đang lơ lửng.
  • Sink: chôn instance sâu 5–15 cm vào terrain. Một tảng đá nằm trên mặt đất thay vì trong đất là dấu hiệu lộ tẩy phổ biến nhất.

Bước 5: Giữ hiệu năng, bake thành instance

Chính ở đây các công cụ scatter chứng minh giá trị, hoặc không. Numivo bake kết quả thành Hierarchical Instanced Static Meshes (hoặc instance foliage, tùy bạn), các asset UE5 native gộp lại thành một nhúm draw call, hoạt động với Nanite và phát hành với chi phí plugin runtime bằng không. Một sườn đồi 20.000 viên đá trở thành vài batch được instance hóa; bản build của bạn hoàn toàn không chứa mã Numivo.

Hai quy tắc kinh nghiệm về hiệu năng:

Tình huốngKhuyến nghị
Đá < 1 m, số lượng lớnInstance foliage + khoảng cull mạnh tay
Khối hero, đi bộ đượcHISM với mesh Nanite, không cull

Thử trên một sườn đồi thật

Toàn bộ quy trình trên mất khoảng 10 phút lần đầu và khoảng 90 giây một khi các preset loài của bạn đã tồn tại. Gói miễn phí bao gồm scatter cốt lõi không giới hạn thời gian, nên bạn có thể thử ngay hôm nay trên khung cảnh của mình. Nếu bí, tài liệu bao quát mọi tham số, và Discord đầy những người chia sẻ preset loài của họ.