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

Odpowiedz Nowy wątek
2016-06-05 15:15
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();
}

Pozostało 580 znaków

2016-06-05 17:47
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.

edytowany 1x, ostatnio: Spine, 2016-06-05 17:48

Pozostało 580 znaków

2016-06-05 21:10
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 ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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