Làm sáng tỏ mức độ chi tiết của chunked


17

Gần đây, cố gắng thực hiện ý nghĩa của việc triển khai một cấp độ chi tiết của hệ thống chi tiết trong Unity. Tôi sẽ tạo ra bốn mặt phẳng lưới, mỗi mặt phẳng có bản đồ chiều cao nhưng tôi đoán rằng điều đó không quá quan trọng vào lúc này. Tôi có rất nhiều câu hỏi sau khi đọc về kỹ thuật này, tôi hy vọng điều này không quá nhiều để hỏi tất cả trong một lần, nhưng tôi sẽ vô cùng biết ơn ai đó đã giúp tôi hiểu được kỹ thuật này.

1 : Tôi không thể hiểu tại điểm nào dẫn xuống đường ống Lunked LOD mà lưới được chia thành các khối. Đây có phải là trong thế hệ lưới ban đầu, hoặc có một thuật toán riêng thực hiện điều này.

2 : Tôi hiểu rằng cấu trúc dữ liệu Quadtree được sử dụng để lưu trữ dữ liệu Lunked LOD , tôi nghĩ rằng tôi đang thiếu điểm một chút, nhưng liệu tứ giác có lưu trữ dữ liệu đỉnh và tam giác cho mỗi cấp độ phân chia không?

3a : Khoảng cách camera thường được tính như thế nào. Khi đọc về tứ giác, hộp giới hạn theo trục được nhắc đến rất nhiều. Trong trường hợp này, mỗi chunk sẽ có một hộp giới hạn va chạm để phát hiện máy ảnh hoặc máy nghe nhạc đang ở gần? hoặc có một cách tốt hơn để làm điều này? (có thể là raycast?)

3b : Các khối có tự tính toán khoảng cách camera không?

4 : Mỗi đoạn có cùng "độ phân giải" không. ví dụ ở cấp cao nhất, lưới sẽ là 32x32, mỗi nút được chia cũng sẽ là 32x32. Ví dụ dưới đây:

ví dụ về LOD chunk


Nếu bất cứ ai biết một cách tiếp cận LOD tốt hơn cho một hành tinh thủ tục cũng sẽ rất thú vị.
Caius Eugene

Tôi đoán bạn đã xem bài báo SIGGRAPH ban đầu của Thatcher Ulrich và chương trình liên quan? tulrich.com/geek ware / chunklod.html
drxzcl

Tôi có, nó rất nhiều thông tin đến một điểm nhưng nó không đi sâu vào loại chi tiết, hoặc cách tiếp cận để thực hiện. Cảm ơn bạn
Caius Eugene

1
Có một số tùy chọn cho LOD hành tinh ở đây; vterrain.org/LOD/spherical.html
OriginalDaemon

Câu trả lời:


12

1: Tôi không thể hiểu tại điểm nào dẫn xuống đường ống Lunked LOD mà lưới được chia thành các khối. Đây có phải là trong thế hệ lưới ban đầu, hoặc có một thuật toán riêng thực hiện điều này.

Không quan trọng. Ví dụ, bạn có thể tích hợp chunking vào thuật toán tạo lưới của bạn. Bạn thậm chí có thể thực hiện việc này một cách linh hoạt, để các cấp thấp hơn được thêm động (ví dụ như khi người chơi di chuyển gần hơn) bằng thuật toán sàng lọc giống như plasma. Bạn cũng có thể tạo lưới độ phân giải cao từ dữ liệu đo độ cao hoặc dữ liệu đo của nghệ sĩ và tổng hợp nó thành tất cả các khối LOD tại thời điểm quyết toán tài sản. Hoặc bạn có thể trộn và kết hợp. Nó thực sự phụ thuộc vào ứng dụng của bạn.

2: Tôi hiểu rằng cấu trúc dữ liệu Quadtree được sử dụng để lưu trữ dữ liệu Lunked LOD, tôi nghĩ rằng tôi đang thiếu điểm một chút, nhưng liệu tứ giác có lưu trữ dữ liệu đỉnh và tam giác cho mỗi cấp độ phân chia không?

Không cần thiết. Cây chỉ lưu trữ thông tin về hình học và làm thế nào để hiển thị nó. Điều này có thể có nghĩa là có một danh sách đỉnh / mặt ở mỗi nút cây. Thực tế hơn trong thời đại ngày nay, bạn sẽ lưu trữ tay cầm của các mắt lưới / cá thể trong bộ nhớ GPU.

3a: Khoảng cách camera thường được tính như thế nào. Khi đọc về tứ giác, hộp giới hạn theo trục được đề cập rất nhiều. Trong trường hợp này, mỗi chunk sẽ có một hộp giới hạn va chạm để phát hiện máy ảnh hoặc máy nghe nhạc đang ở gần? hoặc có một cách tốt hơn để làm điều này? (có thể là raycast?)

Một lựa chọn rất rẻ và dễ dàng là sử dụng khoảng cách đến điểm trung tâm của khối và sau đó sửa nó. Bạn biết rằng khoảng cách này luôn là một sự đánh giá thấp: nếu điểm trung tâm ở khoảng cách Z, điều này có nghĩa là một nửa khối gần hơn thế. Tuy nhiên, những gì chúng ta không biết là định hướng. Nếu chúng ta đang xem một đoạn của wcạnh trên chiều rộng , bit gần nhất của đoạn này sẽ ở khoảng cách Z-w. Tuy nhiên, nếu chúng ta đang xem góc đầu tiên, bit gần nhất sẽ ở khoảng cách Z-sqrt(2)*w. Nếu bạn có thể sống với sự không chắc chắn này (bạn hầu như luôn luôn có thể), bạn đã hoàn thành. Lưu ý rằng bạn cũng có thể sửa cho góc nhìn bằng cách sử dụng lượng giác cơ bản.

Tôi thích tính khoảng cách tối thiểu tuyệt đối từ máy ảnh đến chunk để giảm thiểu các vật phẩm. Trong thực tế, điều này có nghĩa là thực hiện một bài kiểm tra khoảng cách điểm vuông . Đó là một công việc nhiều hơn sau đó tính toán khoảng cách đến các điểm trung tâm, nhưng không giống như bạn sẽ thực hiện hàng triệu trong số các khung này.

Nếu bạn có thể tận dụng động cơ vật lý của mình để làm điều này thì bằng mọi cách hãy làm như vậy, nhưng bạn thực sự muốn nghĩ về nó nhiều hơn về "truy vấn khoảng cách" hơn là "va chạm".

3b: Các khối có tự tính toán khoảng cách camera không?

Nó thực sự phụ thuộc vào thiết kế của động cơ của bạn. Tôi sẽ khuyên bạn nên giữ lá tương đối nhẹ. Tùy thuộc vào nền tảng của bạn, chỉ cần chi phí cuộc gọi để có vài nghìn khối địa hình thực hiện cập nhật riêng của họ, mọi khung hình đều có thể ảnh hưởng nghiêm trọng đến hiệu suất.

4: Mỗi đoạn có cùng "độ phân giải" không. ví dụ ở cấp cao nhất, lưới sẽ là 32x32, mỗi nút được chia cũng sẽ là 32x32.

Họ không phải làm thế, nhưng thật tiện lợi nếu tất cả các khối chiếm cùng một không gian. Sau đó, bạn có thể thực hiện quản lý bộ nhớ (GPU) theo đơn vị "khối". Cũng dễ dàng hơn để loại bỏ / ẩn các đường nối giữa hai khối có kích thước khác nhau nếu một độ phân giải là bội số của nhau vì chúng chia sẻ nhiều đỉnh hơn. (ví dụ: 32x32 và 64x64 dễ quản lý hơn 32x32 và 57x57) (cảm ơn Guiber!). Nếu bạn có một lý do chính đáng để thay đổi kích thước hình học khối, bằng mọi cách hãy đi cho nó.


2
Cũng dễ dàng hơn để loại bỏ / ẩn các đường nối giữa hai khối có kích thước khác nhau nếu một độ phân giải là bội số của nhau vì chúng chia sẻ nhiều đỉnh hơn. (ví dụ: 32x32 và 64x64 dễ quản lý hơn 32x32 và 57x57)
Alayric

Câu trả lời tuyệt vời, Nó đã làm sáng tỏ rất nhiều điều. Đặc biệt là rất nhiều việc thực hiện là xem xét khả năng của động cơ. Với 3a Tôi vẫn không chắc chắn như khi để bắn một truy vấn từ xa, hai ngôn ngữ này tôi đã xem xét âm thanh CPU nặng, tôi sẽ làm một số nghiên cứu thêm về vấn đề này. Cảm ơn bạn
Caius Eugene

Guiber, bạn nói đúng! Tôi đang ăn cắp rằng: P
drxzcl

1
@CaiusEugene: Tôi nghĩ bạn đang suy nghĩ quá mức về quyết định khoảng cách của mình. Tôi đã thêm một thuật toán rất rẻ, rất cơ bản vào câu trả lời tại điểm 3a để bạn bắt đầu.
drxzcl
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.