Çokgen sayısını azaltmak için 3D bir nesneyi taklit etmek


20

Birlik içinde bir oyun yapıyorum ve blenderde bir çit inşa ediyorum ama mümkün olduğunca düşük poli olmasını istiyorum. Orijinal tasarımım çok yüksek poli idi, bu yüzden ya akıllıca düzenlenmiş dokularla bir küp kullanabilseydim diye düşündüm. Şöyle ki:

resim açıklamasını buraya girin

resim açıklamasını buraya girin

Kenarların hepsinin iyi göründüğünü görebilirsiniz, ancak iç bölümler değil, yani orada hiçbir şey yok ... Bu yüzden, herkes tam bir ağmış gibi görünmesini sağlayacak yüzleri taklit etmenin mümkün olup olmadığını biliyor mu? İşte elde etmek istediğim şey:

resim açıklamasını buraya girin


7
O çitin üzerinde 52 köşe sayıyorum. O kadar değil.
Pharap

1
@Pharap Ancak bu kafesin binlerce kopyasını seviye sınırınıza yerleştirdiğinizde ne olduğunu unutmayın.
Philipp

5
@Philipp Unity, Vertex Buffer Objects ve benzeri optimizasyon tekniklerini doğru bir şekilde kullanıyorsa, bu bir sorun olmamalıdır. Endişeleniyorsanız, her zaman alfa içeren bir billboard sprite kullanabilirsiniz. Ya da daha iyisi, uzaktan bir reklam panosu yapın ve oyuncu yeterince yaklaştığında uygun ağı oluşturun. Ve içtenlikle binlerce perdeyi aynı anda ekrana çekeceğinizden şüpheliyim. Dünyaya 9000+ çit yerleştirilmiş olsa bile, bunların büyük bir kısmının alınacağından şüpheleniyorum. Gerçekten kıyaslama yaptınız mı yoksa sadece performansla ilgili varsayımlar mı yapıyorsunuz?
Pharap

6
Mobil veya PC / konsol için mi geliştiriyorsunuz? En azından modern (5 yaşında veya daha genç) GPU'larda, 52 köşe modeli muhtemelen bazı alfa harmanlama / alfa maskeleme yapmaktan daha ucuzdur. Birçok faktöre (ekran kapsamı, GPU, piksel gölgelendirici veya rasterleştirme darboğazı vb.) Bağlıdır, ancak alfa maskelerinin kullanılması her zaman fazla çekime neden olur. Optimize etmeden önce muhtemelen bunu karşılaştırmalısınız.
Tobias B

2
Bununla birlikte, bunu yapmak istemeyebileceğiniz bir örnek, bu boşluklardaki çarpışma algılamasını göz ardı etmeniz gerekiyorsa, örneğin belirli nesnelerdeki boşluklardan (bazı birinci şahıs nişancılarda) ve "mermi" -hole "( çıkartma )" boş alan "( model ) üzerinde göründü .
DoubleDouble

Yanıtlar:


26

Neyi başarmak istediğinizi doğru anlarsam, "imposters" kavramını arıyorsunuz. Bunlar, 3B ortamın oluşturulmasının geometrik karmaşıklığını azaltmak için kullanılan 3B nesnelerin tam olarak 2B gösterimleridir.

Bunları hemen hemen 2B nesnelerin dokuları olarak kullanılan 3B nesnelerin resimleri olarak düşünebilirsiniz. Bunlar için standart referans muhtemelen GPU Gems 3 kitabının "Gerçek Sahtekarlar" olarak adlandırılan 21. bölümüdür. Bu herkesin görebileceği burada . Bir diğer önemli referans ise Game Programming Gems v.2 kitabının "Imposters: Clutter" (Oyun Programlama Taşları 2, Tom Forsyth) adlı bölüm 5.7'dir.

Ve bakış açısındaki küçük değişikliklerle veya çalışma zamanı ile oluşturulan içerikle başa çıkmak için anında oluşturulabilirler. Konuyla ilgili "Dynamic 2D Imposters: Basit, Verimli DirectX 9 Uygulaması" adlı harika Gamasutra makalesine göz atın . Konseptin daha da geliştirilmesi "Aşırı Model Sadeleştirmesi için Billboard Clouds" da ortaya çıktı .

Kavramın nazik ve harika bir açıklaması için şu blog girişine bakın: http://blog.wolfire.com/2010/10/Imposters

Son olarak, Unity'yi kullanırken, bu işlemi otomatikleştiren bir eklenti duydum. Buna Real Imposters LOD Sistemi denir .

GÜNCELLEME: tamamlama uğruna, yakın zamanda hatırladığım iki şey eklemeyi düşündüm. Birincisi: SimCity'nin sanat yönetmeninin bu oyunun birinci sınıf grafik başarılarını elde etmek için imposter'ları nasıl kullandıklarını açıkladığı harika bir GDC videosu var: "GDC - Bina SimCity: Simülasyon Hizmetinde Sanat". . İkincisi, Unreal Engine ile ilgilenenler için , dokümanlarda görülebileceği gibi, imposters uygulamak için yerleşik bir özelliğe sahiptir.


Yani, çit modelini, tam modelini yaparsam ve Real Imposters LOD Sistemini kullanırsam, bu işe yarayacağını mı düşünüyorsunuz?
mr-matt

5
@MatthewInglis Size tam olarak eklenti hakkında bilgi veremiyorum: Unity'yi kullanmadığımdan beri bir süre geçti, bu yüzden kontrol edemiyorum. Ancak prensip olarak, evet, 3D ayrıntılı nesnenizin 2D sprite sürümünü oluşturmalıdır. Yine de konfigürasyonlarla oynamak zorunda kalacaksınız. Eklentiyi satın almayı planlıyorsanız, önce belgeleri okumayı ( drive.google.com/file/d/0B3GMQtflbloSeHhvUGJmcjluX3M/view ) ve önceden ürünlerinde olabilecek belirli sorularınız için yazarla iletişim kurmayı düşünün.
mand

0

Çitin düşündüğü herhangi bir etkileşime ihtiyacınız yoksa, yani boşluklarla, baskılı bir dokuya sahip basit bir şeffaf dikdörtgen kullanırım.

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.