heightmaps
Bir yükseklik haritası ile, her köşe için yalnızca yükseklik bileşenini depolarsınız (genellikle 2B doku olarak) ve tüm dörtlü için yalnızca bir kez konum ve çözünürlük sağlarsınız. Peyzaj geometrisi, geometri gölgelendiricisi veya donanım mozaiklemesi kullanılarak her çerçevede oluşturulur. Yükseklik haritaları, çarpışma algılaması için yatay verileri depolamanın en hızlı yoludur.
Artıları:
Nispeten düşük bellek kullanımı : Her köşe için yalnızca bir değer depolamanız gerekir ve dizin yok. Algılanan ayrıntıları artırmak için ayrıntı haritaları veya bir gürültü filtresi kullanarak bunu daha da geliştirmek mümkündür.
Nispeten hızlı : Yükseklik haritaları için geometri gölgelendirici küçüktür ve hızlı çalışır. Yine de geometri alanı kadar hızlı değil.
Üçgen tabanlı 3D hızlandırması olmayan sistemlerde, ışın yürüyüşü yükseklik haritaları araziyi oluşturmanın en hızlı yoludur. Buna eski oyunlarda voksel grafikleri deniyordu.
Dinamik LOD / arazi : Oluşturulan ağın çözünürlüğünü kameradan uzaklığa göre değiştirmek mümkündür. Bu, çözünürlük çok fazla düşerse (yaklaşık 0:40), değişen geometriye neden olur, ancak ilginç efektler için kullanılabilir.
Kolay arazi üretimi / oluşturma : Fraktal Perlin Gürültüsü gibi gürültü işlevlerini harmanlayarak yükseklik haritaları kolayca oluşturulabilir ve yükseklik haritası düzenleyicileri hızlı ve kullanımı kolaydır. Her iki yaklaşım da birleştirilebilir. Bir editörde çalışmak da kolaydır.
Verimli fizik : Yatay bir konum doğrudan (genellikle) bellekteki bir ila dört konumla eşleşir, bu nedenle fizik için geometri aramaları çok hızlıdır.
Eksileri:
Tam olarak x / y koordinatı başına bir yükseklik : Genellikle yerde delikler veya çıkıntılı uçurumlar olamaz.
Daha az kontrol : Her noktanın kesin yüksekliğini yalnızca ızgara boyutu doku koordinatlarıyla eşleşiyorsa kontrol edebilirsiniz.
Eserler : Bir alt dörtlü tanımlayan dört köşe aynı düzlemde değilse, iki köşe arasındaki ayrım görünür hale gelir. Bu genellikle kenarları kardinal bir yön izlemeyen dik uçurumlarda olur.
Yükseklik haritaları, araziyi açık bir şekilde oluşturmanın en etkili yoludur ve gelişmiş arazi özelliklerine güvenmeyen ve geniş açık alanlara sahip birçok yeni oyunda kullanılır. Vikipedi programlarının kullanımının heightmaps bir listesi vardır , ama bu araçlar sadece bu yüzden burada, oluşturma için de olduğu bir bazı oyunlar kaynaklar olarak kullanabilir veya eğer emin değilim olasılıkla bunları kullanmak için:
Just Cause 2: Bölgeler kare sektörlere yüklenir ve arazide delik yoktur. Demoda, normalde bir binanın olacağı kenarlar boyunca gerilmiş üçgenleri olan derin bir delik var. (Bölgeye normal olarak erişilemez, ancak demo'nun bazı sınırlamalarını kaldırmak için modlar vardır ...)
Sims 2 ( belki ): Mahalle arazisi yükseklik haritası olarak yüklenir, ancak lotların (şantiyeler) yerleştirildiği delikler vardır. Yine de çok fazla uçurum oluşturursanız tipik eserler vardır ve bir eve bir mahzen eklemek (ve veranda altında uçurum gizlemek) oldukça sıkıcıdır.
Valve'in Kaynak motoru oyunları: Dikdörtgen fırçalar (statik seviye geometrisi) yüzlerinde yükseklik haritalamalı arazi içerebilir. Bu oyunlarda, olağan tuhaflıklar genellikle diğer fırçalar veya aksesuarlar ile gizlenir.
Gölgelendiricilere bakmadan kesin olarak söylemek imkansızdır çünkü her yükseklik haritası arazisi kafes olarak işlenebilir.
vokseller
Voksel arazi, 3B ızgaradaki her nokta için arazi verilerini depolar. Seyrek sekizli gibi sıkıştırma yöntemleri kullansanız bile, bu yöntem her zaman anlamlı yüzey ayrıntısı başına en fazla depolama alanını kullanır.
("Voksel motoru" terimi genellikle eski 3B oyunlarda yaygın olan ışın yürüyüşü arazi yükseklik haritalarının bir yöntemini tanımlamak için kullanılır. Bu bölüm yalnızca voksel verileri olarak depolanan arazi için geçerlidir.)
Artıları:
Sürekli 3B veriler : Vokseller, cevher damarları gibi gizli arazi özellikleri hakkında sürekli verileri depolamanın tek etkili yoludur.
Kolay değiştirilebilir : Sıkıştırılmamış voksel verileri kolayca değiştirilebilir.
Gelişmiş arazi özellikleri : Çıkıntılar oluşturmak mümkündür. Tüneller sorunsuz.
İlginç arazi üretimi : Minecraft bunu önceden tanımlanmış arazi özellikleri (ağaçlar, zindanlar) ile gürültü işlevlerini ve degradeleri üst üste koyarak yapar. ( Daha fazla bilgi için Notch'in blogunda Terrain Generation, Part 1'i okuyun . 05.8.2011 itibariyle 2. bölüm yoktur.)
Eksileri:
Yavaş : Voksel verilerini oluşturmak için, bir ışın izleyici kullanmanız veya örneğin yürüyen küplerle bir kafes hesaplamanız gerekir (Artefaktlar olacaktır). Komşu voksel örgü üretimi için bağımsız değildir ve gölgelendiriciler daha karmaşıktır ve genellikle daha karmaşık geometri üretir. Yüksek LOD ile voksel verilerinin oluşturulması çok yavaş olabilir.
Büyük depolama gereksinimleri : Voksel verilerinin depolanması çok fazla bellek kullanır . Bu nedenle voksel verilerini VRAM'a yüklemek genellikle pratik değildir, çünkü modern donanımda bile telafi etmek için daha küçük dokular kullanmanız gerekir.
Deforme edilebilir arazi gibi voksel özelliklerine güvenmeyen oyunlar için voksel kullanmak pratik değildir, ancak bazı durumlarda ilginç oyun mekaniğine izin verebilir. Voksel motorları eski oyunlarda daha yaygındır , ancak daha yeni örnekler de vardır:
Atomontage motoru : Voksel oluşturma.
Solucanlar 4: "Poxels" kullanır. Wikipedia'ya göre bu voksel ve çokgenlerin bir karışımı.
Minecraft: RAM'deki araziyi temsil etmek için voksel kullanır, grafikler çokgen grafiklerdir. Çoğunlukla hesaplanan yazılım.
Terraria: 2D voksellere bir örnek. Nasıl sonuç verdiğini bilmiyorum.
Fizikle birleştirilen vokseller : Oyun değil. ama yıkım potansiyelini güzel bir şekilde sergiliyor.
Voxatron : Menüler ve HUD dahil olmak üzere neredeyse tüm grafikler için voksel kullanan bir oyun.
Ağlar
Çokgen örgüler, araziyi depolamanın ve oluşturmanın en esnek ve hassas yoludur. Genellikle hassas kontrol veya gelişmiş arazi özelliklerine ihtiyaç duyulan oyunlarda kullanılırlar.
Artıları:
Çok hızlı : Köşe gölgelendiricisinde normal projeksiyon hesaplamasını yapmanız yeterlidir. Bir geometri gölgelendiriciye gerek yoktur.
Çok hassas : Tüm koordinatlar her köşe için ayrı ayrı saklanır, bu nedenle onları yatay olarak hareket ettirmek ve daha ince ayrıntılara sahip yerlerde örgü yoğunluğunu artırmak mümkündür.
Düşük bellek etkisi : Bu aynı zamanda ağın genellikle bir yükseklik haritasından daha az belleğe ihtiyacı olacağı anlamına gelir, çünkü köşeler daha az küçük özelliklere sahip alanlarda daha seyrek olabilir.
(Bkz . Wikipedia'da üçgen düzensiz ağ ).
Eserler yok : Ağ olduğu gibi işlenir, bu nedenle herhangi bir aksaklık veya garip görünümlü kenarlıklar olmaz.
Gelişmiş arazi özellikleri : Delik bırakmak ve çıkıntılar oluşturmak mümkündür. Tüneller sorunsuz.
Eksileri:
Kötü dinamik LOD : Yalnızca önceden hesaplanmış ağlarla mümkündür. Bu, eski verileri yeni köşelere eşlemek için ek veri olmadan geçiş yaparken "sıçramalara" neden olur.
Değiştirilmesi kolay değil : Değiştirilmesi gereken bir alana karşılık gelen köşeleri bulmak yavaştır.
Çarpışma tespiti için çok verimli değil : Yükseklik haritalarında ve voksel verilerinden farklı olarak, belirli bir konumun bellek adresi genellikle doğrudan hesaplanamaz. Bu, tam yüzey geometrisine bağlı olan fizik ve oyun mantığı büyük olasılıkla diğer depolama formatlarından daha yavaş çalışacağı anlamına gelir.
Çokgen arazi, geniş açık alanlara sahip olmayan veya hassasiyet ve çıkıntılar nedeniyle yükseklik haritası arazisini kullanamayan oyunlarda sıklıkla kullanılır. Listem yok ama eminim ki
her 3D Zelda ve
her 3D Mario oyunu
bunu kullan.
Diğer yöntemler
Tamamen gölgelendirici boru hattında bir arazi oluşturmak mümkündür. Algoritma yalnızca parça / piksel gölgelendiricide çalışıyorsa, bellek etkisi neredeyse sıfırken ayrıntı neredeyse sınırsız olabilir. Açık olan dezavantajlar, fotoğraf makinesi orijinal oluşturma yüzeyi ile kesiştiğinde şekil ve sorunlar üzerinde neredeyse hiç kontrol değildir. Oyuncuların bir gezegenin yüzeyi ile etkileşime girmediği uzay oyunlarında hala yararlıdır. Parametre animasyonları bu tür arazilerde en iyi sonucu verir.
Oyun motorunun geri kalanında kullanmak için oluşturulan arazi geometrisini grafik kartından indirmek mümkün olmalıdır, ancak bunun performansının nasıl olduğunu veya şimdiye kadar yapılıp yapılmadığını bilmiyorum.
Sonuç
Her senaryo için iyi çalışan bir yöntem yoktur, ancak belirli bir görev için bir tane seçmek oldukça kolaydır:
Arazi yüzeyinde çıkıntılara veya deliklere ihtiyacınız yoksa ve fizik veya dinamik arazi kullanıyorsanız yükseklik haritaları en iyi çözümdür. Ölçeklenebilir ve çoğu oyun için iyi çalışırlar.
Ağlar en yüksek hassasiyete sahiptir ve çıkıntıları, delikleri ve tünelleri tanımlayabilir. Sık sık değişmeyen karmaşık bir araziniz varsa bunları kullanın.
Vokseller , birçok karmaşık özelliğe sahip çok dinamik araziyi tanımlamak için iyidir. Büyük miktarda bellek ve işleme gerektirdikleri için bunları doğrudan oluşturmaktan kaçının.
Araziyle etkileşime girmeniz veya çok ayrıntılı grafiklere ihtiyacınız yoksa, diğer yöntemler yukarıdakilerden daha iyi olabilir. Genellikle çok spesifik senaryolar için çalışırlar.
Birden fazladan özellik elde etmek için farklı yöntemleri birleştirmek mümkündür, örneğin bir uçurumun ayrıntı yapısını artırmak için kafes araziyi bir yükseklik haritası ile yormak.
Dinamik arazi üretimi, yöntemsel uzay simülasyonunda yoğun olarak kullanılmaktadır ve bazıları son yıllarda gerçekten gelişmiş hale gelmiştir . Bu projelerin forumlarında konuyla ilgili bazı kaynaklar bulunmalıdır.