“Mesafe alanları” nedir ve çarpışma tespitine nasıl uygulanabilirler?


12

"Mesafe alanları" ile karşılaştığımda, hem statik hem de dinamik nesnelerle bir sahnede çarpışma tespiti için bazı etkili yöntemlere bakıyordum.

Bu kavramı araştırmaya ve anlamaya çalıştım, ancak yalnızca çok karmaşık bir dilde yazılmış makaleler bulabildim. Birisi, mesafe alanlarının ne olduğunu ve çarpışma tespiti için nasıl kullanılabileceğini kolay bir şekilde açıklayabilir mi?


mesafe haritaları mı demek istediniz?
LearnCocos2D

Yanıtlar:


13

Bir mesafe alanı ( veya mesafe dönüşümü veya mesafe haritası ), ızgaradaki her hücrenin o hücreden başka bir özelliğe sahip bir hücreye olan en kısa mesafeyi temsil ettiği ızgaralı bir yapıdır . Çoğu zaman bu "diğer özellik", bir oyuncunun geçemediği bir duvar veya bir örgünün yüzeyi gibi sınır tipi bir hücredir.

Mesafe alanlarının uygulanabilirliği çoktur. Örneğin, hareket rehberliğini uygulamak için nasıl kullanılabileceklerini hayal edebilirsiniz (tehlikeli veya istenen nesnelere mesafe haritaları oluşturarak ve onlar tarafından hareket kararlarını ağırlıklandırarak).

Ancak, özellikle çarpışma hakkında sorular sordunuz. İki hareketli nesne arasında çarpışma tespiti yapmak için mesafe alanlarının kullanılması, alanın kapsamı büyüdükçe mesafe alanlarının yeniden oluşturulması çok yavaş olabileceğinden (özellikle 3D'de, üretim süresini iyileştirme yöntemleri bir araştırma alanı olmasına rağmen) hızla verimsiz hale gelebilir .

Bu nedenle, mesafe alanı çarpışması esas olarak dinamik bir nesnenin statik olanla çarpışmasını tespit etmek için kullanılır. En sık olarak, sahnede diğer sabit nesnelerle bez (veya diğer deforme olabilir) nesnelerin çarpışmasını tespit etmek için bunu gördüm .

Kabaca, bu, bir işaretin (genellikle negatif) örgünün içindeki bir hücreyi , diğeri (açıkçası genellikle pozitif) örgünün dışındaki bir hücreyi temsil ettiği statik nesne için işaretli bir mesafe alanı kullanılarak gerçekleştirilir . Kumaş örgünün parçacıkları, statik örgünün yerel boşluğuna dönüştürülebilir ve belirli bir kumaş simülasyon aşaması sırasında bir parçacığın "önce" ve "sonra" konumları, işaretin değişip değişmediğini (ve böylece bir çarpışma meydana geldi). Bu, örneğin, 2003'teki kumaş simülasyonu makalesinde tartışılan yöntemdir .

Tek çarpışma algılama yönteminiz olarak mesafe alanlarını kullanmanızı önermem. İyi oldukları şey için oldukça verimli olabilirler, ancak her şeyde iyi değildirler. Etkin çarpışma tespiti elde etmenin en iyi yolu, hiyerarşiyi aşağı doğru hareket ettirdikçe artan bir hassasiyetle, hiyerarşik olarak birden çok yöntem kullanmaktır.


5

Mesafe alanları nedir?

Geometri ve bilgisayar grafiklerinde ve aynı zamanda görüntü işlemede de kullanılan bir mesafe alanı (basit sözcüklerle), her hücrede (görüntü işlemede piksel) en yakın çokgen nesnenin mesafesiyle veya görüntü işlemede özel özelliklere sahip bir pikseldir .

Diğer bir deyişle, her hücre için, harita tarafından tanımlanan özel özellikli en yakın nesnenin değerine sahip bir etikettir. Nesne, uygulamaya bağlı olarak değişir.

resim açıklamasını buraya girin

Yukarıdaki görüntü sınır pikselleri için bir Mesafe haritası içermektedir. Her pikselin en yakın sınır pikseline olan mesafeyi nasıl içerdiğine dikkat edin. Mesafe Manhattan mesafesi kullanılarak hesaplanır.

Mesafeyi hesaplamanın farklı yolları vardır, tipik yaklaşımlar şunları içerir:

Çarpışma tespitinde nasıl uygulanabilir?

Sahnedeki nesneler için bir mesafe haritası koruyarak, iki nesnenin o mesafeye göre çarpışıp çarpışmadığını kontrol edebilirsiniz. Ne yazık ki böyle bir haritayı korumak pahalıdır. Ve bu genellikle kumaş simülasyonları gibi kendiliğinden kesişen nesnelerde kullanılır, nesnelerin doğası nedeniyle mesafe haritaları korunabilir ve daha verimli bir şekilde güncellenebilirdi.


Bu kendiliğinden kesişen nesnelerde neden "daha verimli" yapılabilir?
lucidbrot
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.