Come eseguire il rilevamento delle collisioni nello spazio 3D?


8

Devo scrivere, come si può riassumere, un gioco 3D completo da zero in questo semestre. Fino ad ora ho programmato solo giochi 2D nel mio tempo libero, la transizione non sembra difficile, il gioco è semplice. L'unico problema che ho è il rilevamento delle collisioni. L'unica cosa che ho potuto trovare era AABB, delimitando sfere o raccomandazioni di vari motori fisici. Devo programmare un sottomarino che si muoverà liberamente all'interno di un sistema di caverne, AFAIK Non posso usare le librerie di fisica, quindi nessuna delle precedenti risolve il mio problema.

Fino ad ora stavo usando SAT per il mio rilevamento delle collisioni. Esistono algoritmi simili, fantastici, ma realizzati per la collisione 3D? Non sto parlando di ocre o altre ottimizzazioni, sto parlando del rilevamento diretto delle collisioni di un set di poligoni 3D con un altro set di poligoni 3D. Ho pensato di usare SAT due volte, proiettare la mesh dall'alto e dal lato, ma poi sembra così difficile persino dividere lo spazio 3D in forme convesse. Inoltre, sembra che il calcolo sia eccessivo anche con gli octrees.

Come lo fanno i professionisti? Qualcuno potrebbe far luce.


1
Non è così difficile dividere lo spazio 3D in geometria convessa. Ad esempio usando un albero BSP (partizionamento dello spazio binario).
Maik Semder

Risposte:



1

Ehi, ho scritto di GJK in 3D qui. SAT è più lento di GJK http://in2gpu.com/2014/05/18/gjk-algorithm-3d/


Le risposte di solo collegamento tendono ad essere piuttosto povere, poiché diventano non valide non appena le mosse e non effettuano una ricerca corretta. Valuta di espandere questa risposta per includere alcune informazioni sui dettagli della soluzione che stai cercando di presentare.

oh, ok, ho pensato che
andasse

0

Bene, se non è qualcosa di molto impegnativo e all'avanguardia, potresti iniziare implementando l' algoritmo di rilevamento delle collisioni di Gilbert . Può essere fatto per essere abbastanza veloce e sarà veloce, a condizione che la geometria della collisione non sia così dettagliata (e non deve essere!). Ecco come anche alcuni simulatori fanno il trucco ... qualcosa di più elaborato, probabilmente, prenderà in considerazione più sforzi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.