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ục và mộ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.