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

[OpenGL] Koordynaty otoczenia

Ostatnio zmodyfikowano 2013-05-23 19:28
Autor Wiadomość
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.
P-82861
SocrateZ
Temat założony przez niniejszego użytkownika
» 2013-05-18 08:15:30
No ja dziękuję za taką pomoc.
P-83213
Wasilek
» 2013-05-18 10:18:51
Jeżeli dobrze zrozumiałem, to tutaj powinieneś znaleźć odpowiedź http://forum.unit1.pl/topic /1539-opengl-uklad-wspolrzednych-winapi-i-uklad-opengl/
P-83214
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 ;)
P-83626
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.html
http://www.bfilipek.com/2012/06/select-mouse-opengl.html

W 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!
P-83719
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.
P-83727
« 1 »
  Strona 1 z 1