SocrateZ Temat założony przez niniejszego użytkownika |
[OpenGL] Koordynaty otoczenia » 2013-05-13 17:27:25 Witam :)
Problem mam z tą biblioteką niemały, Szukałem problemu w internecie tydzień cały. :(
Otóż zacząłem programować prawie rok temu gry 2D w bibliotece Allegro. 2D jak 2D, system nawigacji był prosty, bo przecież to tylko płaszczyzna kartezjańska... Teraz właśnie zacząłem przygodę z OpenGL. Pierwszą rzeczą, którą trzeba było zrobić do mojej wymyślonej gry ( dodam iż ma to być strategia ), było stworzenie generatora terenu. Zrobiłem - OK - działa - cieszyłem się jak dziecko. Tylko po chwili radości przyszła chwila zwątpienia i problem, nad którym głowię się do teraz. Więc do rzeczy. Mam stworzony teren. Ok. Problem w tym, że nie potrafię poradzić sobie z systemem współrzędnych. Ogólna koncepcja jest taka. Klikam na dany punkt na ekranie ( w aplikacji oczywiście ), po czym system przelicza wartości Screen View do World View. Wiem, w internecie jest mnóstwo rozwiązań. Tyle że, ja potrzebuje prawdziwych współrzędnych World View. Co to znaczy? A no to znaczy tyle, że klikam na dany fragment i pokazują mi się realne koordynaty stworzonego świata. Zaznaczam, nie chce pozycji kursora w świecie wyświetlanym na ekranie ( liczonym od środka ekranu ), ale w świecie tworzonym przez OpenGL ( współrzędne te ma kamera ).
Z góry dziękuję za pomoc. |
|
SocrateZ Temat założony przez niniejszego użytkownika |
» 2013-05-18 08:15:30 No ja dziękuję za taką pomoc. |
|
Wasilek |
» 2013-05-18 10:18:51 |
|
DejaVu |
» 2013-05-22 21:50:29 No ja dziękuję za taką pomoc.
|
Tematów każdego dnia sporo się pojawia i niestety Twój temat zginął w otchłani innych problemów. Niemniej jednak kilka dni temu powstał nowy system pozycjonowania tematów na głównej stronie, więc ciekawsze pytania nie będą ginęły w tłumie jak to miało miejsce do tej pory ;) |
|
SocrateZ Temat założony przez niniejszego użytkownika |
» 2013-05-23 17:38:42 Dzięki więc :) Może temat nie zaginie. Co do gluUnProject. Próbowałem już tego. Pobiera ono ( a mianowicie tylko z-buffer, czyli głębie ), a x i y otrzymuje takie, które sobie sam mogę policzyć ( liczone są od środka ekranu, więc w gruncie rzeczy to koordynaty okna a nie układu współrzędnych [w sumie okno to też układ współrzędnych] ). Kurde ale namieszałem... Dobra. Przechodząc do rzeczy i ujmując to trochę inaczej. Metoda której potrzebuję, to prawdopodobnie raycasting ( czy jak to zwą ). Tyle że nawet nie wiem o co w niej chodzi. Próbowałem już Color-Pickingu - fajna sprawa, przyda się przy zaznaczaniu lub wskazywaniu elementów. Tyle że ja chcę konkretne współrzędne kliknięcia. Znalazłem dosyć ciekawe artykuły o raycastingu, może kogoś zainteresuje. Tymczasowo nie mam czasu aby wypróbować cokolwiek, lub przerobić pod allegro z winapi ( choć ostatnio próbuje robić bibliotekę pod winapi, bo allegro mnie wnerwiło, SFML napisane jest w C++ [ choć jest również i wersja c, ale również mnie wnerwia ], a glut jest dziwny ). Może spróbuje coś pokombinować. Oto artykuły: http://sarvanz.blogspot.com/2012/03/probing-using-ray-casting-in-opengl.htmlhttp://www.bfilipek.com/2012/06/select-mouse-opengl.htmlW sumie tam również jest gluUnProject. Tylko nie wiem na jakiej zasadzie te przykłady działają. Chyba nadal namieszałem... :) PS: Pisze w C i będę pisał w C, bo tak mi się podoba! |
|
ison |
» 2013-05-23 19:28:19 Jesteś pewien, że chcesz pisać raycasty od zera? Pomysł to jest to dobry jeśli chcesz się nauczyć jak to działa od podstaw, tj. reprezentacja sceny w drzewie ósemkowym i sprawdzanie najbliższego trójkąta kolidującego z odcinkiem, ale lepiej imo skorzystać z gotowego silnika fizycznego. Pierwszy lepszy oferuje taki feature, możesz np. skorzystać z Bullet, albo całkiem olać OpenGL i wziąć się za jakąś wyższopoziomową metodę - np. Irrlicht gdzie już są zaimplementowane raycasty (chociaż i tak na dłuższą metę lepiej korzystać ze zwykłych silników fizycznych niż tego z Irrlichta). Metoda z colorpickingiem też nie jest zła i nie musi być ona wykorzystywana jedynie do określania tylko, który obiekt został wskazany. Tworzysz FBO, do którego rysujesz scenę i jako teksturę nakładasz pozycję w rgb. |
|
« 1 » |