OpenGL - wpływ współrzędnych na poruszanie obiektem, gl<Push/Pop>Matrix()

0

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();
}
3

prawa ręka niech będzie w głównym push/popie razem ze swoim push/popem. Lewą rękę zostaw tam gdzie jest, tylko niech też ma swój push/pop.

Albo...

przenieś pierwszy push do linijki pod komentarzem "lewa lapa". Jeśli nie rysujesz innych obiektów niż robot, to transformacje tułowia nie będą w niczym przeszkadzały.

BTW. Politechnika Rzeszowska ;) ? Ramiona podobne... Ale na politechnice ciało robota to był walec.

2

Wykorzystałem Twój pierwszy sposób i działa idealnie, dzięki wielkie! :)

Dokładnie - PRz :D Ramiona te same, tylko inne wymiary, wykorzystane do projektu z grafiki na zaliczenie ;)

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