Bir duvarın bir uçak veya kutu olarak olmasının faydaları nelerdir? Örgü çarpıştırıcı yerine kutu çarpıştırıcılı bir düzlem kullanmalı mıyım?
Bir duvarın bir uçak veya kutu olarak olmasının faydaları nelerdir? Örgü çarpıştırıcı yerine kutu çarpıştırıcılı bir düzlem kullanmalı mıyım?
Yanıtlar:
Dikkate almanız gereken birkaç farklı şey olacak.
Not: Aşağıda açıklanan optimizasyonlardan elde edilen avantajların yalnızca bir ton duvarla gerçekten ilgili olduğunu unutmayın. Bu noktada, oyununuzdaki duvarlarınızı yapmak için ikili alan bölümleme (BSP) gibi farklı bir çözümü düşünmek akıllıca olabilir. Bu, seviyelerinizi (doğru şekilde tasarlandıysa) ve fizik için (neyin çarpıştığını ve neyin çarpmadığını çok iyi tanımladığınız için) yüksek düzeyde optimize edilmiş kılar.
Bir kutu bir uçaktan daha çok render almak için alacak. Köşe gölgelendiricinizin ve rasterizatörün daha fazla veri üzerinden çalıştırılması gerektiği anlamına gelen daha çok köşeleri ve üçgenleri vardır. Bu nedenle, yalnızca görünürlük açısından gerektiğinde bir kutu kullanın. Müzikçaların görmesi gerekenler için gereken yüzleri kaldırın.
Her zaman yapabildiğiniz BoxCollider
bir MeshCollider
zamana karşı bir a kullanmalısınız. MeshCollider
Ağın yüzüne (veya dışbükey bir kabuk olarak) çarpışmalar uygulamak ve koşuşturmayı ve fiziği yavaşlatmak zorundadır (ancak sadece bir kutu için ihmal edilebilir bir miktardır). Bir diğer şey ise BoxColliders
, oyuncunun çok hızlı ilerlerken aralarında geçiş yapmasının daha zor olması. Sürekli çarpışmalarda bile, kendinizi hala duvarların arasında bir şeyleri yaşadığını fark ederseniz,BoxColliders
Uçaklarla çalışma konusunda çok daha hızlıysanız MeshColliders
( BoxColliders
boyutlarını eşleştirmek için hepsini ayarlamanız gerekmediğinden ), yalnızca istediğiniz performansı elde ederseniz, bunları kullanmak iyi olabilir.
"Coburn" un noktalarında biraz genişleyen :
Rendering : Eğer duvarı sadece bir düzlem olarak yaparsanız, o zaman duvar sadece bir taraftan görünecektir, çünkü düzlem (veya daha fazla tam olarak yüzleri) sadece bir render tarafına sahiptir. Yani eğer oyuncu duvarın etrafında hareket edebiliyorsa, tüm tarafları kaplamak için birden fazla düzene ihtiyacınız olacak, bu da yine de bir kutu ile sonuçlanacağınız anlamına geliyor.
Fizik : Basit geometri çarpıştırıcıları (küreler, kutular vb.), Her bir örgüyle karşılaştırıldığında hesaplamak için her zaman daha hızlıdır, çünkü örgütün tüm yüzleri ayrı ayrı kontrol edilmek zorunda değildir. Bunun yerine "basit" değerler kullanılabilir veya mesafe hesaplamaları yapılabilir (örneğin, küre eksi küre boyutuna uzaklık).
Ayrı bir "uçak çarpıştırıcısı" olan (Birliğin vermeyen) diğer fizik motorları için "daha iyi" olan yoktur. Bir uçak performans açısından biraz daha hızlı olabilir, ancak daha sonra aslında çarpışmadan içinden geçen hızlı nesneler sorunuyla karşılaşabilirsiniz. Daha sonra burada açıklandığı gibi daha kalın çarpıştırıcılara sahip olursunuz (düzlem yerine kutu) veya Sürekli Çarpışma Algılama (CCD) .
Rendering ile ilgili bir şey daha: Kendi gölge haritalama uygulamanız olduğunda, kutulardan yapılmış duvarlar, uçaklarda görünebilecek peter-panning nedeniyle uçaklardan yapılmış duvarlardan daha üstün olabilir.
İşte semptomun açıklaması:
http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning
Her zaman bana, ışık kanamasına yardımcı olmak için sağlam kılmanın en iyi yolunu bulacağınız gölgeler olacaksa, çünkü derinlikteki fark küçüktür ve kanar.
Yanılıyor olabilirim, ama bütün duvarlarımı ve iki taraf gibi şeyleri yapıyorum, bir duvar sadece bir kaç tepe noktası olacak, bu yüzden bir düzlem oluşturarak bu kadar tasarruf olmamalıydı.
Kenarlarımı bıraktığım bazı şeyler var, ama çoğunlukla hafif kanamaya yardım etmek için etrafta birçok şey olan şeylerin altında ya da üstünde.
Aynı şeyi fizik için yapıyorum, herkes bunu gerçekten düşünmedi ama bana göre bir duvarı bir duvar olarak ve bir uçağı bir uçak olarak kullanmak doğru görünüyordu, ama bu sadece benim