Dar faz çarpışma tespit algoritmaları


10

Çarpışma tespitinin üç aşaması vardır.

  1. Geniş faz : Etkileşimi tüm nesneler arasında dolaşır, döngüyü hızlandıracaksa yanlış pozitiflere izin verilir.

  2. Darfaz : Çarpışıp çarpışmadığını ve bazen nasıl yanlış pozitif olmadığını belirler

  3. Çözüm : Çarpışmayı giderir.

Sorduğum soru dar evre hakkında. Karmaşıklık ve doğruluk bakımından farklılık gösteren çoklu algoritmalar vardır.

  1. Hitbox kesişimi : Bu, en düşük karmaşıklığa sahip olan, ancak çok doğru olmayan bir posterior algoritmasıdır,

  2. Renk kesişimi : Her piksel için hitbox kesişimi, a-posteriori, piksel mükemmel, zaman açısından doğru değil, daha yüksek karmaşıklık

  3. Ayırma ekseni teoremi : Bu daha sık kullanılır, üçgenler için doğrudur, ancak a-posteriori, kenarı bulamadığı için, son kareyi hesaba katırken, daha kararlıdır

  4. Doğrusal yeniden yayılma : Yarı gerçekçi görünümlü fizik için yararlı olan A priori algoritması, kavşak noktasını SAT'dan daha doğru, ancak daha karmaşık bir şekilde bulur

  5. Spline enterpolasyonu : A-priori, lineer ışınlardan daha doğru, daha fazla kopleks.

Muhtemelen unuttuğum çok daha fazlası var. Soru, SAT'ı ne zaman kullanmak, ışınlar, kamalar ve daha iyi bir şey olup olmadığıdır.

Yanıtlar:


6

Bana eksik olan iki tanesi GJK ve MPR.

GJK, iki dışbükey çokgenin en yakın noktasını bulmak için bir algoritmadır. Biraz ekstra çalışma ile, kesişen nesneler için olay noktaları bulmak ve böylece bir çarpışma manifoldunu hesaplamak için kullanabilirsiniz. Bu, SAT kullanarak olduğu gibi çokgen kırpma yoluyla yapılır, ancak GJK size bazı adımlar kaydeder (en yakın noktalara zaten sahip olduğunuzdan).

MPR (Minkowski Portal İyileştirme), GJK'ya benzer başka bir algoritmadır (her ikisi de Minkowski boşluklarını kullanır). GJK gibi kesişmeyen nesneler arasındaki en yakın noktayı bulamaz, ancak oyunlar için başka birçok güzel özelliğe sahiptir ve bir kişi manifoldu almak için kullanmanın bir yoludur.

MPR, oyunlar için en popüler olanlardan biridir. Çok verimli, sayısal olarak kararlı ve uygulaması kolaydır.

Diğer dar aşamalar özel oyunlarda daha çok kullanılır. Yarış oyunları genellikle gerçek lastikleri modellemek için ışın dökümü kullanır ve geleneksel çarpışma şekli ve çözünürlük modellemesi kullanılarak gerçekçi (veya sadece eğlenceli) davranışlar elde etmek henüz mümkün değildir. Platformerler genellikle tercih edilen "Mario benzeri" fizik geleneksel fizik algoritmaları ile modellenmediği için tipik olarak yüksek derecede özelleştirilmiş çarpışma ve fizik kullanırlar. Ayrıca, akışkanlar ve benzerleri için genellikle farklı çarpışma ve fizik yöntemleri göreceksiniz, ancak bunlar hakkında daha az şey biliyorum.

Görmek:


3

Teorem değil , Ayırma Ekseni Testi demek istedim .

SAT'ı hareketsiz çokgenlerde (2D) kullanırsınız, ancak göreli doğrusal hareketle başa çıkmak için genişletebilirsiniz.

http://elancev.name/oliver/2D%20polygon.htm#tut3

GJK'yi 2D'de kullanmayın, aslında kaba kaba SAT'ı zorlamaktan daha yavaş buldum.

Kullanabileceğiniz bir diğer teknik, bir nesneyi bir noktaya kadar küçülten ve diğerini ilkinin şekliyle 'büyüten' Minkowski Farkıdır. Daha sonra birleştirilmiş nesneyi çok daha kolay olan noktaya karşı test edersiniz - bu size penetrasyon mesafesi ve normal verir. Bu aracın kavramsal olarak yeni çarpışma tespit problemlerine yaklaşmada yararlı olduğunu düşünüyorum; görselleştirmek SAT'dan daha kolaydır.

Çokgenleri (ve polihedronları) hareket ettirmek ve döndürmek için, kesin zamanı ve temas noktasını bulmak için Muhafazakar İlerlemeyi kullanabilirsiniz.

http://www.continuousphysics.com/BulletContinuousCollisionDetection.pdf

Bir süre önce yazdığım bu blog yazısında bu teknikler hakkında daha fazla bilgi edinebilirsiniz:

http://www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/

Umarım yardımcı olur!

Şerefe, Paul.


2
Ayırma ekseni teoremi: iki dışbükey nesnenin çıkıntılarının, nesnelerin ayrık olması durumunda ayrıldığı bir eksen vardır. Ayırıcı bir eksen testi: yukarıda bahsedilen teoremi uygulamaya koymak sanırım.
Eric

0

Bu gerçekten sahip olduğunuz oyunun türüne bağlıdır. Yukarıdaki her yöntemin kendi ödünleşimleri vardır.

Ancak SAT, jenerik fizik liberies deneyimimde oldukça standarttır, Örn. Box2D yaygın olarak kullanır (Angry Birds ve diğer birçok oyun Box2D kullanır).

Sonic, Megaman gibi oyunlarda SAT veya Hitbox kavşağı ile karıştırılmış renk kavşağı varyasyonları iyi sonuçlarla kullanılır.

# 4 ve # 5 hakkında fazla bir şey bilmiyorum.

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.