Quyết định sử dụng loại quản lý cảnh nào phụ thuộc rất nhiều vào loại logic bạn đang cố chạy. Xem xét những người tiêu dùng khác nhau trong cảnh của bạn:
Kết xuất người tiêu dùng
Trình kết xuất có thể chỉ muốn biết những gì hiện đang hiển thị cho người dùng tại bất kỳ điểm nào. Nó muốn một hệ thống phân cấp âm lượng giới hạn để loại bỏ nhanh ( bài viết wiki của BVH)
để có thể nhận ra rằng một chiếc ghế bên trong thuyền không cần phải rút ra vì giới hạn của chiếc thuyền nằm ngoài tầm nhìn. Điều này có thể được nhúng vào một octree .
Nó cũng có thể muốn có một ý tưởng rằng chiếc ghế nằm ngửa trong thuyền, và chiếc thuyền đang lăn lên xuống trên một số sóng khi cuối cùng nó xuất hiện. Bằng cách đó để tìm tọa độ thế giới cuối cùng của các đỉnh của ghế, nó có thể ghép các biến đổi của ghế và thuyền và được thực hiện với nó (điều này cũng giúp công việc của bạn trở thành một lập trình viên dễ dàng hơn).
Một cách khác để xem xét vấn đề này là trình kết xuất có thể đang chạy một thẻ tốt và cuối cùng chỉ muốn một đống hình tam giác được sắp xếp để giảm thiểu kết cấu, đổ bóng, vật liệu, ánh sáng và thay đổi trạng thái. Điều cuối cùng này có thể sẽ giúp bạn nhiều hơn một BVH, khôn ngoan.
Người tiêu dùng logic trò chơi
Logic trò chơi có lẽ chỉ muốn một danh sách phẳng những thứ có thể nói chuyện với nhau bằng một hệ thống nhắn tin, vì vậy một std :: vector có lẽ là tốt.
Trò chơi cũng có thể muốn có một cách theo dõi ai là người gần gũi nhất với cái gì, vì vậy một số thông tin [hàng xóm gần nhất] [3] có thể hữu ích trong trường hợp đó. Điều này cũng có thể được cung cấp bởi một BVH, nhưng việc phải lên và xuống biểu đồ có thể gây khó chịu.
Trò chơi thậm chí có thể chỉ muốn biết rằng khi nó di chuyển A, vật phẩm B của A cũng sẽ di chuyển ... trong trường hợp đó chúng ta quay lại một hệ thống phân cấp biến đổi.
Vật lý tiêu dùng
Vật lý trò chơi của bạn có thể muốn có [đại diện đặc biệt] [4] không gian trong nhà để phát hiện va chạm rất nhanh. Thay phiên, nó có thể sử dụng một số loại octree hoặc [băm không gian] [5] để tìm hiệu quả những thứ có thể va chạm.
Không có cấu trúc dữ liệu vật lý nào ở trên thực sự trông giống như một "biểu đồ cảnh" theo nghĩa Java3D.
Âm thanh tiêu dùng
Một công cụ âm thanh chỉ muốn hình học, có thể là một bộ có thể nhìn thấy (có thể nghe được) hoặc một loại phân cấp âm lượng giới hạn nào đó để tính toán suy giảm và phát âm. Một lần nữa, không thực sự là một loại biểu đồ cảnh bình thường, mặc dù nó cũng có thể là một biểu đồ hình học trong cảnh của bạn.
Cuối cùng ...
... nó thực sự chỉ phụ thuộc vào nhu cầu chính xác của ứng dụng của bạn. Tôi khuyên bạn nên sử dụng một danh sách phẳng để bắt đầu và xem vấn đề của bạn phát sinh ở đâu. Bạn thậm chí có thể thử một danh sách phẳng với hệ thống phân cấp biến đổi, bởi vì đó có lẽ là một loại biểu đồ hữu ích vì những lý do khác ngoài hiệu quả.
Chúc may mắn!