Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

OpenGL w Delphi pozycja wskaźnika 3D myszy

Integers 15 Cze 2013 12:41 966 2
  • #1 15 Cze 2013 12:41
    Integers
    Poziom 13  

    Witam.
    Znalazłem taki kod, który jednak trochę szwankuje i nie bardzo wiem co można w nim poprawić ale do rzeczy: przy obracaniu kamerą, zmienia się kąt patrzenia na płaszczyznę Z=0 na której jest kwadrat. Na nim ma być wyświetlony "kursor" mniejszy kwadracik w pozycji MyszGL, gdzie MyszGL.z:= MyszGL.z -0.01 żeby go było widać.
    Wszystko gra jeśli kamera patrzy prostopadle do płaszczyzny Z.
    Gdy zmienię kąt kursor się ślizga tylko po tej części "płaszczyzny" leżącej dalej od kamery niż Z=0. Na tej części przybliżonej do kamery .. kursora po prostu brak ale nie do końca, płaszczyzna obrócona wokół osi Y (czyli lewo - prawo) nie wywołuje takiego błędu, natomiast obrócona wokół osi X (pochylona góra - dół) daje taki efekt.

    Byłbym wdzięczny za sugestie.


    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    pozycja kamery
    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    wywołanie
    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    0 2
  • #2 19 Cze 2013 12:05
    #maciejo#
    Poziom 9  

    Zrób może tak:
    1.Ustawiasz rzutowanie perspektywiczne i rysujesz swoją scenę, obracasz itp. nie rysujesz kursora.
    2. Zmieniasz rzutowanie z perspektywicznego na ortograficzne, w OGl było z tego co pamiętam glOrtho2d- wtedy masz tylko współrzędne X i Y.
    3. Pobierasz pozycję myszy, która jest pozycją 2D, przeliczasz jeżeli jest taka potrzeba na współrzędne 2D Ogl i rysujesz.

    0
  • #3 19 Cze 2013 12:14
    Integers
    Poziom 13  

    Tylko że ja potrzebuję to w 3D, tylko dla uproszczenia dałem płasko i Z=0.0.
    Też będzie działać?

    Przykład zastosowania: Link
    po lewej gdy ustawiam kamerę prostopadle do płaszczyzny wszystko gra a po prawej, zwracane współrzędne kursora się rozjeżdżają z myszą.

    0