GluLookAt - Kamerapositionierung



  • Also das dauernde lernen neuer Programmiersprachen hat mein Hirn wohl aufgeweicht.
    Da ich grade nicht mit meinem nmotebook ins netz kann, versuch ich zu erklären, wie mein soucecode aufgebaut ist.

    ich habe ein heightfield das ich darstelle:

    ...
      for (y = 0; y < 50; y++)
          for (x = 0; x < 50; x++)
          {
            glColor3f ..
    
            glVertex3f((double)x - 25.0, (double)y - 25.0, View[y * 50 + x];
            glVertex3f((double)x - 25.0, (double)y - 25.0, View[y * 50 + x + 1];
            glVertex3f((double)x - 25.0, (double)y - 25.0, View[y * 51 + x + 1];
            glVertex3f((double)x - 25.0, (double)y - 25.0, View[y * 51 + x];
    
          }
     ...
    

    Nun möchte ich die Kamera so rotieren, dass ich immer den Mittelpunkt im Sichtfeld habe, wobei dir Rotation um Z - theoretisch horizontal zum Terrain um den Mittelpunkt sein sollte, während die Rotation um X die höhe beeinflusst, oder nicht?

    auf jeden Fall sieht mein gluLookAt() so aus (Height ist bei mir vom Typ char):

    Terrain->GetHeight(&Height);
    
      gluLookAt ( 2 * sin((3.14/360) * Rotation.Z *2)
                , 1 * cos((3.14/360) * Rotation.Z *2) + sin((3.14/360) * Rotation.X * 2)
                , Height + cos((3.14/360) * Rotation.X * 2)
                , 0
                , 0
                , Height
                , 0
                , 0
                , 1
                );
    

    Dummerweise sieht die Rotation nun so aus, als ob ich mich um mich selbst drehe, nicht um den Mittelpunkt.

    Noch mal zur Erklärung: Ich möchte auf dem Koordinatenursprung (0,0, Feldhöhe) ein Objekt (Spieler) positionieren und meine Kamera um dieses rotieren können...

    PLZ HLP!!!!

    cYa
    DjR



  • Hallo

    GluLookAt(
    radiuscos(phi),
    radius
    sin(phi),
    kamerahoehe,

    0,
    0,
    Feldhoehe,

    0,
    0,
    1
    )



  • ist doch das, was ich mache.

    hmpf! das konnte ja auch nicht klappen - hatte in meiner Display-Funktion nen glTranslate, das die Höhe ausgleichen sollte....

    Trotzdem hab ich hier noch nen Problem.. jetzt hab ich die höhe mit reingenommen

    ergo hab ich bei Höhe nen cosinus der 2. Rotationsachse gemacht. interessanterweise rotiert der mir nun aber auch links rum, wenn ich hoch oder runter gehe...



  • Nachtrag:

    ich hab jetzt einfach mal anstelle der Mouse die Cursortasten zum Steuern genommen und das geht ohne Probleme...
    aber warum?



  • DocJunioR schrieb:

    Nun möchte ich die Kamera so rotieren, dass ich immer den Mittelpunkt im Sichtfeld habe[...]Dummerweise sieht die Rotation nun so aus, als ob ich mich um mich selbst drehe, nicht um den Mittelpunkt.

    Du kannst aber garnicht immer zu Mittelpunkt schauen, ohne dich zu drehen, ausser du bewegst dich auf einem Strahl der im Mittelpunkt beginnt.

    Bye, TGGC (Zu viele Primitive hier.)


Anmelden zum Antworten