Tarayıcıda açık dünya oluşturmak, bölüm 6: Clipmap'ler gidişatı değiştirdi
Yazan: Oleg Sidorkin, Cinevva CTO'su ve Kurucu Ortağı
Burada yeni misiniz? Seri rehberine göz atın. Bu rehber, spike'ın ne olduğunu açıklar ve tüm bölümlere bağlantı verir.
Spike 10'dan önce zihinsel modelimiz hâlâ "daha büyük dünya, daha fazla geometri demektir" şeklindeydi. Spike 10'dan sonra modelimiz "sabit geometri bütçesi, kamera merkezli halka güncellemeleri" hâline geldi. Bu değişim projenin gidişatını değiştirdi.
Geometri clipmap'lerinin ardındaki fikir basittir. Araziyi, kameranın merkezinde bulunduğu bir dizi eş merkezli halka olarak render edersiniz. En içteki halka en yüksek köşe yoğunluğuna sahiptir. Dışarı doğru her
İşin püf noktası tamamen bu iki katına çıkışta. Görüş mesafesi halka sayısıyla geometrik olarak artarken,
Burada her biri
Spike 10'u yeni sekmede aç ↗ · Kaynak kodunu görüntüle
Pratikteki püf noktası, halka sınırlarında geomorphing uygulamaktı. Bir köşe bir LOD halkasından diğerine geçtiğinde yüksekliğinin, yüksek çözünürlüklü ve düşük çözünürlüklü örnekler arasında yumuşak biçimde harmanlanması gerekir. Aksi takdirde kamera her hareket ettiğinde ve halkalar kaydığında gözle görülür sıçramalar oluşur. Bunu, köşenin halka kenarına olan uzaklığına dayalı bir harmanlama faktörüyle ve yüksekliği vertex shader'da interpolasyon yaparak çözdük:
Burada
Kamera hareketi testlerinden incelikli bir ders çıkardık. Clipmap'leri statik ekran görüntüleri üzerinden değerlendirip geçiş bozulmalarını gözden kaçırmak kolaydır. Halka sınırları boyunca sabit hızla ilerleyen geçişleri uzun süre çalıştırıp zamansal gürültüyü gözlemledik. Ekran görüntüleri yalan söyledi. Hareket gerçeği gösterdi.
Bu spike bize aynı zamanda net bir mimari sınır kazandırdı. Yakın alan arazisi; hacimsel düzenleme, daha yüksek malzeme karmaşıklığı ve fizik etkileşimiyle zaman içinde dinamik ve maliyetli hâle gelebilirdi. Uzak alan arazisi ise kararlı, öngörülebilir ve düşük maliyetli kalabilirdi. Bu ayrım, bu noktadan sonraki tüm mimari kararların omurgasını oluşturdu.
Kendi projeniz için clipmap'leri değerlendiriyorsanız güzel görüntüleri değil, stres döngülerini test edin. Gerçek sorunları ortaya çıkaran şeyler; uzun geçiş rotaları, değişen kamera yüksekliği ve sınırların tekrar tekrar aşılmasıdır.
- bölümde hacimsel mesh oluşturmayı ekliyor ve "yüzey olarak arazi" yaklaşımından "düzenlenebilir hacim olarak arazi" yaklaşımına geçiyoruz. Projenin bir renderer olmaktan çıkıp dünya editörüne dönüşmeye başladığı nokta buydu.
Bu bölümde değinilen teknolojiler
Geometri clipmap'leri. Losasso ve Hoppe tarafından SIGGRAPH 2004'te tanıtılan (makale) geometri clipmap'leri, araziyi kameranın merkezinde bulunduğu eş merkezli kare halkalar olarak render eder. Her halka, bir öncekinin yarısı kadar köşe çözünürlüğüyle iki kat alan kaplar. Toplam köşe sayısı sabittir: yaklaşık
Geomorphing. Arazi LOD'undaki en belirgin görsel bozulma sıçramadır: Bir parça LOD seviyesini değiştirdiğinde köşeler bir anda yer değiştirir. Geomorphing, bir geçiş bölgesi boyunca köşe konumlarını LOD seviyeleri arasında harmanlayarak bunu ortadan kaldırır. Her köşe hem mevcut LOD yüksekliğini hem de daha kaba LOD yüksekliğini saklar. Kamera mesafesine dayalı bir morph faktörü, ikisi arasında yumuşak bir interpolasyon yapar: morphedHeight = mix(fineLodHeight, coarseLodHeight, smoothstep(lodNear, lodFar, distance)). Geçiş bölgesi genellikle her halkanın dıştaki %20'lik kısmıdır. Normal kamera hızlarında geçiş fark edilmez. Geomorphing ayrıntılarına bakabilirsiniz.
CDLOD (Quadtree Uyarlamalı Clipmap'ler). Strugar'ın sabit halkalı clipmap'ler üzerinde yaptığı bir iyileştirmedir (2014, makale). CDLOD, tekdüze çözünürlüğe sahip eş merkezli halkalar yerine arazi karmaşıklığına uyarlanan bir quadtree kullanır. Düz alanlarda kaba düğümler kullanılırken, yüksek ayrıntıya sahip alanlar (uçurumlar, sırtlar) daha ince alt bölümlere ayrılır. Farklı chunk'ların çok farklı karmaşıklık düzeylerine sahip olduğu üretici dünyaları için bu önemlidir. Arazi rehberimizdeki CDLOD bölümüne bakabilirsiniz.
12 bölümün 6.'sı.
Önceki: Bölüm 5 - Görselliğin bütçesini belirlemek
Sonraki: Bölüm 7 - Marching cubes ve ilk gerçek mağaralar
Seri rehberi: /tr/blog/2026-02-25-open-world-browser-series-guide