none
Aus der MSDN Hotline: Maximales Pitching einer Rotationsmatrix RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,

    heute wurde uns bei der
    MSDN Hotline unter anderem folgende Frage gestellt:
    Ich habe in einem XNA Projekt eine Kamera-Steuerung implementiert und biete die Möglichkeit, wie in FPS-Games, die Kamera per Yaw-Komponente im Kreis zu drehen mit World Space als Bezug und via Pitch-Komponente ein Nicken nach unten und oben basierend auf Local Space der Kamera. Dafür habe ich eine Rotationsmatrix, die ich mit dem Output von CreateFromAxisAngle multipliziere.

    Das Problem ist, dass ich die Kamera auf den Kopf stellen kann und der Yaw dementsprechend spiegelverkehrt ist. Meine Frage: wie kann ich der Rotationsmatrix klarmachen, dass ich ein maximales Pitching von Pi/2 nach unten/oben will, damit das eben nicht passiert?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:
    Auf diese Frage bezüglich des maximalen Drehwinkels der Kamera um die X-Achse, könnte folgende Lösung vorschlagen werden:

    Bei der Definition der Matrix:

    float max1  = (float)Math.PI/2;  //Maximum für Pitch-Komponente berechnen
    
       float step = (float)Math.PI / 4;  //Schrittgranularität für die Bewegungen berechnen
    
          for (float pitch = 0.0f; pitch < max1; pitch += step)  {...}

    Unter [1] findet man vollständigen Code-Ausschnitt zum Thema. Die Beschreibung einer Methode, die eine neue Drehmatrix auf der Grundlage des angegebenen Scher-, Steigungs- und Rollwerts erstellt findet man unter [2]. Der Verweis [3] enthält eine Übersicht über die Matrix Elemente u.a. auch die Methode die eine Drehung um die X-Achse ermöglicht.
    [1] http://forums.create.msdn.com/forums/p/45320/270610.aspx
    [2] http://msdn.microsoft.com/de-de/library/bb463940(v=xnagamestudio.40).aspx
    [3] http://msdn.microsoft.com/de-de/library/microsoft.xna.framework.matrix_members(v=xnagamestudio.40).aspx    

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    Anna Koch
    MSDN Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline:
    http://www.msdn-online.de/Hotline

    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN Hotline und dieses Posting diese
    Nutzungsbedingungen, Hinweise zuMarkenzeichen sowie die allgemein gültigenInformationen zur Datensicherheit sowie die gesondertenNutzungsbedingungen für die MSDN Hotline.



    • Bearbeitet Anna Koch Dienstag, 28. August 2012 10:54
    Dienstag, 28. August 2012 10:50