Beobachter Modus 3d



  • Hi
    Ich will sowas wie einen beobachter modus machen, wo man sich mit der maus rumdrehen kann und mit den pfeiltasten nach vorne/seite usw bewegen kann (3D natürlich)
    Dazu hab ich schon überlegungen angestellt. um die folgende position zu berechnen wenn man die PFEIL-UP taste drückt, müsste man ja eine kugel berechnen, in der man dann die position HORIZONTAL-WINKEL; VERTIKAL-WINKEL und geschwindigkeit als radius nimmt.
    Die matrix könnte man dann mit glRotatef funcs oder mit gluLookAt setzen.
    Leider funktioniert das bei mir nicht. Hat jemand ein tutorial dafür oder kann mir weiterhelfen?

    w1 = ((GLfloat)x*2-x) / ((GLfloat)wnd_w) * M_PI;
       w2 = ((GLfloat)y*2-y) / ((GLfloat)wnd_h) * (M_PI*2);
    
       direction_x = r * cos(w1);
       direction_y = r * sin(w2) * sin(w1);
       direction_z = r * cos(w2) * sin(w1);
    

    ... und beim zeichnen:

    glMatrixMode(GL_MODELVIEW);
       glLoadIdentity();
       gluLookAt(pos_x, pos_y, pos_z, pos_x+direction_x, pos_y+direction_y, pos_z+direction_z, 0,1,0);
    

    Danke für alle antworten



  • Auf nehe.gamedev.net gibt's doch eine Kamera-Klasse für OGL! 👍



  • So mit der Kugel kann das ganz schoen ausarten.

    Ich mach ne (einfache) "Beobachter-Kamera" meist mit ner Matrix wo deren Position/Ausrichtung drin ist. Dann kannst diese einfach mit glRotate/glTranslate bearbeiten.. Dann noch gluLookAt mit Position/Ausrichtung aus Matrix.



  • @Sgt. Nukem:
    url?? ich hab nur ein programm gesehen wo man sich zwar mit pfeiltasten durchsteuern konnte, allerdings die richtung mit der man sich bewegte nicht von der drehung des körpers abhing (also ich schau an die decke aber mit pfeil-hoch lauf ich trotzdem weiter geradeaus)
    @durito:
    und wie soll des mit dem fortbewegen gehn? kannst du mir plz nen kleiner code beispiel geben?



  • URL hatte ich doch gepostet?!?

    Links bei Tutorials auf "Camera Class" klicken...?!?!

    Soll ich Dir auch eine google-Beschreibung geben?! 🤡



  • entschuldige meine dummheit aber ich hab bei FAQs nichts gesehen 😞



  • HellKnight schrieb:

    entschuldige meine dummheit aber ich hab bei FAQs nichts gesehen 😞

    FAQs?!? 😕



  • GLfloat posMatrix[16];
    ...
    if (first_pass) glGetFloatv(GL_MODELVIEW_MATRIX, posMatrix);
    ...
    //veraendern
    glPushMatrix();
    glLoadMatrixf(posMatrix);
    glRotatef(...);
    glTranslatef(...);
    glGetFloatv(GL_MODELVIEW_MATRIX, posMatrix);
    glPopMatrix();
    
    //gluLookAt mit diesen Parametern
    position: posMatrix[0,1,2]
    viewDir: posMatrix[8,9,10]
    upDir: posMatrix[4,5,6]
    

    so einfach.. 😉


Anmelden zum Antworten