1 / 86

Detekcija trkov

Detekcija trkov. Pomen detekcije trkov. Posebno pomembna in atraktivna v Navideznih okoljih (VE, Virtual Environment) . Ne glede na to, kako dobro izgleda VE, bo realističnost slaba, če ne bomo imeli detekcije trkov . Vendar imamo lahko v navideznem svetu na stotine ali tisoče predmetov.

berit
Download Presentation

Detekcija trkov

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Detekcija trkov

  2. Pomen detekcije trkov • Posebno pomembna in atraktivna vNavideznih okoljih (VE, Virtual Environment). • Ne glede na to, kako dobro izgleda VE, bo realističnost slaba, če ne bomo imeli detekcije trkov. • Vendar imamo lahko v navideznem svetu na stotine ali tisoče predmetov.

  3. Uporaba odkrivanja trkov • Odkrivanje, ali je nek igralec trčil ob steno ali oviro • Da bi preprečili njegov prehod “skozi” steno ali oviro • Določanje, ali je nek izstrelek zadel cilj • Odkrivanje točke, ko se mora obnašanje spremeniti • Avto v zraku ob povratku na tla • Čiščenje animacije • Preprečevanje, da bi noga osebka prešla skozi pod • Simulacija gibanja nekaterih oblik • na primer tkanin ipd

  4. Pomen • Brez detekcije trkov (CD, Collision detection) bi premikajoča se telesa prehajala eden skozi drugega. • Detekcija trkov je pomembna pri mnogih področjih uporabe: • fizikalno osnovane simulacije • robotika • navidezna resničnost • igre

  5. Kaj je odkrivanje trkov? • Predmeti zasedajo, delno ali v celoti, isto lokacijo ob istem času. • Takemu scenariju pravimo trk. • Trki v večini primerov vodijo v dogodke – • Krogla, ki zadene škatlo z eksplozivom, sproži eksplozijo in morda druge dogodke (na primer zmanjšanje števila življenj igralcev v bližini take eksplozije). • Vendar, to še ni vse – • V idealnem primeru bi morali znati napovedati točen trenutek trka dveh predmetov (pravi trk). • Vprašanje: kako to doseči in obdržati učinkovitost programa? • Odgovor: zelo težko.

  6. Rokovanje s trki Rokovanje s trki = odkrivanje trkov (geometričen problem) + odziv na trke (dinamičen problem) Preprost pristop:

  7. Odkrivanje trkov • Odkrivanje trkov, tako, kot to uporabljamo pri igricah, običajno pomeni odkrivanje preseka kakršnekoli oblike • Intersection detection (tudi interference detection)je splošen problem: ugotavljamo, ali se dve telesi sekata– tipično statičen problem (predvsem pri modeliranju trdnih teles) • Collision detectionje v splošnem dinamičen problem. Ugotavljamo, ali pride do trka dveh gibajočih se teles • Pomembna razlika: Odkrivanje trkov (Collision detection)govori o algoritmih za ugotavljanje trkov tako v času kot v prostoru

  8. Odkrivanje trkov pri igrah • Streljanje • Udarci, sekanje, drobljenje,.. • Trki avtomobilov • To je drago (O (N2) ), potrebni so testi!!

  9. Problem N teles • Vključuje testiranje parov poligonov • inherentna kompleksnost N2 • Strategije: • Prostorska delitev • Večfazni algoritmi • Kategorizacija predmetov (dinamični, statični,..) • Časovna kohezija

  10. Večfazna strategija • Ugotavljamo možnost trkov med predmeti (izločimo tiste, ki ne morejo trčiti) • Odkrivamo ploskve, ki trčijo in določimo točko stika Širša faza (broad): Ugotavljamo, katere pare testirati Ožja faza (narrow): Testiramo posamezne pare

  11. Različne vrste teles v trku • Trije nivoji težavnosti: • Konveksna toga telesa • Splošna toga telesa • Telesa, ki se lahko deformirajo

  12. Terminologija Convex Concave Non-Manifold Manifold Objekt je konveksen, če je za vsak par točk znotraj objekta črta, ki jih povezuje, tudi znotraj objekta. Ploskev je mnogovrstna (manifold), če je vsaka točka na njej homeomorfična (po obliki podobna) disku. Grobo rečeno, na vsakem robu se stikata dve ploskvi.

  13. Tipi geometrije • Točke • Črte, žarki, daljice • krogle, cilindri, stožci • Kocke, kvadri- Osno ali poljubno poravnani • AABB: Axis aligned bounding box • OBB: Oriented bounding box • k-dops – oblike, omejene s ploskvami v fiksnih usmeritvah • Konveksne poljubne mreže trikotnikov • Konkavne mreže lahko razbijemo v konveksne dele • Trikotniška “juha” • Še bolj splošne ukrivljene ploskve (kar pa se v igrah praktično ne uporablja) AABB OBB

  14. Izbira algoritma • geometrija predmetov v trku je glavni faktor izbire algoritma za detekcijo trkov • “Predmet”je lahko točka ali daljica • Predmetima lahko določeno obliko: krogla, trikotnik, kocka, … • Predmeti so lahko konkavni ali konveksni, polni ali votli, trdni ali spremenljive oblike, • Način gibanja predmetovje drugi faktor • Različni algoritmi za hitre ali počasne predmete • Različni algoritmi glede na to, kako pogosto moramo predmete osveževati • Vsi drugi faktorji so seveda hitrost, preprostost in robustnost

  15. Strategije odkrivanja trkov • Najprej hitri preprosti testiki odstranijo veliko potencialnih trkov • Test obsegajočih teles (bounding volumes) pred preverjanjem posameznih trikotnikov • Izkoriščanjelokalnostiodstrani mnogo potencialnih trkov • N.pr.: Uporaba celičnih struktur za izogibanje obravnave oddaljenih objektov • Uporabimo čimveč podatkov o geometriji • N.pr.: Krogle omogočajo hitro ugotavljanje trkov • Izkoriščanje koherence med zaporednimi testi • Stvari se med dvema slikama ne spreminjajo veliko

  16. Robustnost • Algoritem detekcije trkov je robusten, če: • Nikdar ne pade v neskončno zanko • Tudi v “nemogočih” primerih • Vedno da smiseln odgovor ali eksplicitno pove, da odgovora ne more dati • Lahko obravnava poljubne geometrijske oblike • Lahko odkrije probleme z vhodno geometrijo (posebno, če predpostavljamo določene geometrijske predpogoje, kot je na primer konveksnost) • Robustnost težko dosežemo

  17. Detekcija trkov s pomočjo obsegajočih krogel (kvadrov) • Če se dve obsegajoči krogli (kvadra) dveh teles ne sekata, ni trka med obema telesoma. • Kako ugotavljamo sekanje dveh krogel ali kvadrov? • Če se obsegajoči prostornini sekata, je morda prišlo do trka med telesoma. • Ali pa tudi ne. • Vsa telesa imajo dobrih obsegajočih prostornin (na primer zelo ploska telesa). • Hierarhično drevo obsegajočih prostornin (krogel, kvadrov)

  18. Teorem ločitvene osi Dva konveksna objekta sta ločena le, če obstaja os, na kateri sta njuni projekciji ločeni Če take, ločitvene osi ni, se objekta sekata

  19. Obsegajoča krogla in kvader • Obsegajoča krogla: najmanjša krogla, ki lahko vsebuje dano telo. • Poiščemo lahko središče telesa in polmer krogle (morda že v času modeliranja) • Pogosto ni dovlj natančno. Je pa uporabno kot začetno preverjanje pred uporabo bolj kompleksnih algoritmov. • Slabo za dolge in ozke predmete • Osno poravnan obsegajoči kvader (axisalignedBounding box): minimalne koordinate telesa v smereh x, y, z • Ni neodvisen od transformacij. Po vsaki transformaciji (n. pr. rotaciji) ga moramo ponovno računati. • Se bolje prilagaja telesom nepravilnih oblik • Vsak kvader ima 6 ploskev. Preverjanje presečišč med ploskvami je enostavno • Če neka ploskev seka drugo, sta (morda) telesi trčili

  20. Obsegajoči kvader • Prostorska kompleksnost • Za vsak objekt moramo pomniti 8 točk, ki predstavljajo obsegajoči kvader • Zato je prostorska kompleksnost O(8) • Časovna kompleksnost • Vsako ploskev posameznega kvadra moramo (min-max) preverjati z vsemi ploskvami vseh drugih kvadrov. • Zato: O((6n)2) = O(n2) ( n je število teles) • Prednosti • Zelo enostavna implementacija • Potrebujemo zelo malo prostora • Slabosti • Zelo groba detekcija • Zelo počasno, če je na sceni veliko teles

  21. Obsegajoče krogle (Bounding Spheres) • Izbrati moramo tako središče, ki minimizira polmer • Krogle puščajo veliko praznega prostora okrog objekta, slabo prileganje! • Enostavno ugotavljanje prekrivanj med kroglami • Hitro ugotavljanje prekrivanj teles v gibanju

  22. Obsegajoče krogle • Prostorska kompleksnost • Za kroglo vsakega objekta pomnimo 2 vrednosti (središče in polmer) • Torej, kompleksnost O(2) • Potrebujemo nekaj manj prostora kot pri obsegajočih kvadrih • Časovna kompleksnost • Ugotavljati moramo prekrivanje vsake krogle z drugimi kroglami • Torej, O(n2) (n je število objektov) • Precej manj računanja kot pri obsegajočih kvadrih! • Prednosti • Še bolj enostavna uporaba • Potrebujemo še manj prostora • Slabosti • Groba detekcija • Počasnost pri velikem številu objektov

  23. Poravnani obsegajoči kvadri (Aligned Bounding Boxes) • Primerjava osno poravnanih in objektno poravnanih kvadrov • Osno poravnani se med gibanjem objekta spreminjajo • Lahko aproksimiramo z obsegajočim kvadrom vrtečega se objekta

  24. Usmerjeni obsegajoči kvadri (OBB) • Težja implementacija, vendar bolj natančno odkrivanje prekrivanj v primeri z AABB. • Ker pričakujemo boljše prilagajanje objektom, je tudi drevesna struktura bolj enostavna. • Boljše ujemanje • Hitro osveževanje pri gibanju trdnih teles

  25. Teorem osi ločitve pri OBB Testiranje OBBs temelji na ugotavljanju, če ni ločitvenih osi (tako kot pri AABB). Vendar imamo v 3D prostoru 15 potencialnih osi. In te ne ležijo na ravninah (X, Y, Z). Ugotavljati jih moramo iz usmeritve obravnavanih OBB. • Za preverjanje v 3D potrebujemo 15 osi: • 3 osi ploskev za vsak objektno usmerjen kvader (OBB) • 9 osi z vektorskim produktom rob/rob

  26. Prekrivanje poliedrov (k-dop) Poliedri definirani s k/2 normalami Posplošitev koncepta AABB Pogosto dobro ujemanje • Teorem ločitvene osi: • Dva konveksna poliedra A in B sta ločena, če obstaja ločitvena os, ki je pravokotna bodisi na: • Ploskev objekta A • Ploskev objekta B • En rob A in en rob B

  27. Posledice izbire obsegajočega volumna • Večanje: • Kompleksnosti • Tesnosti prileganja • Cene testov prekrivanja

  28. Problemi z veliko telesi • Pogosto v igricah z veliko igralci ali agenti • “Trk” ne pomeni nujno prekrivanja, lahko pomeni tudi “dovolj blizu za reakcijo” • Preprečiti želimo obravnavo vseh možnih parov (cena n2) • Ena rešitev je delitev prostora (Spatial subdivision) • Interakcije objektov izvajamo v dveh korakih: najprej “v kateri celici sem”, nato “kdo je šev tej celici”? • Različne podatkovne strukture za delitev prostora: fiksna mreža, Osmiška drevesa, Kd-drevesa, BSP drevesa, … • Rešitev najdemo tudi v shemah z obsegajočimi kvadri (bounding boxes) • Hierarhije obsegajočih kvadrov

  29. Hierarhije z delitvijo prostora Osmiška drevesa Enakomerne mreže KD drevesa BSP drevesa

  30. Hierarhije z delitvijo objektov BVH – Bounding Volume Hierarchies OBB drevesa K-dop Ključna značilnost hierarhij obsegajočih volumnov je, da ne delimo celotnega prostora, temveč le tistega, ki je zaseden z objekti

  31. Delitev prostora z enakomerno mrežo

  32. Delitev prostora s hierarhično mrežo

  33. Delitev prostora s KD drevesi

  34. BSP drevesa • BSP (Binary Space Partitioning) drevesa uporabljamo za delitev 3D objekta v manjše delčke zaradi lažje primerjave • Objekte rekurzivno razbijamo na delčke in te vstavljamo v drevo • Delitev ustavimo, ko: • 1: dosežemo neko minimalno fizično velikost • 2: dosežemo maksimalno globino drevesa (n.pr. 6 nivojev) • 3: postavimo vsak poligon v en list • Testiramo preseke med delčki dveh objektov

  35. Odkrivanje trkov z BSP drevesi • Rekurzivno potujemo po BSP drevesih in preverjamo, če se elementi na zaporednih nivojih dreves sekajo: • Če ugotovimo, da sekcije testiranih dreves imajo poligone: • Če smo na notranjem nivoju drevesa, sumimo trk in nadaljujemo z rekurzijo • Če smo na spodnjem nivoju drevesa, testiramo sekanje poligonov • Če ena od opazovanih sekcij testiranih dreves nima v sebi poligonov, preseka in s tem trka ni. • Prednosti • Dobra fina detekcija • Slabosti • Težavna implementacija • Še vedno kar počasno • Potrebujemo veliko prostora

  36. BSP drevesa in kompleksnost • Prostorska kompleksnost • Za vsak objekt pomnimo BSP drevo z linki na otroke • Zunanji vozli so poligoni s celoštevilčnimi koordinatami • Prostor je zato odvisen od števila nivojev h drevesa, in števila poligonov (običajno trikotnikov), n • Zato je prostorska kompleksnost (4h + 3n) in Ω(4h + 3n) • Časovna kompleksnost • Testirati moramo vsak objekt z vsakim - n2 • Če ugotovimo presek na nivoju 0, moramo jiti čez drevo - O(h) • Predpostavimo vsa drevesa iste višine • Vpliv števila presekov, m v • Torej, O(n2 + m*h) in Ω(n2)

  37. Izgradnja hierarhije • Osnovni pristopi: • Od zgoraj navzdol • Od spodaj navzgor • Inkrementalni vnos • In odločitve: • Tip obsegajočih prostornin (BV type) • Stopnja vozlov • Primitivi v listih • Uravnovešeno drevo ? (ni vedno najboljše)

  38. Algoritmi za drevesa obsegajočih volumnov • Drevo krogel • Drevo OBB • Drevo poliedrov • Ocena učinkovitosti je težavna • Noben algoritem ni vedno najboljši • Scenariji se od aplikacije do aplikacije spreminjajo

  39. Hierarhija obsegajočih volumnov (BV) Drevo BV: nivo 2 Drevo BV: nivo 5 Drevo BV: nivo 8 Drevo BV: nivo 1 Drevo BV: nivo 0 14-dop 6-dop 18-dop 26-dop

  40. Okrivanje trka s hierarhijo BV B A A D B C C D E E • Algoritem je rekurziven. • Če odkrijemo trk in zunanji vozli veje niso prazni, jih prehodimo. • Če odkrijemo trk in so zunanji vozli enaki null, je prišlo do trka v tekočem vozlu strukture. • Če ne odkrijemo trka pri vseh vozlih, kjer so zunanji vozli null, do trka pač ni prišlo (v našem grafu bi morali zabeležiti trk v vozlih B,ali D).

  41. TestBVH(A,B) { if(not overlap(ABV, BBV) return FALSE; else if(isLeaf(A)) { if(isLeaf(B)) { for each triangle pair (Ta,Tb) if(overlap(Ta,Tb)) AddIntersectionToList(); } else { for each child Cb of B TestBVH(A,Cb); } } else { for each child Ca of A TestBVH(Ca,B) } } Okrivanje trka s hierarhijo BV

  42. Hitrost ima prednost pred natančnostjo • Metoda, ki nudi največjo hitrost, bi uporabljala AABB z velikostjo, določeno ob nastopu objekta. • To pomeni, da se AABB tega objekta ne bi spreminjal med transformacijami objekta. • To je problematično pri podolgovatih predmetih. • Okrog njih je ogromno “praznega prostora”. • Bolj realistično bi bilo, če bi se obsegajoči kvader tesno prilega predmetu in vrti z njim. • To pa terja ponovno preračunavanje kvadra, kadarkoli objekt zavrtimo.

  43. Redukcija dimenzije • Če se dve telesi v 3D prostoru prekrivata, se morajo prekrivati tudi njune projekcije na ravnine xy, yz in xy in na oseh x, y in z. • Dva kvadra AABB se sekata samo, če se prekrivajo njune projekcije na vse tri osi. • Zato pa uporabljamo osno poravnane obsegajoče kvadre.

  44. Redukcija dimenzije Prej Potem Kvader A se premika in delno prekrije s kvadrom B

  45. Algoritem Sweep and Prune Sweep and Prune = “Povleci in obreži” • Ugotavljamo po vseh treh oseh (x, y, z), ali prihaja do trka • Oglejmo si dogajanja na eni osi: • Označimo začetek projekcije i-te obsegajoče kocke na to os z si, konec projekcije pa z ei Uredimo seznam vseh si in ei Preletimo seznam od začetka do konca Ko srečamo nek si, zabeležimo tak interval v seznamu aktivnih intervalov Ko srečamo nek ei, odstranimo tak interval iz seznama aktivnih intervalov Vsi intervali, ki ostanejo v seznamu aktivnih intervalov, se prekrivajo!

  46. Algoritem Sweep and Prune Za vsako dimenzijo imamo urejen seznam Imamo Boolovo spremenljivko, ki se spremeni le, če pride do spremembe v urejenih seznamih. Če so na koncu v vseh seznamih te spremeljivke true, je prišlo do prekrivanja med objekti

  47. Ocena algoritma Sweep ˛Prune Sortiranje je drago: O(n*log n) Vendar: izkoriščamo koherenco med posameznimi sličicami! Seznami se ne spreminjajo preveč (uporabimo “insertion sort”). Pričakujemo lahko: O(n) Neugoden primer:

  48. Razdalja med objekti • Soroden problem: • Izogibanje objektom • Del planiranja gibanja je preprečevanje trkov • Veliko algoritmov za detekcijo trkov upošteva tudi čas • Oceniti želimo čas do trka in razdaljo

  49. Detekcija oddaljenosti za konveksne poliedre • Algoritem Lin-Canny • Sledi najbližjo točko med pari verteksov dveh poliedrov • Dobimo podatek o bližini tudi za primer, če se dve telesi ne sekata

  50. Računanje razdalje Računanje razdalje: Primerjajmo to z Približek: Manhattan razdalja: najkrajša stran/2

More Related