Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[opengl] kolizja z obracajaca sie przeszkoda

Ostatnio zmodyfikowano 2010-11-18 23:55
Autor Wiadomość
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.
P-24107
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? 
P-24132
VND
» 2010-11-18 23:55:21
Mogę Ci jedynie polecić nieśmiertelne tutoriale NeHe.
Lekcja 30 - Kolizje
Być może znajdziesz coś ciekawego.

P-24133
1 « 2 »
Poprzednia strona Strona 2 z 2