Witam. Mam do zrobienie mały projekcik z robotem, a moja wiedza z OpenGL jest zbyt mała, żeby sobie z tym poradzić.
Na razie mam takie coś: http://s5.ifotos.pl/img/foto1JPG_saqwwhw.jpg
Moje pytanie dot. poruszania tym obiektem. Cały tułów ma poruszać się dookoła osi Y na nogach, które będą nieruchome. Ręce również się poruszają. Problem polega na tym, że gdy napisałem komendy ruchu dla drugiej ręki, to poruszała się ona niewłaściwie, ponieważ miały na nią wpływ wcześniejsze przekształcenia współrzędnych, dlatego zastosowałem gl<Push/Pop>Matrix(). Następnie dodałem poruszanie tułowiem, tylko że jest on w innym glPushMatrix'ie niż ta druga ręka i w trakcie jego obrotu ręka pozostaje w miejscu:
http://s5.ifotos.pl/img/foto2JPG_saqwwhs.jpg
Wiecie jak to połączyć w jedną całość? Funkcja, w której się to dzieje:
void robot(double d1, double d2, double d3)
{
glPushMatrix();
glTranslated(0, -16, 0);
glRotated(d1, 0, 1, 0); //ruch tułowiem
tulow();
//lewa łapa:
glTranslated(31, 50, 0);
glRotated(-90, 0, 1, 0);
glRotated(-60+d2, 0, 0, 1); //ruch całą lewą łapą
ramie(11, 7, 4, 30); //od barku
glTranslated(30, 0, -3);
glRotated(d3, 0, 0, 1); //ruch dolną częścią ręki
ramie(9, 6, 3, 20); //od łokcia
glPopMatrix();
glPushMatrix();
//prawa łapa:
glTranslated(-30, 33, 0);
glRotated(-90, 0, 1, 0);
glRotated(-60+d2, 0, 0, 1); //ruch całą prawą łapą
ramie(11, 7, 4, 30); //od barku
glTranslated(30, 0, 3);
glRotated(d3, 0, 0, 1); //ruch dolną częścią ręki
ramie(9, 6, 3, 20); //od łokcia
glPopMatrix();
}