Doğal görünümlü voksel nasıl yapılır


11

Bir voksel oyunu geliştiriyorum, ancak yanlış tekniği kullandığımı düşünüyorum. Şu anda bloklar yapmak için düz karolar kullanıyorum ve bence daha iyi ve daha verimli bir yol var.

Doğal görünümlü araziye sahip bir voksel oyunu gördüm. Bununla demek istediğim bloksuz. Oyun metreküp başına 4 * 4 * 4 blok ve kir, kum ve taş gibi bloklar, yuvarlak kenarları ve birlikte eriyik tür var (sıradan oyunlarda olduğu gibi). Heres ekran görüntüsü resim açıklamasını buraya girin

Bu nasıl başarılır?



bunun hangi oyun olduğunu biliyor musun? bunun voksel olduğundan nasıl emin olabilirsiniz? Tamam, kendim buldum, oyunun adı Blockscape: indiedb.com/games/blockscape
Babis

Procworld.blogspot.com'da voksel motorunun nasıl oluşturulduğu hakkında her türlü ayrıntılı blog yayınına sahip bir blog var. Mesajlar, motorun bebeklik döneminden bugüne kadar Everquest Next için lisanslandığı zamana kadar birkaç yıl öncesine dayanır.
stokastic

Yanıtlar:


14

Bu, farklı yükseklikteki küpler arasındaki rampaların enterpolasyonuyla elde edilir.

Böyle bir manzaraya sahip olduğunuzda (yandan bakıldığında)

  #
 ####   ##
############

şöyle görünmesi için çokgenler eklersiniz:

 /#\
/####\ /##\
############

Bu rampaları hesaplamak için bir algoritma yürüyen küpler algoritmasıdır .

Daha da güzel olmasını istediğinizde, sadece küpler arasında enterpolasyon yapmak için tek çokgenler kullanmayın, birden çok çokgenin eğrilerini kullanın. Ancak, sahnenize oldukça fazla çokgen ekleyeceğini unutmayın, bu yüzden bunu yalnızca kameraya yakın olan küpler için yapmanız gerekir.


Teşekkür ederim! Bunu OpenGL, Hafif Java Oyun Kütüphanesi'nde nasıl yapacağınızı açıklayan bir yer biliyor musunuz? Düzenleme: Ve yürüyen arazi için çarpışma tespiti eklemek için iyi bir teknik biliyorsanız, bu da takdir edilecektir.
KaareZ

@KaareZ Üzgünüm, LWJGL ile hiç çalışmadım.
Philipp

@Philipp bu cevap

1
Ya da yürüyen küpü tamamen atlayabilir ve çok daha ilginç olan frankpetterson.com/publications/dualcontour/dualcontour.pdf'e daha az karmaşık bir şekilde gidebilir ve aynı zamanda gürültü yığınını son öykünün tepe noktasına bir ofset olarak da ekleyebilirsiniz. Hala bloğunuz var ama şimdi katı düz çizgide sıkı bir şekilde hizalanmadan tepeler haddeleme özelliğine sahipler ... çift şekillendirmeyi ve bunu daha ilginç bir sonuç için birleştirerek (az ya da çok organik üretimi kontrol etmek için köşe ofsetinde bir değiştirici ile) .
user29244

forum.unity3d.com/attachments/captura-jpg.23795 işte "yuvarlanma bloğu" nun resmi (dikey yer değiştirme olarak uygulanan ofset) İşte daha fazla resim ama her yöne yer değiştirme uygulanmış forum.unity3d.com/attachments/t1- jpg.23871 forum.unity3d.com/attachments/t2-jpg.23872 vimeo.com/27976287
user29244

6

Görüntüde olduğu gibi benzer kaliteye ulaşmak için uğraşmanız gereken iki engel var, birincisi sanatsal ve ikincisi teknik (bellek, işleme). Öncelikle sanatsal probleminizi zaten çözdüğünüzü, modelleri, sanatı ve gölgelendiricileri vb. Yapabileceğinizi varsayıyorum (Kısmen sanat problemlerine cevap veremediğim için)

En büyük teknik problem, oluşturduğunuz modelleri yüksek ayrıntıda vokselleştirirken çok sayıda küçük voksel ile sonuçlanmanızdır. Çok sayıda vokselin işlenmesi ve oluşturulması önemsiz değildir. Bunun cevabına Seyrek Voksel Octrees denir

SVO, tüm vokselleri işlemeden, ancak sadece görünür olanları işlemeden son derece ayrıntılı modeller oluşturma olanağı verecektir. SVO'yu oluşturmak için normal rasterleştirme tekniği yerine ışın dökümü kullanmanız gerekeceğini unutmayın.

Bu makalede SVO hakkında daha fazla bilgi

İşte SVO'nun BSD Lisansı uygulamasına sahip açık kaynaklı bir kaynak https://code.google.com/p/efficient-sparse-voxel-octrees/

Çokgen ve SVO tabanlı oluşturma (artıları ve eksileri) açıklayan bir video .


Bu harika! Ayrıca, sauerbraten.org'a bir bakın, benzer bir teknik kullanıyor (ancak yürüyen küpleri uygulamıyor, bu bölüm seviye tasarımcısına bırakılıyor)
Kroltan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.