Làm thế nào tôi có thể tạo ra những địa hình cực kỳ lớn trong Unity? Có vẻ như tôi có thể đặt chiều rộng và chiều dài thành giá trị lớn. Nhưng độ phân giải Chiều cao chỉ lên tới 4097 và Độ phân giải chi tiết chỉ lên tới 4048.
Có ý kiến gì không?
Làm thế nào tôi có thể tạo ra những địa hình cực kỳ lớn trong Unity? Có vẻ như tôi có thể đặt chiều rộng và chiều dài thành giá trị lớn. Nhưng độ phân giải Chiều cao chỉ lên tới 4097 và Độ phân giải chi tiết chỉ lên tới 4048.
Có ý kiến gì không?
Câu trả lời:
Chia địa hình thành các "khối" vuông, tải những người bạn quan tâm (chủ yếu: Những người ở gần máy ảnh hiện đang hoạt động) trong Cập nhật () và - nếu bạn bị buộc không gian (có thể bạn sẽ bị), hãy dỡ những thứ không cần thiết ở xa .
Sử dụng các mô hình low-poly được tính toán trước cho LoD địa hình xa, trừ khi bạn không có khoảng cách xem thấp. Ngoài ra, nếu bạn cần bản đồ độ cao địa hình của địa hình ở xa cho mọi thứ (như chuyển động NPC hoặc một số mô phỏng khác), hãy tạo một biến thể độ phân giải thấp hoặc độ phân giải biến đổi của địa hình để lưu trong bộ nhớ; không sử dụng dữ liệu địa hình đầy đủ cho nó. Điều này có thể được thực hiện tự động khi tải trò chơi, nhưng nói chung, nên tạo một công cụ tạo dữ liệu được tạo trước này trong quá trình xây dựng hoặc gói.
Cuối cùng: Để tránh các vấn đề chính xác về điểm nổi, bạn sẽ phải định vị lại toàn bộ cảnh mỗi khi máy ảnh chính của bạn di chuyển ra xa (0,0f, 0,0f, 0,0f).
Câu hỏi có thể có liên quan về Câu trả lời của Unity http://answers.unity3d.com/questions/17225/dynamic-terrain-loading.html
Bạn sẽ cần phải phá vỡ các địa hình trong khối, tức là. một vài địa hình nhỏ hơn. Bạn sẽ cần phải 'tạo đường nối' cho nhau một lần nữa (với một tập lệnh) để không có 'lỗ hổng' giữa chúng nhưng nếu không, bạn có thể bắt đầu thực hiện chúng ngay lập tức.
Bạn cũng có thể muốn biết rằng vì Unity3D ~ 3.0 bạn không thể di chuyển vật phẩm (đọc địa hình và vật phẩm) quá xa (như +/- 100000 bước IIRC) nên điều này sẽ ảnh hưởng đến kích thước tối đa của thế giới của bạn.
Dù sao tôi cũng đang sử dụng điều này trong trò chơi RPG trực tuyến của mình (ngoại trừ tôi chỉ sử dụng Unity3D cho thiết kế cấp độ, không phải cho trò chơi thực tế).
Chỉ vì tôi tò mò, bạn có muốn chia sẻ một số thông tin về trò chơi của bạn (như sự tiến bộ, loại hình, đồ họa, phong cách, v.v.) không?
Chúng tôi đã triển khai các địa hình khổng lồ trong Unity5 bằng cách xử lý dữ liệu SRTM cho toàn bộ trái đất thành các bản đồ chiều cao cho TerrainData
các đối tượng có các Mức chi tiết khác nhau [1]. Có một vài điều cần xem xét:
Các cạnh của bản đồ chiều cao cần chồng chéo ít nhất một mẫu và bạn cần định vị địa hình cho phù hợp. Terrain.SetNeighbors
sẽ không kết nối lưới, chỉ chiếm các mức độ chi tiết khác nhau được thực hiện bởi Unity.
Bạn, nhất thiết, cần 2 ^ n + 1 mẫu chiều cao cho mỗi TerrainData
đối tượng, nếu không, Unity sẽ chỉ gán chiều cao bằng 0 cho các phần chưa đặt.
Nếu bạn có ít hơn 2GB TerrainData
, bạn có thể thoát khỏi việc có chúng dưới dạng Tài sản trong thư mục Tài nguyên và Resource.Load
chúng khi chạy. Nếu bạn có nhiều hơn 2GB thì phương pháp này sẽ không còn hoạt động nữa vì không thể có nhiều hơn 2GB tài nguyên với các bản dựng Unity. Trong trường hợp này, bạn sẽ cần xây dựng AssetBundles và tải chúng không đồng bộ với WWW
đối tượng. Điều này có tác dụng phụ không mong muốn khi gọi Shader.Parse
cho mỗi người với tổng chi phí khoảng 500ms. Tôi đã báo cáo điều này trên các diễn đàn [2] và vẫn đang chờ hồi âm. Tôi sẽ gửi một báo cáo lỗi cuối cùng.
Đừng nghĩ về việc sử dụng AssetDatabase.LoadAssetAtPath
, nó chỉ có sẵn trong trình chỉnh sửa và không có trong các bản dựng Unity.
[1] https://www.youtube.com/watch?v=2UsyVuWoFbQ
[2] http://forum.unity3d.com/threads/shader-parse-delays-loading-of-assetbundle-contained-no-shader .358235 /
Có giải pháp của bên thứ ba.
mã này có thể tạo ra các địa hình có chiều rộng 99.999 mét, các ngọn núi là bất kỳ công thức tiếng ồn nào, nhưng bạn có thể trộn 100 công thức tiếng ồn vào một bản đồ nếu bạn muốn. ví dụ, trong địa hình này, tổng số hình tam giác có sẵn trong bản đồ là từ 66 triệu, độ phân giải thấp và độ phân giải trung bình 200 triệu. đây là bản đồ tam giác 66 triệu, trong đó 0,7 triệu tam giác được cập nhật xung quanh camera. địa hình khổng lồ unityplayer, WASD và không gian
Tôi sẽ khuyên bạn nên tải địa hình của bạn trong khối. Bằng cách sử dụng các địa hình nhỏ hơn và có lẽ tập lệnh của bạn có thể kiểm tra xem bạn có ở gần địa hình nhất định hay không bằng cách sử dụng biến đổi.poseition - hell.transform.poseition. Tôi thực sự đã viết một bài đăng trên blog về cách tối ưu hóa toàn bộ trò chơi của bạn và tôi đã nói về tải chunk. Hi vọng điêu nay co ich.