3D Çarpışma Uygulamanın En İyi / Etkili Yolu


16

Zaten önceki bir oyun için 2d tabanlı bir çarpışma sistemi programladım. Bu benim ilk çarpışma sistemimdi ve çirkindi. Tüm nesnelerle tüm nesneleri kontrol ederek nesneler arasında çarpışma arıyordum. Zaten bir nesnenin sadece mevcut hücrelerden diğer nesnelerle çarpışmaya bakacağı hücreler içeren bir ızgara sistemi duydum. Çarpışmayı kontrol etmek gerçekten iyi bir yol mu?

3B dünyadaki tüm eşyalarımı döngüye sokmak için iyi bir teknik istiyorum.

Yanıtlar:


11

Sen yaygın 3D kullanılan iyi bir uzay bölümleme algoritması, ihtiyacımız olacak octrees .

Bundan sonra, modelleri vb. Düzgün bir şekilde uydukları sınırlayıcı kürelerle çevreleyebilirsiniz, çünkü sınırlayıcı küreler arasındaki bir çarpışmayı hesaplamak çok kolaydır. İki sınırlayıcı kürenin çarpıştığını öğrendikten sonra, sınırlayıcı küreleri yineleyerek küçültebilir ve nesneyi kapalı tutmak için sınırlayıcı küreler ekleyebilir veya iki karmaşık nesne arasındaki çarpışmaları hesaplamak için başka bir akıllı algoritma kullanabilirsiniz.

Bu resme bakın: çoklu sınırlayıcı küreler


12

Sonuçta, sorunuzun cevabının, uygulamanızın ihtiyaçlarına bağlı olacağını düşünüyorum, çünkü tek bir çözümün hepsine uyan bir boyut yok. Web üzerinde bir dizi iyi kaynak olmasına rağmen, Christer Ericson'ın çok çeşitli teknik ve algoritmaları ayrıntılı olarak ortaya koyan Gerçek Zamanlı Çarpışma Algılama'yı seçerek kendinize çok fazla zaman ve hayal kırıklığı kazandıracaksınız. C ++ kodu.

Büyük bir sistem kurmaya çalışmadan önce bebek adımlarını atmama yardımcı oldu. Bir noktanın bir düzlemde olup olmadığını belirlemek için bir işlev yazma, daha sonra bir nokta bir üçgende ise, bir ışın bir üçgende ise, vb. başlangıçta geçilemez görünen şeyler (punu affet) daha az göz korkutucu oldu. Örnek kodlu çok sayıda testin bir listesi:

http://www.realtimerendering.com/intersections.html

Bu arada, herkesin istediği bir kitap için sadece 70-80 $ ödeyemeyeceğini bildiğimden, işte bakmak isteyebileceğiniz bazı terimler:

  • Uzamsal Bölümleme, Octrees, Quadtrees, BSP ağaçları
  • BIH Ağaçları
  • Sınırlayıcı Hacimler ve Sınırlayıcı Hacim Hiyerarşileri
  • Kesikli ve Sürekli Çarpışma Tespiti
  • Ayırıcı Eksen Teoremi
  • GJK Algoritması
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.