Kamerarotationen



  • Hallo Leute, also ich bin echt am verzweifeln! Ich versuche schon seit Tagen, die 3 Kameravektoren für Yaw,Pitch und Roll zu rotieren. Für Yaw und Pitch habe ich hinbekommen, doch ich sehe keine Möglichkeit, Roll auch noch in die Formeln zu integrieren. Da kann ich es biegen und wenden, wie ich will, es gibt keine Formel, welche die Wahrheitstabelle erfüllt!!!

    Ein kleines Beispiel:
    Die X-Achse des Up-Vektors: wenn ich ein einfaches Roll von PI/2 Rad mache, dann müsste die X-Achse des Up-Vektors eigentlich 1.0f sein, doch dies ist natürlich nicht möglich weil die beiden anderen Faktoren von Yaw und Pitch je 0.0f ergeben, und somit das Produkt automatisch auch gleich 0.0f ist. Ich habe auch schon versucht, die Rotationen sequentiell durchlaufen zu lassen, also zuerst die Vektoren mit Yaw and erst anschliessent mit Pitch und Roll zu manipulieren, doch kann dies ebenfalls nicht funktionieren, da viele Rotationen nur kombiniert eine Änderung der Vektoren bewirken. Also ich bin echt am Ende meines Lateins, bitte Helft mir, ich bin nahe daran, eine echte Krise zu bekommen!! Ich scheine wirklich unfähig zu sein :-(((

    // recalculate the front - vector for yaw, pitch and roll
      vecFront.x = sinf(this->yaw) * cosf(this->pitch);
      vecFront.y = sinf(this->pitch);
      vecFront.z = cosf(this->yaw) * cosf(this->pitch);
    
      // recalculate the up - vector for yaw, pitch and roll
      vecUp.x = sinf(this->yaw) * -sinf(this->pitch);
      vecUp.y = cosf(this->pitch);
      vecUp.z = cosf(this->yaw) * -sinf(this->pitch);
    
      // recalculate the right - vector for the two other vectors
      D3DXVec3Cross(&vecRight,&vecUp,&vecFront);
    

    Übrigens ist die D3DXMatrixYawPitchRoll Methode in meiner Situation ungeeignet, da ich auf die 3 Vektoren Front,Up und Right zwecks der Kamera - Translationen angewiesen bin!

    Einen Lieben Gruss und Danke an alle, welche sich die Mühe machen, sich in diese Problem einzuarbeiten!



  • Warum packst Du die Kamera-Ausrichtung nicht einfach in eine Matrix?
    -> Matrix mit rotate/translate (wie das auch immer heissen mag bei DX..) veraendern (das wirkt dann relativ zu den Kamera-Achsen).



  • Weil ich wie gesagt, die 3 Vektoren Front,Up und Right noch für weitere Berechnungen brauche....
    Z.B. und die Kamera vorwärts zu bewegen. Wenn die Kamera beispielsweise nach links schaut und der Spieler nun die vorwärts - Taste drückt, dann soll sich die Kamera nach links bewegen...



  • Du kannst diese 3 Vektoren direkt aus der Matrix auslesen:
    1.Spalte: right
    2.Spalte: view
    3.Spalte: up
    4.Spalte: position

    Glaub ich jedenfalls, bin nicht mehr ganz sicher. vielleicht siehts auch ein wenig anders aus. Jedenfalls ist das Auslesen der Vektoren geschenkt.

    Was Dein Bsp. betrifft: Das ergibt sich von alleine, einfach translation (auf die Matrix bezogen) in die Richtung wo im lokalen Kamera-System vorne ist.


Anmelden zum Antworten