Bắt đầu từ đâu khi xây dựng trình chỉnh sửa địa hình 3D? [đóng cửa]


22

Tôi đang tìm cách xây dựng (để bắt đầu) một công cụ đơn giản, có thể nâng, hạ, làm mịn và kết cấu địa hình.

Vì vậy, những điều tôi phải trải qua để làm trình chỉnh sửa địa hình như vậy là gì?

Và có thể có những tài nguyên có giá trị về chủ đề này?

Có, quên đề cập rằng tôi quan tâm đến trình chỉnh sửa địa hình 3D.

Câu trả lời:


24

Đối với trình chỉnh sửa địa hình 3D 'cổ điển', các bước có thể là:

Tạo một lưới (ví dụ: một lưới các hình vuông, mỗi hình vuông được tạo bởi hai hình tam giác), tất cả các đỉnh được chia sẻ giữa các hình tam giác (sao cho chỉ có một bình thường trên mỗi giao điểm). nhập mô tả hình ảnh ở đây

Điều này nên được thực hiện 3DMesh và hiển thị trong chương trình của bạn.

Tạo một công cụ để nâng và hạ (các phần nhỏ hơn và lớn hơn) của lưới (bạn cần tính toán vị trí trên lưới của con trỏ chuột và sửa đổi các đỉnh của lưới, nhưng chỉ lên và xuống).

Tạo một kết cấu lớn (như 1024x1024x4 hoặc tốt hơn) và kết cấu nó với cái được gọi là bản đồ splat: nhập mô tả hình ảnh ở đây

Làm cho nó có thể vẽ nó (với R, G, B HOẶC Alpha, không phải màu hồng chẳng hạn) và chọn họa tiết thay thế những màu cơ bản xấu xí đó (Đỏ, Xanh lam, Xanh lục, Alpha) hoặc hơn thế nữa, được thể hiện bằng chúng:

Trình tạo bóng (mà bạn sẽ cần tạo) nên nhân các kết cấu đẹp đó (ví dụ như đá, cỏ, ...) với cường độ trong biểu đồ (ví dụ xấu xí) và sau đó trộn lẫn với nhau để có vẻ như, ví dụ (với chỉ thích 2 màu), như thế này: nhập mô tả hình ảnh ở đây

Xin lỗi vì những hình ảnh lớn, tôi đã cùng nhau làm việc này ...


Ah, điều này làm cho nó rõ ràng hơn một chút. Về mặt lý thuyết, sau lưới 3D, nó chỉ đơn giản là định vị lại đỉnh (lên / xuống) và kết cấu trong ví dụ này bạn đã thực hiện theo cách "splatmap", sau đó trình đổ bóng có giống với địa hình "3D" không?
joltmode

1
Đúng cho lưới 3D. Trình tạo bóng không làm gì đặc biệt với lưới (trình tạo bóng đỉnh), công việc lớn nằm ở trình phân mảnh ("trình tạo bóng pixel") trong đó việc tra cứu texel từ biểu đồ cho biết bao nhiêu cỏ, đá, v.v. sẽ nhận được (tất nhiên bạn cũng có thể có kết cấu 'cơ sở', ví dụ như đá luôn ở mức 100% và các kết cấu khác được văng lên trên nó).
Valmond

6

Điều đầu tiên là phải rõ ràng về cấu trúc dữ liệu của địa hình của bạn và những gì bạn muốn từ một biên tập viên. Có phải là một lưới? Một mảng cao? Một số loại hệ thống voxel kiểu Minecraft? Bạn có cần thêm các tính năng địa hình dạng lưới như cây cối và các tòa nhà không? Thủ công, tự động hay cả hai? Tôi có thể đi, nhưng bạn có được ý tưởng.

Trình chỉnh sửa địa hình cơ bản không khó viết, nhưng các chi tiết sẽ thay đổi rất nhiều tùy thuộc vào trò chơi bạn đang thực hiện và do đó loại địa hình bạn muốn thực hiện.


Chà, một chiều cao lưới / mảng og / voxels, v.v. chỉ là một cách để lưu trữ dữ liệu được phân loại, tôi quan tâm nhiều hơn, về cách viết các công cụ để điền dữ liệu này. Trên thực tế, tôi hoàn toàn không biết, một biên tập viên địa hình trông như thế nào "đằng sau hậu trường". Tôi có thể hoàn nguyên kỹ sư đó, nhưng chỉ theo cách của riêng tôi, tôi cá là có một số nguyên tắc tôi nên tuân theo ...
joltmode

2
-1. Điều này không giống như nhiều câu trả lời cho tôi. Bạn đang hỏi một số câu hỏi, mà sẽ phù hợp hơn như là một nhận xét.
bummzack

5

Đây chỉ là phần tiếp theo cho phản hồi của Valmond, nhưng dường như không đủ ngắn để thêm vào như một nhận xét.

Khi bạn bắt đầu tạo một trình chỉnh sửa cơ bản, bạn có thể muốn thử nghiệm bằng cách tạo hoàn toàn sơ đồ chiều cao trên GPU. Điều này là hoàn toàn tùy chọn nhưng đó là một cách tốt để giảm tải công việc cho GPU cho địa hình thay đổi liên tục. Valmond đã đề cập đến việc ghép hình kết cấu đang được thực hiện trên trình đổ bóng pixel, nhưng trình tạo bóng đỉnh cũng có thể được sử dụng, bằng cách sử dụng tra cứu kết cấu để nâng và hạ các đỉnh trong lưới. Đây là một hướng dẫn về cách thực hiện điều này với trình tạo bóng đỉnh. Các công cụ không tạo bóng cụ thể là C # và XNA cụ thể, nhưng công cụ quan trọng nằm trong mã shader.

Trong trường hợp này, mã của bạn ở phía CPU sẽ chỉ xử lý sửa đổi kết cấu thang độ xám được lưu trữ trong bộ nhớ. Lưới lưới của bạn vẫn phẳng, các đỉnh không được CPU cập nhật. Mỗi khi thay đổi kết cấu, kết cấu mới có thể được truyền cho GPU.

Hãy nhớ rằng không phải tất cả các mô hình đổ bóng đều hỗ trợ lấy mẫu kết cấu trên trình tạo bóng đỉnh (ví dụ trong HLSL, bạn cần ít nhất là mô hình đổ bóng 3.0).


0

Bạn có thể xem ETM của Ogre http://www.ogre3d.org/addonforums/viewforum.php?f=16 , sẽ cung cấp cho bạn một số ý tưởng. Artifex Terra dựa trên nó nếu bạn muốn thấy nó hoạt động.


2
Tôi đề nghị bạn hợp nhất câu trả lời của bạn và xóa những câu không sử dụng.
joltmode

Đối với GPU được tạo / thao tác trên địa hình, hãy xem các bài viết về Scape của Gilliam de Carpentier, đọc rất nhiều thông tin về chủ đề này. decarpentier.nl/scape-render
Johann

Như Tom đã đề xuất, các bài viết về Scape có thể đã được sử dụng như một tài liệu tham khảo thú vị về việc tạo và hiển thị địa hình. Nhưng từ đề xuất đó, tôi đã đăng một bài viết khác về Scape thậm chí còn phù hợp hơn với chủ đề này, bao gồm đầy đủ đường ống chỉnh sửa dựa trên bàn chải của nó. Vì vậy, tôi mặc dù tôi sẽ cho bạn biết. www.decarpentier.nl/scape-brush-pipeline
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.