LOD (Level of Detail) berarti mengelola objek dalam skala tampilan yang berbeda, yang dapat dibagi menjadi dua bagian. Namun, Anda dapat menggunakan salah satunya dan itu sudah cukup untuk sebagian besar kasus.
Tampilkan / sembunyikan lapisan (kelompok objek dengan tipe yang sama) tergantung pada besarnya (skala tampilan).
Metode berbasis Aljabar Geomery, yang disebut Generalisasi (yang merupakan algoritma untuk menyederhanakan poligon). lihat gambar berikut
Metode yang paling terkenal dan efisien untuk menggeneralisasi (menyederhanakan) sebuah poligon dikenal sebagai teorema polyhedron Descartes-Euler (Persamaan 4.5, maaf jika saya merujuk pada sebuah buku, itu yang terbaik yang bisa saya lakukan) dan digunakan oleh sebagian besar basis data spasial misalnya modul PostGIS di PostgreSQL. Ini hanya menghilangkan sisi yang lebih kecil dari poligon dan membuat yang sangat bulat. (Gambar di atas)
Untuk menerapkan LOD dalam game, Anda perlu menyimpan dan mengelola skala peta Anda (adegan) selama operasi zoom in / out. Skala berubah dari nol hingga tak terbatas dan Anda harus membaginya menjadi sejumlah rentang tertentu, misalnya, seperti ini:
- 1 / nol = tak terbatas hingga 1/50
- 1/50 hingga 1/100
- 1/100 hingga 1/1000
- 1/1000 hingga 1 / infinity = 0
Maka Anda perlu menentukan jenis objek Anda (lapisan) yang harus terlihat atau tidak terlihat di masing-masing rentang di atas. Misalnya jenis objek kecil seperti katup hidran seharusnya tidak terlihat ketika pengguna berada di kisaran keempat karena akan sangat kecil pada skala itu dan tidak dapat didiskriminasi sehingga tidak masalah jika Anda melewatkan menggambarnya pada layar.
Jadi, ketika pengguna menggunakan zoom in dan zoom out untuk mengubah pembesaran, ia bergerak melalui batas di atas dari satu ke rentang lainnya, dan game Anda menggunakan skala tampilan ini untuk mengelola level detail dengan menunjukkan atau menyembunyikan objek di tempat kejadian. Ini membuat solusi terpisah yang tiba-tiba objek memudar selama operasi zoom out Anda, namun memiliki skala tampilan dan rentang perbesaran yang ditentukan dengan cermat, pengguna tidak akan merasakan apa-apa.
Kelompok 4 rentang di atas hanyalah sebuah contoh dan Anda perlu menemukan yang terbaik untuk kasus Anda sendiri dengan coba-coba. Tidak ada aturan untuk itu.
Kadang-kadang permainan menggunakan metode LOD mereka sendiri, Subway Surfer untuk instan, menunjukkan kecil, tanpa tekstur persegi panjang untuk menunjukkan bangunan di kejauhan, dan dengan mendekat tiba-tiba mendapat tekstur, gamer merasakannya. Anda tidak berbicara tentang sistem proyeksi Anda yang sangat penting juga tidak berbicara tentang jenis permainan yang Anda buat.
Namun misalkan Anda mengimplementasikan game 3D lengkap dengan openGl dan Anda ingin memfilter beberapa mesh sebelum mentransfernya ke perangkat keras grafis, saya yakin ini akan membantu Anda mengurangi operasi yang mengikat / tidak mengikat dengan objek buffer dan array vertex (VBO, VAO) sementara berurusan dengan OpenGl.
Hanya menggunakan manajemen lapisan atau hanya menerapkan Generalisasi Euler
Dalam kebanyakan kasus, tidak perlu menerapkan algoritma generalisasi, dan memfilter objek hanya berfungsi dan membawa Anda ke efisiensi (refresh rate) yang Anda butuhkan, namun sangat tergantung, kasus per kasus. Meskipun ini adalah algoritme yang mudah yang hanya menghilangkan sisi kecil poligon, Anda perlu menentukan ambang yang merupakan produk besarnya dan angka konstan, sehingga sisi yang lebih besar bisa difilter dalam sudut pandang yang lebih jauh.
Melupakan penilaian lapisan dan hanya menerapkan algoritma generalisasi Eulers, menyediakan metode yang sangat rapi dan berkesinambungan di mana Anda hanya memeriksa setiap sisi dan garis terhadap ambang yang telah ditentukan sebelumnya dan menunjukkannya hanya jika mereka cukup besar untuk didiskriminasi di layar.
PS: perbesaran adalah angka float> 0 yang sama dengan 1 / skala dan skala biasanya <1 karena skala 1: 1 berarti Anda memiliki panjang dunia nyata dalam gim Anda.