Objekt vor und nach Translation
-
Hallo,
folgendes Prob im Prog: Habe ein Objekt in den Koordinatenursprung verschoben.
Nun lasse ich es ueber meine Rotationsfunktion im Raum ueber die Maus rotieren.
Wenn ich es nun aber um z.B. +1.0 auf der x-Achse verschiebe, dann rotiert das Objekt um genau diesen Betrag um die y-Achse, es soll aber weiterhin um sich selbst rotieren.Wie gehe ich nun an die Loesung ran????
-
Erst rotieren, dann verschieben!
-
Ich glaub, ich hab mich ein bissl falsch ausgedrueckt. Mein Fehler. Das Objekt, welches ich habe, liegt zu Begin, d.h., bei der Initialisierung, irgendwo im Raum. Ueber einen Algo lasse ich es dann in den Koordinatenursprung wandern.
Nun kann der User das Objekt ueber die Maus rotieren und zoomen. Wenn er nun
aber ueber den Button die sozugen 2. Translation (die erste wurde ja automatisch ausgefuehrt) durchfuehrt, veraendert sich ja dadurch logischerweise
die Position, d.h., die xyz Werte, des Objekts.Bis zu dieser Stelle wurde also eine Translation und eine Rotation ausgefuehrt.
Nach der nun folgenden Translation um wie gesagt +1.0 auf der x Achse, rotiert das Object um genau diese Differenz um die y Achse. Soll es aber nicht!!!
-
Hört sich für mich so an als wenn du Model Space und World Space beim Rotieren nicht sauber trennst. Beschreib mal 'n bissl näher wie dein Rotier-Algo ausschaut.
-
Du darfst nicht bei der aktion der Maus die Matrix verändern sondern musst jedes mal beim rendern die Matrix auf Identitätsmatrix setzen und neu multiplizieren. Dann kannst du auch zuerst alle rotationen und dann erst die Transformationen machen.
Sonst kannst du aber auch mit D3DXRotationYawPitchRoll selbst nach der Transformation das Objekt um die eigenen achsen drehen.
PS.: Natürlich geht die letzte Funktion nur wenn du DirectX benutzt
-
(bitte löschen)