[opengl] kolizja z obracajaca sie przeszkoda
Ostatnio zmodyfikowano 2010-11-18 23:55
DejaVu |
» 2010-11-18 05:23:51 Model wzorcowy jest jeden, ale obiektów na scenie jest 5 i każdy posiada inne współrzędne. Nawet jeżeli przyjmiemy, że będziesz co i rusz dokonywał translacji to i tak najpierw musisz nanieść obiekty na scenę, a potem sprawdzać czy zaszły jakieś kolizje. Ruch między klatką A a klatą B możesz reprezentować poprzez rozciągnięcie obiektu z pozycji X do pozycji Y. Jeżeli zajdzie kolizja takiego obiektu z czymś innym to znaczy, że musisz ustalić przybliżony czas zderzenia obiektów i bleble... generalnie masa roboty jest z tym, a Ty jeszcze walczysz z 3D o ile się nie mylę, więc powodzenia :) Sam w swoim silniku nie do końca zaimplementowałem te funkcjonalności tak więc z chęcią zapoznam się z Twoim rozwiązaniem. |
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2010-11-18 23:42:40 wychodzi na to, ze kolizje na dynamicznej scenie do latwych nie naleza...rozrysowalem sobie na kartce (od kilku dni moje programowanie toczy sie olowkiem na papierze ;) ale od czasu doczasu tak najlepiej sie rozwiazuje problemy) wymyslilem taki sposob, przedstawie na 2d(jutro sprawdze czy dziala)
1. obiekt1 bedzie reprezentowal odcinek AB 2. obiekt2 bedzie punktem P 3. obydwa obiekty sa ruchome o nieznanych predkosciach - jednak stosunkowo duzych, aby przeniknac przez siebie w jednostce
syt 1. ruch linii:
A.(przed ruchem) A' | | | .P | | | | | B B'
w momencie ruchu, zapamietujemy wsp x,y dla A i B mnozymy przez macierz przemieszczenia (czy tam dodajemy wektor przesuniecia, wiadomo o co chodzi) mamy 4 punkty A,B,A',B'
rysujemy linie tworzac czworokat zapamietujemy najbardziej oddalona wsp na osi x z tych czterech pkt (za chwile sie okaze po co) z pkt P rysujemy linie pozioma,o jedna jednostke dluzsza na osi x, niz najwieksza wartosc x dla punktow liczymy ilosc przeciec (z iloma odcinkami tworzacymi wielokat przecina sie odcinek od pkt P), jesli nieparzysta liczba - pkt jest w srodku - znaczy sie, ze na przestrzeni czasu doszlo do kolozji - pkt P stal na drodze
liczymy odleglosc od prostej do pkt przed ruchem, liczymy po jakim czasie bedzie kolizja - dla obliczonego czasu liczymy, gdzie w tym momencie znajdowalby sie punkt - jesli w wielokacie - znaczy sie ze nie ucieklby z trasy przed kolizja
syt 2. ruch punktu - tu sprawdzamy, czy wektor ruchu punktu przecina linie AB, i podobnie czas kiedy przetnie i odleglosc i czy prosta w tym czasie bedzie sie tam znajdowala
oczywiscie najpierw sprawdze na 2d, pozniej mozna to zamienic na wierzcholki w szescianie(lub innych brylach przestrzennych utworzynych przez wierzcholki przesuwajacej sie sciany - zasada ta sama
to tak na szybko - pewnie w miare wdrazania w zycie wyjda nowe problemy - poki co jest co sprawdzic - oczywiscie trzeba sprawdzic czy odcinek ze srodka nie biegnie po linii miedzy A a A' (wtedy np nie wykryje przeciec - zalezy od napsiania metody) itd - takie rozne szczegoly, na ktore poki co nie bede zwracal uwagi
jakies komentarze? wyglada ok, czy raczej mija sie z celem?
|
|
VND |
» 2010-11-18 23:55:21 Mogę Ci jedynie polecić nieśmiertelne tutoriale NeHe. Lekcja 30 - KolizjeByć może znajdziesz coś ciekawego. |
|
1 « 2 » |