Địa hình chiều cao, Voxel, đa giác (hình học)


15

Liên quan đến các địa hình Chiều cao, Voxel và Đa giác (hình học):

  1. Sự khác biệt chính giữa cả ba là gì?
  2. Bạn có thể tạo thành một địa hình "trơn tru" với Voxels, ý tôi là, ví dụ, bạn có thể có được một ngọn núi mịn với Voxels, hay Voxels bị giới hạn trong các hình khối?
  3. Hiệu suất khôn ngoan, một đơn vị 2000x2000 trên thế giới, điều gì sẽ là địa hình Chiều cao nhanh hơn, địa hình Voxel hoặc dựa trên Đa giác, địa hình hình học? (Giả sử có mức tăng / tối ưu hóa hiệu suất "hợp lý" được thực hiện để hiển thị cho mọi khả năng)
  4. Có thêm kỹ thuật nào được sử dụng để tạo địa hình không?
  5. Bất kỳ tiêu đề tốt đại diện cho từng loại?

Địa hình dựa trên đa giác PS phải được xác định đầy đủ, không có hình vuông.

Câu trả lời:


30

Chiều cao

Với sơ đồ chiều cao, bạn chỉ lưu trữ thành phần chiều cao cho mỗi đỉnh (thường là kết cấu 2D) và chỉ cung cấp vị trí và độ phân giải một lần cho toàn bộ tứ giác. Hình dạng phong cảnh được tạo ra mỗi khung bằng cách sử dụng trình đổ bóng hình học hoặc phần cứng. Bản đồ chiều cao là cách nhanh nhất để lưu trữ dữ liệu cảnh quan để phát hiện va chạm.

Ưu điểm:

  • Sử dụng bộ nhớ tương đối thấp : Bạn chỉ cần lưu trữ một giá trị trên mỗi đỉnh và không có chỉ số. Có thể cải thiện điều này hơn nữa bằng cách sử dụng bản đồ chi tiết hoặc bộ lọc nhiễu để tăng chi tiết nhận thức.

  • Tương đối nhanh : Trình tạo bóng hình học cho các chiều cao nhỏ và chạy nhanh. Nó không nhanh như địa hình hình học.
    Trên các hệ thống không có gia tốc 3D dựa trên tam giác, các phép đo chiều cao di chuyển bằng tia là cách nhanh nhất để kết xuất địa hình. Điều này được gọi là đồ họa voxel trong các trò chơi cũ.

  • LOD / địa hình động : Có thể thay đổi độ phân giải của lưới được tạo dựa trên khoảng cách từ máy ảnh. Điều này sẽ gây ra hình học dịch chuyển nếu độ phân giải giảm quá xa (khoảng 0h40), nhưng có thể được sử dụng cho các hiệu ứng thú vị.

  • Tạo / tạo địa hình dễ dàng : Bản đồ chiều cao có thể dễ dàng được tạo bằng cách trộn các chức năng nhiễu như fractal Perlin Tiếng ồn và trình chỉnh sửa bản đồ chiều cao rất nhanh và dễ sử dụng. Cả hai cách tiếp cận có thể được kết hợp. Họ cũng dễ dàng làm việc với một biên tập viên.

  • Vật lý hiệu quả : Một vị trí nằm ngang ánh xạ trực tiếp đến (thường) một đến bốn vị trí trong bộ nhớ, vì vậy việc tìm kiếm hình học cho vật lý rất nhanh.

Nhược điểm:

  • Chính xác một chiều cao trên mỗi tọa độ x / y : Thường không thể có lỗ trên mặt đất hoặc vách đá nhô ra.

  • Kiểm soát ít hơn : Bạn chỉ có thể kiểm soát chiều cao chính xác của từng điểm nếu kích thước lưới khớp với tọa độ kết cấu.

  • Hiện vật : Nếu bốn đỉnh xác định một tứ giác phụ không nằm trên cùng một mặt phẳng, thì sự phân chia giữa hai đỉnh sẽ hiển thị. Điều này thường xảy ra trên các vách đá dốc với các cạnh không theo hướng hồng y.

Chiều cao là cách hiển thị địa hình hiệu quả nhất từ ​​trước đến nay và được sử dụng trong nhiều trò chơi mới hơn không dựa vào các tính năng địa hình tiên tiến và có khu vực ngoài trời rộng lớn. Wikipedia có một danh sách các chương trình sử dụng bản đồ chiều cao , nhưng tôi không chắc điều đó có nghĩa là chúng chỉ sử dụng chúng làm tài nguyên hay cũng để kết xuất, vì vậy đây là một số trò chơi có khả năng sử dụng chúng:

  • Nguyên nhân 2: Các khu vực được tải trong các khu vực hình vuông và không có lỗ hổng trên địa hình. Trong bản demo, có một lỗ sâu với các hình tam giác kéo dài dọc theo các cạnh nơi thường có một tòa nhà. (Khu vực này thường không thể truy cập được, nhưng có các mod để loại bỏ một số hạn chế của bản demo ...)

  • Sims 2 ( có thể ): Địa hình khu vực lân cận được tải dưới dạng sơ đồ chiều cao, nhưng có những lỗ hổng nơi đặt lô (tòa nhà). Tuy nhiên, có những đồ tạo tác điển hình nếu bạn tạo ra nhiều vách đá, và thật tẻ nhạt khi thêm một hầm vào một ngôi nhà (và giấu vách đá dưới một mái hiên).

  • Các trò chơi động cơ nguồn của Valve: Bàn chải hình chữ nhật (hình học mức tĩnh) có thể có địa hình chiều cao trên khuôn mặt của chúng. Trong các trò chơi này, các quirks thông thường thường được ẩn bằng các cọ hoặc đạo cụ khác.

Không thể chắc chắn mà không nhìn vào các bóng đổ vì mọi địa hình chiều cao có thể được hiển thị dưới dạng lưới.

Voxels

Địa hình Voxel lưu trữ dữ liệu địa hình cho từng điểm trong lưới 3D. Phương pháp này luôn sử dụng lưu trữ nhiều nhất trên mỗi chi tiết bề mặt có ý nghĩa, ngay cả khi bạn sử dụng các phương pháp nén như quãng tám thưa thớt.

.

Ưu điểm:

  • Dữ liệu 3D liên tục : Voxels là cách hiệu quả duy nhất để lưu trữ dữ liệu liên tục về các tính năng địa hình ẩn như tĩnh mạch quặng.

  • Dễ dàng sửa đổi : Dữ liệu voxel không nén có thể được thay đổi dễ dàng.

  • Các tính năng địa hình nâng cao : Có thể tạo phần nhô ra. Đường hầm được liền mạch.

  • Tạo địa hình thú vị : Minecraft thực hiện điều này bằng cách phủ các hàm và độ dốc với các tính năng địa hình được xác định trước (cây cối, ngục tối). (Đọc Tạo địa hình, Phần 1 trong blog của Notch để biết thêm thông tin. Không có phần 2 kể từ ngày 05.8.2011.)

Nhược điểm:

  • Chậm : Để hiển thị dữ liệu voxel, bạn phải sử dụng công cụ dò tia hoặc tính toán lưới, ví dụ với các hình khối diễu hành (Sẽ có các tạo tác). Voxel lân cận không độc lập cho việc tạo lưới và các shader phức tạp hơn và thường tạo ra hình học phức tạp hơn. Kết xuất dữ liệu voxel với LOD cao có thể rất chậm.

  • Yêu cầu lưu trữ lớn : Lưu trữ dữ liệu voxel sử dụng nhiều bộ nhớ . Vì lý do này thường không thể tải dữ liệu voxel vào VRAM vì lý do này, bạn phải sử dụng kết cấu nhỏ hơn để bù cho dữ liệu đó, ngay cả trên phần cứng hiện đại.

Việc sử dụng voxel cho các trò chơi không dựa vào các tính năng của voxel như địa hình biến dạng là không thực tế, nhưng nó có thể cho phép cơ chế trò chơi thú vị trong một số trường hợp. Công cụ Voxel phổ biến hơn trong các trò chơi cũ , nhưng cũng có những ví dụ mới hơn:

  • Động cơ nguyên tử : Kết xuất Voxel.

  • Giun 4: Sử dụng "poxels". Theo Wikipedia, đó là sự pha trộn giữa voxels và đa giác.

  • Minecraft: Sử dụng voxel để thể hiện địa hình trong RAM, đồ họa là đồ họa đa giác. Nó chủ yếu là phần mềm tính toán.

  • Terraria: Một ví dụ cho voxels 2D. Tôi không biết làm thế nào nó ám.

  • Voxels kết hợp với vật lý : Không phải là một trò chơi. nhưng nó độc đáo thể hiện tiềm năng hủy diệt.

  • Voxatron : Một trò chơi sử dụng voxels cho hầu hết tất cả các đồ họa, bao gồm các menu và HUD.

Lưới

Các lưới đa giác là cách linh hoạt và chính xác nhất để lưu trữ và kết xuất địa hình. Chúng thường được sử dụng trong các trò chơi cần điều khiển chính xác hoặc các tính năng địa hình nâng cao.

Ưu điểm:

  • Rất nhanh : Bạn chỉ phải thực hiện phép tính chiếu thông thường trong trình tạo bóng đỉnh. Một shader hình học không cần thiết.

  • Rất chính xác : Tất cả các tọa độ được lưu trữ riêng cho từng đỉnh, vì vậy có thể di chuyển chúng theo chiều ngang và tăng mật độ lưới ở những nơi có chi tiết tốt hơn.

  • Tác động bộ nhớ thấp : Điều này cũng có nghĩa là lưới thường sẽ cần ít bộ nhớ hơn so với bản đồ cao, bởi vì các đỉnh có thể thưa thớt hơn ở các khu vực có ít tính năng nhỏ hơn.
    (Xem Mạng không đều tam giác trên Wikipedia).

  • Không có tạo tác : Lưới được hiển thị nguyên trạng, do đó sẽ không có bất kỳ trục trặc hoặc đường viền trông lạ nào.

  • Các tính năng địa hình nâng cao : Có thể để lại các lỗ hổng và tạo các phần nhô ra. Đường hầm được liền mạch.

Nhược điểm:

  • LOD động kém : Chỉ có thể với các mắt lưới được tính toán trước. Điều này sẽ gây ra "nhảy" khi chuyển đổi mà không có dữ liệu bổ sung để ánh xạ các đỉnh cũ sang mới.

  • Không dễ sửa đổi : Tìm các đỉnh tương ứng với một khu vực cần sửa đổi là chậm.

  • Không hiệu quả để phát hiện va chạm : Không giống như trong dữ liệu chiều cao và dữ liệu voxel, địa chỉ bộ nhớ cho một vị trí nhất định thường không thể được tính trực tiếp. Điều này có nghĩa là logic vật lý và trò chơi phụ thuộc vào hình dạng bề mặt chính xác rất có thể sẽ chạy chậm hơn so với các định dạng lưu trữ khác.

Địa hình đa giác thường được sử dụng trong các trò chơi không có khu vực mở lớn hoặc không thể sử dụng địa hình chiều cao do thiếu độ chính xác và nhô ra. Tôi không có một danh sách, nhưng tôi khá chắc chắn rằng

  • mọi Zelda 3D và

  • mỗi trò chơi 3D Mario

dùng cái này.

Các phương pháp khác

Có thể tạo địa hình hoàn toàn trong đường ống đổ bóng. Nếu thuật toán chỉ chạy trong shader mảnh / pixel, chi tiết có thể hầu như không giới hạn trong khi tác động bộ nhớ gần như bằng không. Nhược điểm rõ ràng là hầu như không kiểm soát được hình dạng và các vấn đề khi máy ảnh giao với bề mặt kết xuất ban đầu. Nó vẫn hữu ích trong các trò chơi không gian nơi người chơi không tương tác với bề mặt của một hành tinh. Hoạt ảnh tham số hoạt động tốt nhất với loại địa hình này.

Có thể tải xuống hình dạng địa hình đã tạo từ card đồ họa để sử dụng nó cho phần còn lại của công cụ trò chơi, nhưng tôi không biết hiệu suất của nó như thế nào hoặc liệu điều này đã được thực hiện cho đến nay.

Phần kết luận

Không có phương pháp nào hoạt động tốt cho mọi kịch bản, nhưng khá dễ dàng để chọn một phương thức cho một nhiệm vụ nhất định:

  • Chiều cao là giải pháp tốt nhất nếu bạn không cần nhô ra hoặc lỗ trên bề mặt địa hình và sử dụng vật lý hoặc địa hình động. Chúng có khả năng mở rộng và hoạt động tốt cho hầu hết các trò chơi.

  • Lưới có độ chính xác cao nhất và có thể mô tả các phần nhô ra, lỗ và đường hầm. Sử dụng chúng nếu bạn có địa hình phức tạp không thay đổi thường xuyên.

  • Voxels là tốt để mô tả địa hình rất năng động với nhiều tính năng phức tạp. Tránh kết xuất chúng trực tiếp vì chúng cần một lượng lớn bộ nhớ và xử lý.

  • Các phương pháp khác có thể tốt hơn bất kỳ phương pháp nào ở trên nếu bạn không phải tương tác với địa hình hoặc cần đồ họa rất chi tiết. Họ thường chỉ làm việc cho các kịch bản rất cụ thể.

Có thể kết hợp các phương pháp khác nhau để có được các tính năng từ nhiều hơn một, ví dụ bằng cách kết hợp địa hình lưới với sơ đồ chiều cao để tăng cấu trúc chi tiết của một vách đá.

Tạo địa hình động được sử dụng nhiều trong mô phỏng không gian thủ tụcmột số đã trở nên thực sự tiên tiến trong những năm qua . Các diễn đàn của các dự án này nên có một số tài nguyên về chủ đề này.


3
Công cụ nguồn không sử dụng chiều cao cho địa hình của nó. Họ sử dụng các quads được gọi là "Nhà dịch chuyển" developer.valvesoftware.com/wiki/Displocation
Tetrad

1
Đó là một câu trả lời ngọt ngào ở đó, sẽ cho +3 cho câu hỏi này, nếu có thể. Cảm ơn thông tin chi tiết, đánh giá cao.
joltmode

@Tetrad Độ phân giải có sẵn cho các chuyển vị là sức mạnh của hai (một hạn chế phổ biến đối với bộ đệm kết cấu), tọa độ duy nhất được lưu trên mỗi đỉnh là các chiều cao và chiều cao địa hình được hiển thị dưới dạng các hình tứ giác. Wiki cũng cho biết chi phí kết xuất của các chuyển vị thấp hơn so với hình học thông thường. Tôi nghĩ thật công bằng khi cho rằng chúng giống nhau với những cái tên khác nhau.
Tamschi

1
@NickWiggill Ý nghĩa của "voxel" dường như đã thay đổi khá nhiều trong 10 năm qua. Tôi đang đi với định nghĩa Wikipedia hiện tại về các giá trị như các giá trị trên lưới 3D thông thường . Các mục trên Outcast đề cập đến sự khác biệt trong ý nghĩa. Tôi đã thêm vào câu trả lời của mình để làm rõ điều này.
Tamschi

2
Lưu ý bên lề: "Địa hình đa giác" còn được gọi là " Mạng không đều tam giác " ( gọi tắt là "TIN") trong GIS; và nó thường tốn ít bộ nhớ hơn đáng kể so với các chiều cao có cùng độ phân giải hiệu quả, vì nó không bận tâm đến việc ghi dữ liệu không cần thiết hoặc những nơi không có dữ liệu. Trò chơi Gothic đầu tiên đã sử dụng nó (không chắc chắn về những người khác).
Martin Sojka

8

Tôi muốn chỉ ra rằng không có thuật ngữ nào bạn đề cập là loại trừ lẫn nhau - thậm chí bạn có thể có một trò chơi dựa trên voxel sử dụng các chiều cao và kết xuất bằng đa giác.

  1. Bản đồ chiều cao là biểu diễn hai chiều về chiều cao của mặt đất tại mỗi điểm cụ thể. Chúng thường được lưu trữ dưới dạng hình ảnh thang độ xám, trong đó độ sáng đại diện cho chiều cao của điểm đó. Voxels về cơ bản là một bitmap 3D. Có một loạt các kỹ thuật được sử dụng để kết xuất một không gian voxel.

  2. Bạn có thể tạo một địa hình trơn tru bằng voxels và chúng không giới hạn ở các hình khối. Một cách như vậy là sử dụng một thuật toán như diễu hành , có thể chuyển đổi một đại diện voxel thành một danh sách đa giác.

  3. Người có ít hình tam giác nhất sẽ hiển thị nhanh nhất: 3

  4. Các thuật toán Fractal như nhiễu Perlin có thể được sử dụng để tạo cảnh quan với rất nhiều
    chi tiết. Các bề mặt tham số như Nurbs có thể được sử dụng để tạo ra các địa hình trơn tru với ít yêu cầu lưu trữ vĩnh viễn.

  5. Delta Force là một trò chơi cũ sử dụng voxels. Minecraft có thể sử dụng bộ lưu trữ voxel để thể hiện cảnh quan (không chắc chắn). Sacrifice by Shiny là một trò chơi sử dụng chiều cao để tạo hiệu ứng tốt. Hầu hết các trò chơi với phong cảnh sử dụng địa hình hình học.


1
Một lưu ý, ở điểm 3, trong khi GPU chỉ quan tâm đến số lượng đa giác, vẫn có mặt phát sinh hình học của mọi thứ. Tạo hình học cho trường voxel thường là một quá trình chậm hơn (khối / khối diễu hành là cả hai quá trình phức tạp) so với địa hình chiều cao (là một quá trình đơn giản) hoặc dựa trên đa giác (rõ ràng là dữ liệu hình học). Chỉnh sửa: điều này cũng phụ thuộc vào việc bạn dự định địa hình có thể biến dạng hay không.
Michael

Đối với điểm thứ 3 ... Chà, sơ đồ chiều cao vẫn phải được xử lý và chỉ sau đó nó mới tạo thành hình học, phải không? Hãy nhớ rằng, một lưới đa giác sẽ nhanh hơn một chút? Bạn có thể chỉ ra một số kỹ thuật được sử dụng để kết xuất voxels không?
joltmode

2
Bạn có thể sử dụng một shader hình học để tạo lưới từ sơ đồ chiều cao. Bằng cách này, bạn chỉ lưu trữ sơ đồ chiều cao và các tham số như vị trí và độ phân giải trong khi hình học được tạo từng khung trong đường dẫn đổ bóng. Nó nhanh hơn diễu hành và chậm hơn lưới đa giác. Ưu điểm của heighmap là mức tiêu thụ bộ nhớ thấp: chỉ hơn một chút so với 1/3 so với những gì một lưới sẽ cần. Nhược điểm là nó không linh hoạt (không có chi tiết nhỏ, không nhô ra). Bạn có thể tự động điều chỉnh chi tiết của lưới được tạo, nhưng điều này gây ra sự thay đổi hình học.
Tamschi

@Tamschi, nếu chỉ bạn cung cấp câu trả lời, chính xác những gì tôi đang tìm kiếm. :)
joltmode

@Tom Tôi sẽ xem liệu tôi có thể định dạng này không và tìm thêm một vài ví dụ.
Tamschi
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.