OpenGL Obserwator

0

Hej wszystkim!
Na studiach otrzymałam zadanie do realizacji, które polega na stworzeniu odpowiedniej bryły w OpenGL oraz wykonaniu na niej różnych przekształceń. Jestem całkowicie nowa w tym temacie i o ile budowa samej bryły nie sprawiła większych problemów to kolejne punkty zadania już tak. Jak powinnam rozumieć zdanie: "Następnie do sceny należy dodać „obserwatora”, który dla potrzeb tego projektu może być punktem lub dowolną figurą." W OpenGL z tego co przeczytałam to nie definuje się obserwatora ale dokonuje odpowiednich transformacji. https://stackoverflow.com/questions/16925000/where-stands-the-observer-with-respect-to-the-opengl-coordinate-system
Ponadto do „obserwatora” należy dołączyć wektory skierowane do każdej ściany bryły oraz dodać możliwość zmiany pozycji, a wraz z nią podążania wektorów, poprzez obsługę klawiszy WSADQE. I tutaj moje kolejne pytanie jak dodać wektory skierowane do ściany bryły i jak rozumieć sterowanie klawiszami QE: Q to wektor skierowany do przodu, a E do tyłu?
Na ten moment wektory ukladu współrzędnych rysuję w taki sposób:

glBegin(GL_LINES);
		glColor3f(1,1,1);
		glVertex3f(10,0,0);
		glVertex3f(-10,0,0);
		glVertex3f(0,10,0);
		glVertex3f(0,-10,0);
		glVertex3f(0,0,10);
		glVertex3f(0,0,-10);
	glEnd();

Przepraszam bo pewnie temat i problem jest prosty ale niestety dla mnie stanowi problem.
Będę wdzięczna za jakiekolwiek sugestie.
Pozdrawiam i życzę dużo zdrowia

0

Według mnie obserwator to nic innego jak kolejny model na scenie, którego można przemieszczać przy pomocy ww. klawiszy.

Jeżeli "podłogą" jest standardowo płaszczyzna XY to WSAD może przesuwać "obserwatora" po tej płaszczyźnie. W zależności od tego jak zdefiniujemy co jest przodem a co bokiem (oś X lub Y) to odpowiednio trzeba modyfikować współrzędne obiektu. Zobacz jak to jest zrobione w Blenderze dla kamery:
screenshot-20200320105756.png

w tym programie QE przesuwa kamerę w osi globalnej Z, natomiast W przesuwa kamerę do przodu, czyli w kierunku -Z lokalnej współrzędnej kamery.

Obserwator lepiej, żeby nie był punktem tylko jakąś bardzo prostą bryłą z widoczną "górą" i "przodem" (w blenderze jest to ostrosłup z trójkącikiem). Wektory skierowane to nic innego jak kolejny model zawierający trzy prostopadłe do siebie strzałki i ewentualnie litery XYZ. Można bez liter trzy odcinki ale koniecznie muszą mieć kolory Red dla X, Green dla Y, Blue dla Z. Układ współrzędnych lepiej więc rysować w kolorach:

glBegin(GL_LINES);
        glColor3f(1,0,0); // R/X
        glVertex3f(10,0,0);
        glVertex3f(-10,0,0);
        glColor3f(0,1,0); // G/Y
        glVertex3f(0,10,0);
        glVertex3f(0,-10,0);
        glColor3f(0,0,1); // B/Z
        glVertex3f(0,0,10);
        glVertex3f(0,0,-10);
glEnd();

1 użytkowników online, w tym zalogowanych: 0, gości: 1