Reak Napisano Wrzesień 14, 2009 Zgłoś Share Napisano Wrzesień 14, 2009 Witajcie, mam taki problem: Mam przestrzeń 3d a w niej załóżmy jeden obiekt. Niektórzy z was zapewne grali kiedyś w strategię w przestrzeni 3d. W takiej strategi można kliknąć na obiekt zeby go zaznaczyć no i własnie tu się pojawia mój problem.Jak mam na niego kliknąć? Myślałem nad rzutowaniem tego punktu 3d na współrzędne tego obiektu w oknie no ale nie wiem czy to jest najlepszy pomysł. A nawet jak jest to jaki tu będzie algorytm.Bardzo proszę o pomoc.Pozdrawiam Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Wrzesień 14, 2009 Zgłoś Share Napisano Wrzesień 14, 2009 Ja to mam tak: Należy stworzyć promień, który zaczyna się w kamerze i idzie w kierunku Twojego punktu. Początek promienia to współrzędna kamery. Kierunek to wektor, gdzie z=1, a x =(2*MouseX-1)/Macierzprojekcji[0,0], y = ((1-Mousey)*2-1)/Macierzprojekcji[1,1] MouseX - 0..1 (czyli dzielimy piksele przez szerokość, a MouseY - 0..1(ale uwaga są od górnego lewego rogu, dlatego są inne przekształcenia aby było od lewego dolnego). Kierunek to punkt na płaszczyźnie oddalonej o 1 punkt od kamery. Jeszcze musimy przemnożyć nasz kierunek przez odpowiednią macierz aby patrzył tam gdzie kamera. Czyli pobieramy macierz transformracji, zerujemy jej kolumne/wiersz, która przesuwa punkt (zalezy czy kolumna czy wiersz od naszej implementacji), odwracamy, wymnażamy przez kierunek, kierunek normalizujemy i gotowe. Kolizje z boxem są trudniejsze, znaczy kod zależy od implementacji wielu rzeczy i nie mogłem sam uzyć gotowego kodu z neta. Ogólnie na lighthouse3d jest o tym Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Reak Napisano Wrzesień 14, 2009 Autor Zgłoś Share Napisano Wrzesień 14, 2009 A możesz prostą implementację tego podesłać? Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Wrzesień 15, 2009 Zgłoś Share Napisano Wrzesień 15, 2009 Na lighthouse3d.com też są proste implementacje, ale proste implementacje nic nie dają bo mają dużo założeń do innych części kodu, np. jak ma się kolejność mnożenia macierzy, czy np. macierz przesunięcia ma wartości przesunięcia w 4 wierszu czy w 4 kolumnie, z resztą też ważne czy indeksuje się od 0, czy 1, czy wektor mnoży się z prawej strony macierzy czy z lewej. Musisz tam oglądnąć i zrozumieć ich kod, a potem u siebie zastosować po odpowiednich przeróbkach aby pasował do Twojej implementacji Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Reak Napisano Wrzesień 15, 2009 Autor Zgłoś Share Napisano Wrzesień 15, 2009 No ok a wiesz dokłądnie który to tutek? bo tam jest ich parę Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Wrzesień 15, 2009 Zgłoś Share Napisano Wrzesień 15, 2009 Link Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.