Jeśli (w celu wykrywania kolizji) obiekty 3D są reprezentowane w grze przez kule, to jaki jest dobry algorytm do wykrywania kolizji między kulami?
Jeśli każdy obiekt ma pozycję z ostatniej klatki i nową (pożądaną) pozycję, co jest dobrym algorytmem, który zidentyfikuje kolizje, w których kule nie przecinały się w poprzedniej klatce, i nie mogą przecinać się w drugiej klatce, ale przecięli się gdzieś pomiędzy?
źródło
Użyj testu wobulacji, jak pokazano w tym artykule Gamasutra.
źródło
Z czubka mojej głowy:
I to wszystko. Spodziewałbym się, że będzie to dość szybkie.
źródło
Oto kolejny fajny artykuł o Gamasaturze .
źródło
Mówiąc jak ktoś, kto to zrobił: nie warto się męczyć . O ile Twój projekt gry tego absolutnie nie potrzebuje i prawie na pewno nie będzie, poświęcisz znacznie więcej wysiłku na zamiatanie, niż się spodziewasz. I będzie wolniej niż chciałeś.
źródło
W Flipcode jest artykuł na temat uzyskiwania wykrycia kolizji za pomocą matematyki . Ma krąg koła. Istnieje sposób precyzyjnego wykrycia punktu kolizji i sprawdzenia, czy w ogóle występuje kolizja.
źródło
Wykrywanie kolizji dla poruszającego się obiektu jest zwykle nazywane „Obliczaniem objętości przesuwanej”, oto kilka kodów / artykułów na ten temat.
http://www.gpu-voxels.org/demos/ (Demo)
Biblioteki kodów źródłowych:
https://github.com/fzi-forschungszentrum-informatik/gpu-voxels
https://libigl.github.io/tutorial/#swept-volume
https://github.com/gradientspace/geometry3Sharp
Artykuły:
http://gamma.cs.unc.edu/SV/sm03.pdf
https://www.cs.columbia.edu/~allen/PAPERS/abrams.swept.pdf (Niestety nie ma kodu źródłowego)
http://www.realtimerendering.com/intersections.html (raczej duży zbiór linków)
źródło