LOD (Ayrıntı Düzeyi), iki ekran tarafından ayrılabilen farklı ekran ölçeklerindeki nesneleri yönetmek anlamına gelir. Ancak, bunlardan birini kullanabilirsiniz ve çoğu durumda bu yeterli olacaktır.
Büyüklüğe (görüntüleme ölçeği) bağlı olarak katmanları (aynı türden nesne grubu) göster / gizle.
Genelleştirme (çokgenleri basitleştirmek için bir algoritmadır) olarak adlandırılan Cebirsel Geomery tabanlı yöntem. aşağıdaki resme bak
Bir çokgen örgüyü genelleştirmek (basitleştirmek) için en ünlü ve etkili yöntem Descartes-Euler polihedron teoremi olarak bilinir (Denklem 4.5 bir kitaba atıfta bulunursam özür dilerim, yapabileceğim en iyisiydi) ve uzamsal veritabanlarının çoğu tarafından kullanılıyor örneğin PostgreSQL'deki PostGIS modülleri. Bir çokgenin daha küçük kenarlarını kaldırır ve çok yuvarlak bir kenar oluşturur.
Bir oyuna LOD uygulamak için, yakınlaştırma / uzaklaştırma işlemleri sırasında haritanızın (sahne) ölçeğini kaydetmeniz ve yönetmeniz gerekir. Ölçek sıfırdan sonsuza değişir ve bunu belirli bir dizi aralığa bölmeniz gerekir, örneğin şöyle bir şey:
- 1 / sıfır = 1/50 ila sonsuz
- 1/50 - 1/100
- 1/100 - 1/1000
- 1/1000 - 1 / sonsuzluk = 0
Ardından, yukarıdaki aralıkların her birinde hangi tür nesnelerin (katmanların) görünür veya görünmez olması gerektiğini tanımlamanız gerekir. Örneğin, hidrant valfi gibi küçük bir nesne türü, kullanıcı dördüncü aralıktayken görünmemelidir, çünkü bu ölçekte çok küçük olacaktır ve ayırt edilemez, bu nedenle ekran.
Bu nedenle, bir kullanıcı büyütmeyi değiştirmek için yakınlaştırma ve uzaklaştırma yöntemini kullandığında yukarıdaki sınırlardan birinden diğer aralığa geçer ve oyununuz sahnede nesneleri göstererek veya gizleyerek ayrıntı düzeyini yönetmek için bu ekran ölçeklerini kullanır. Bu, uzaklaştırma işleminiz sırasında nesnelerin aniden solmasına neden olan ayrı bir çözüm yapar, ancak ekran ölçekleri ve büyütme aralıkları dikkatlice tanımlanmışsa, kullanıcı hiçbir şey hissetmez.
Yukarıdaki 4 aralık grubu sadece bir örnektir ve deneme ve yanılma yoluyla kendi durumunuz için en iyisini bulmanız gerekir. Bunun için bir kural yok.
Bazen oyunlar kendi LOD yöntemlerini kullanırlar, Subway Surfer anlık olarak, bir binayı uzak göstermek için doku dikdörtgeni olmayan küçük bir şey gösterir ve aniden yaklaşarak doku alır, oyuncu bunu hisseder. Çok önemli olan projeksiyon sisteminizden bahsetmediniz, aynı zamanda ne tür bir oyun yarattığınızdan da bahsetmediniz.
Bununla birlikte, openGl ile tam bir 3D oyun uyguladığınızı ve grafik donanıma aktarmadan önce bazı ağları filtrelemek istediğinizi varsayalım, bunun tampon nesneler ve köşe dizileri (VBO, VAO) ile bağlama / bağlama işlemlerini azaltmanıza yardımcı olacağından eminim. OpenGl.
Yalnızca katman yönetimi kullanma veya Euler'in Genelleştirmesini uygulama
Çoğu durumda bir genelleme algoritması uygulamak gerekli değildir ve nesneleri filtrelemek sadece çalışır ve sizi ihtiyacınız olan verimliliğe (yenileme hızı) getirir, ancak tamamen duruma göre değişir. Çokgenin küçük taraflarını kaldıran kolay bir algoritma olmasına rağmen, büyüklüğün ve sabit bir sayının ürünü olan bir eşik tanımlamanız gerekir, böylece daha büyük taraflar daha uzak bir bakış açısıyla filtrelenir.
Katman yönetimini unutmak ve sadece Eulers genelleme algoritmasını uygulamak, her iki tarafı ve çizgiyi önceden tanımlanmış bir eşik değerine göre kontrol ettiğiniz ve sadece ekranda ayrımcılık yapacak kadar büyük olmaları durumunda gösterdiğiniz çok düzgün ve sürekli bir yöntem sağlar.
PS: büyütme, 1 / ölçeğe eşit bir şamandıra numarasıdır ve ölçek genellikle <1'dir, çünkü 1: 1 ölçeği, oyununuzda gerçek dünya uzunluklarına sahip olduğunuz anlamına gelir.