Memutuskan jenis manajemen adegan yang akan digunakan sangat bergantung pada jenis logika apa yang Anda coba jalankan. Pertimbangkan berbagai konsumen adegan Anda:
Memberikan Konsumen
Perender mungkin hanya ingin tahu apa yang saat ini terlihat oleh pengguna pada titik tertentu. Ia menginginkan hierarki volume yang terikat untuk pemusnahan cepat ( artikel wiki BVH)
sehingga dapat mengetahui bahwa kursi di dalam kapal tidak perlu ditarik karena batas-batas kapal berada di luar pandangan frustum. Ini mungkin tertanam ke dalam sebuah octree .
Mungkin juga ingin memiliki gagasan bahwa kursi berada di punggungnya di dalam kapal, dan bahwa perahu itu berguling-guling di atas beberapa ombak ketika akhirnya terlihat. Dengan cara itu untuk menemukan koordinat dunia akhir dari simpul kursi, ia dapat menggabungkan transformasi kursi dan kapal dan dilakukan dengannya (ini juga membuat pekerjaan Anda sebagai programmer lebih mudah).
Namun cara lain untuk melihat masalah ini adalah bahwa penyaji mungkin menjalankan kartu yang bagus, dan akhirnya hanya ingin setumpuk segitiga diurutkan sehingga meminimalkan tekstur, shader, material, pencahayaan, dan mengubah perubahan keadaan. Yang terakhir ini mungkin akan membantu Anda lebih dari BVH, berdasarkan kinerja.
Pengguna Logika Game
Logika gim mungkin hanya menginginkan daftar datar hal-hal yang dapat saling berbicara dengan sistem pesan, sehingga std :: vector mungkin baik-baik saja.
Gim ini mungkin juga menginginkan cara untuk melacak siapa yang paling dekat dengan apa, jadi semacam informasi [tetangga terdekat] [3] mungkin bisa membantu dalam kasus itu. Ini dapat disediakan oleh BVH juga, tetapi harus naik turun grafik mungkin mengganggu.
Gim ini bahkan mungkin hanya ingin tahu bahwa ketika bergerak A, item A harus bergerak juga ... dalam hal ini kita kembali ke semacam hierarki transformasi.
Konsumen Fisika
Fisika gim Anda mungkin ingin memiliki [representasi khusus] [4] ruang dalam ruangan untuk deteksi tabrakan yang sangat cepat. Bergantian mungkin menggunakan semacam octree atau [hashing spasial] [5] untuk secara efisien menemukan hal-hal yang mungkin bertabrakan.
Tidak ada struktur data fisika di atas yang benar-benar terlihat seperti "grafik adegan" dalam arti Java3D.
Konsumen Audio
Mesin audio hanya ingin geometri, mungkin set yang berpotensi terlihat (terdengar), atau semacam hierarki volume yang terikat untuk menghitung pelemahan dan penyebaran suara. Sekali lagi, tidak benar-benar semacam grafik adegan, meskipun mungkin grafik geometri dalam adegan Anda.
Pada akhirnya ...
... itu benar-benar hanya tergantung pada kebutuhan aplikasi Anda. Saya sarankan menggunakan daftar datar untuk memulai, dan melihat di mana masalah Anda muncul. Anda bahkan dapat mencoba daftar datar dengan hierarki transformasi, karena itu mungkin satu jenis naskah yang berguna untuk alasan selain efisiensi.
Semoga berhasil!