Nejlepší / efektivní způsob implementace 3D Collision

Již jsem naprogramoval 2D kolizní systém pro předchozí hru. Byl to můj první kolizní systém a ten Byl jsem ošklivý. Hledal jsem kolizi mezi objekty kontrolou všech objektů se všemi objekty. Už jsem slyšel o mřížkovém systému s buňkami, kde objekt bude pouze sledovat kolizi s jinými objekty ze svých aktuálních buněk. Je to opravdu dobrý způsob, jak zkontrolovat kolizi?

Chtěl bych mít dobrou techniku, jak procházet všechny své předměty ve 3D světě.

Odpovědět

Budete potřebovat dobrý algoritmus dělení prostoru, běžně používaný ve 3D jsou oktávy .

Poté můžete modely obklopit ohraničujícími koulemi, do kterých se vejdou úhledně, protože kolize mezi ohraničujícími koulemi se dá snadno vypočítat. Poté, co víte, že se dvě ohraničující koule srazí, můžete buď iterativně zmenšit ohraničující koule a přidat ohraničující koule tak, aby v nich zůstal zakrytý objekt, nebo použít jiný inteligentní algoritmus pro výpočet kolizí mezi dvěma složitými objekty.

Viz tento obrázek: více ohraničujících oblastí

odpověď

nakonec si myslím, že odpověď Vaše otázka bude záviset na potřebách vaší konkrétní aplikace, protože neexistuje univerzální řešení vhodné pro všechny. Ačkoli na webu existuje řada slušných zdrojů, ušetříte si spoustu času a frustrace vyzvednutím Detekce kolizí v reálném čase Christera Ericsona, která podrobně stanoví širokou škálu technik a algoritmů, například s kódem C ++.

Pomohlo mi to udělat dětské kroky, než jsem skočil do pokusu o vybudování velkého systému. Psaní funkce k určení, zda je bod v rovině, n je-li bod v trojúhelníku, je-li paprsek v trojúhelníku atd. Poté se přesuneme ke statickým zkouškám různých konvexních těles: AABB vs. trojúhelník atd. Časem se věci, které se na první pohled zdály neproniknutelné (odpusť slovní hříčku), staly méně skličující. Zde je seznam dobrého počtu testů s ukázkovým kódem:

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

Mezitím, protože vím, že ne každý si může podle své vůle vyklopit 70–80 $ za knihu, zde je několik termínů, které byste možná chtěli prozkoumat:

  • Prostorové dělení, oktávy, kvadrantové stromy, stromy BSP
  • Stromy BIH
  • Hranice svazků a hierarchie svazků
  • Diskrétní vs. kontinuální detekce kolizí
  • Věta o oddělující ose
  • Algoritmus GJK

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *