Witam,
mam dosyć skomplikowany problem. Postaram się go opisać jak najprościej:
mam grę FPS. Załóżmy że gracz sobie biegnie, rozgląda się na około i znalazł piłkę :)
Chciałbym żeby piłka widniała mu przed oczami bez względu na to w którą stronę się spojrzy.
user image
Na obrazku powyżej przedstawiłem co mi się już udało: udało mi się zrobić tak, że piłka jest przed oczami gracza w tej samej odległości niezależnie gdzie się spojrzy, ale tylko w lewo i prawo. Jeżeli spojrzę się w górę stanie się coś takiego:
user image
Natomiast ja chciałbym uzyskać taki efekt:
user image
ale bez zmiany tego gdy spojrzy się w prawo/lewo.
Mam nadzieję że jest to zrozumiałe. Teraz kawałek kodu:

wsp1w += cos((zm.lookLeftRight-90)*piover180) * zm.oddalmyszke;
    wsp2w += sin((zm.lookLeftRight-90)*piover180) * zm.oddalmyszke;
    wsp3w += cos((zm.lookUpDown+90)*piover180) * zm.oddalmyszke;
    //wsp2w += sin((zm.lookUpDown+90)*piover180) * zm.oddalmyszke;
    glColor3f(1.0f,1.0f,1.0f);
    //glRotatef(zm.lookLeftRight,0.0f,1.0f,0.0f); //Obrot w osi Y
    float plus1 = 0.03;
    glBegin(GL_TRIANGLES);
            glColor3f(1,1,0);
                glVertex3f(wsp1w+0,wsp3w+plus1,wsp2w+0);
                glVertex3f(wsp1w-plus1,wsp3w+-plus1,wsp2w+plus1);
                glVertex3f(wsp1w+plus1,wsp3w+-plus1,wsp2w+plus1);

            //glColor3f(1,0,0);
                glVertex3f(wsp1w+0,wsp3w+plus1,wsp2w+0);
                glVertex3f(wsp1w+plus1,wsp3w+-plus1,wsp2w+plus1);
                glVertex3f(wsp1w+plus1,wsp3w+-plus1,wsp2w-plus1);

            //glColor3f(0,1,0);
                glVertex3f(wsp1w+0,wsp3w+plus1,wsp2w+0);
                glVertex3f(wsp1w+plus1,wsp3w+-plus1,wsp2w-plus1);
                glVertex3f(wsp1w-plus1,wsp3w+-plus1,wsp2w-plus1);

            //glColor3f(0,0,1);
                glVertex3f(wsp1w+0,wsp3w+plus1,wsp2w+0);
                glVertex3f(wsp1w-plus1,wsp3w+-plus1,wsp2w+plus1);
                glVertex3f(wsp1w-plus1,wsp3w+-plus1,wsp2w-plus1);
    glEnd();

W tej chwili ten kod działa poprawnie tylko w połowie: czyli jeżeli spojrzymy w prawo/lewo jest dobrze - trójkąt (w tym przypadku) wyświetla się zawsze w tej samej odległości od oczu gracza. Natomiast gdy spojrzę w górę/dół systuacja wygląda jak na obrazku 2.
Pytanie: co zrobić żebym uzyskał żądany efekt?