jak bede mial chwilke wolnego czasu to z checia napisze cos ciekawego :)
"te" sprawy raczej nie sa skomplikowane :)
glLoadIdentity(); // "zeruje" wszytskie poprzednie przeksztalcenia
glPushMatrix(); // wrzuc macierz na stos
glTranslatef(0,0,-2); //przesun po osi z (widocznosc w zaleznosci od rzutowania jest przewaznie < 0, wiec trzeba przesunac wglab ekranu dany obiekt, aby byl widoczny
rysuj(); // tutaj swoj obiekt np glColor3f(...),glBegin(GL_QUADS);glVertex3f(0.0,0.0,0.5); itd...
glPopMatrix();//wracasz to poprzedniego stanu na stosie
glPushMatrix();//to juz znasz
glTranslatef(-0.5,0,-0.4);//to tez
glRotatef(katy,0,1,0); //obroc scene o dany kat wg danej osi - to bedzie obracany wg osi y
rysuj();
glPopMatrix();
katy++;
po pierwsze trzeba znac operacje przeksztalcen, po drugie mniej wiecej orientowac sie, jak tego uzywac. ja juz raz komus o tym pisalem, ale napisze jeszcze raz, jak to latwo sobie przyswoic:
wyobraz sobie, ze stoisz na srodku pokoju - to jest twoje miejsce 0,0,0
wyobraz sobie, ze trzymasz pudlo z kartonu, zwrocone jedna ze scian na wprost ciebie
teraz
glTranslatef(0,0,-2)
znaczy tyle, co zrob 2 kroki do przodu (bo w openGL w glab ekranu leci os -Z)
teraz
rysuj();
czyli postaw swoj karton tak, jak go trzymasz (przodem do ciebie)
glTranslatef(0,0,2)
zrob 2 kroki w tyl
jestes w punkcie wyjscia, twoj karton znajduje sie przed toba w odl 2 kroki.
zamiast cofania sie 2 krokow, moznabylo uzyc techniki z odlozeniem macierzy na stos przez
glPushMatrix();
przed krokiami w przod, a powrot do punktu wyjscia zalatwiloby
glPopMatrix();
ok, mamy pierwwszy obiekt, czas na drugi, obracajacy sie w tym czasie, stoisz w punkcie 0,0,0
teraz uzyjemy
glPushMatrix();
aby zapamietac ten stan,
glTranslatef(0,3,-2)
teraz jestesmy 2 kroki w przod i jakby 3 stopnie w gore (jestesmy nad poprzednim obiektem)
teraz dajemy
glRotatef(katy,0,1,0);
rysuj();
glPopMatrix();
co oznacza, ze stajac w punkcie 0,3,-2 obracamy sie o jakis kat, po czym kladziemy nasze pudlo kartonowe przodem do nas, a ze my jestesmy obroceni w stosunku do punktu wyjscia, to pudlo bedzie przekrecone o ten kat (inaczej:
jest nasz dwoch, ty zostajesz w punkcie wyjscia, ja ide 2 kroki do przodu, 3 stopnie do gory, obracam sie 30stopni w lewo, klade karton, dla mnie o jest na wprost, dla ciebie jest od oddalony, w dodatku przekrecony)
aby dobrze wszytsko dzialalo, teraz musimy wrocic do puntku wyjscia, poprzez
glPopMatrix();
(glPopMatrix zalatwia nam cala droge powrota do ostatniego punktu, w ktorym dalismy glPushMatrix(), inaczej bysmy musieli robic kroki w tyl, do tego przedtem odwrocic sie o kat do pozycji przed naszym obrotem).
A wiec stoimy w punkcie 0,0,0. widzimy 2 obiekty,jeden pod drugim, poki co sie nie obraca ten gorny, bo nie zmienia sie kat,wiec dodajemy:
katy++;
co zapewni nam zmiane kata co obiek petli
jesli chcesz, aby ktorys z obiektow sie poruszal, wstaw jakies zmienne,np
posxObj1+=0.05;
glTranslatef(posxObject1,posyObj1,poszObj1);
rysuj();
dzieki czemu obiekt bedzie sie przesuwal w prawo (jesli nie dasz jakiegos ograniczenia, to w koncu zniknie z pola widzenia,
mozesz tez zamiast zmieniania co przejscie petli, uzaleznic wartosci posx,posy,posz od klawiatury.
Kody pisalem z glowy, wiec moga zdarzyc sie literowki, chodzilo mi o ogolny zarys, mam nadzieje, ze choc troszke przyblizylem, ale w razie czego sluze pomoca, tudziez kodem "zywcem wyjetym" z jakiegos z moich projektow, gdzie roi sie od ruchomych obiektow ;)
PS>> widze, ze od czasu jak zaczalem pisac, do czasu, jak wyslalem doszlo "8 nieprzeczytanych wiadomosci w tym temacie" - to wszystko przez to, ze w miedzy czasie wypisywalem kartki swiateczne z zona i podrzucala mi wycinane kurczaczki i je kleilem do kartek ;)
jesli chodzi o dyskusje o opengl, ja jakos ostatni sie wlasnie za niego wzialem, i sam nie wiem, jak okreslic moje umiejetnosci, na pewno poczatkujacy - ale taki temat jak poruszanie sie po scenie to raczej nic skomplikowanego dla mnie (teraz probuje osiagnac efekt rozmycia w ruchu itd, wieloteksturowanie, doksztalcam teorie pisania shaderow, wiec mam nadzieje za nieglugo cos zaczac pisac)
jak tylko czas pozwoli, wrzuce jakas scenke napisana przeze mnie, zeby sie pochwalic co juz udalo mi sie idac droga kursu opanowac