Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.04.2009, 21:32

Model in Bewegungsrichtung drehen

Hallo zusammen,

ich habe ein kleines Problem dabei wie ich mein X-File so rotiere dass wenn ich es an eine bestimmte Position verschiebe dass es in diese Position schaut.
Also wenn man z.b. ein Auto hat und fährt es von Punkt A zu B dass es in diese Richtung ausgerichtet ist. Kann mir jemand dabei helfen?

2

06.04.2009, 21:44

Hey!
Du könntest die Richtung zum Ziel bestimmen (Richtung = B - A) und damit dann die Winkel mithilfe der trigonometrischen Funktionen berechnen.

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

3

06.04.2009, 21:48

Schau zunächst in welche Richtung dein Auto in seinem eigenen Koordinatensystem schaut. Da kriegst du dann irgendnen Vektor wie zb. (0,0,1) raus.
Dann berechne den Winkel zwischen der Richtung von A nach B. Dazu berechne am besten zuerst den Winkel in der XZ-Ebene und dann falls nötig (falls dein Auto auch nach oben und unten fährt) in der YZ/YX -Ebene.
Mit diesen Winkeln kannst du eine Rotationsmatrix berechnen und somit dein Model rotieren.

Ich weiß nicht ob das die optimale Lösung ist, jedenfalls die Lösung die ich intuitiver Weise schon öfter erfolgreich eingesetzt habe.

Falls dir die genannten Berechnungen nichts sagen, hack ruhig nach ;)


(hab den Fall gesetzt, dass Y nach oben ist)

4

06.04.2009, 22:29

Ok hört sich schon etwas komplizierter an. Also die Richtung in die das Model sol habe ich ja und wie wird nun der Winkel berechnet?

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

5

07.04.2009, 10:53

Der Winkel zwischen zwei Vektoren

Der eine Vektor ist der Richtungsvektor, der die Richtung vorgibt, in die das Modell im Ursprungszustand zeigt.

Wenn das Modell weder rollen noch nicken soll, brauchst du nur einmal einen Winkel auszurechnen, um zu wissen, wie weit du das Modell um die Y-Achse rotieren sollst.
Diesen bekommst du über die im Link enthaltene Gleichung. Der eine Vektor ist dabei immer der Vektor, der am Anfang die Richtung vorgegeben hat. Dieser ändert sich nicht. Der zweite Vektor ist der Richtungsvektor, der die Richtung vorgeben soll, in die das Modell zeigt.

Diese Wird folgendermaßen berechnet:
Richtung = Position_Ziel - Position_Wagen

Dabei solltest du für die Ordinate (Y-Wert) in beiden Vektoren für den Anfang 0 einsetzen. Das stellt sicher, dass dein Modell, wie Wümpftlbrümpftl bereits gesagt hat, waagrecht ausgerichtet bleibt.


Beispiel:
Dein Modell ist am Anfang in Richtung (0,0,1) ausgerichtet und befindet sich auf Position (1,0,0). Du willst es so ausrichten, dass es auf das Ziel, das sich auf Position (0, 0, 1) befindet, ausgerichtet ist.

Als erstes berechnest du die Richtung, in die es schauen soll. Diese bekommst du aus den zwei gegebenen Positionen.
ZielRichtung = Position_Ziel (0,0,1) - Position_Wagen (1,0,0) = (-1,0,1)

In die Gleichung eingesetzt, bekommst du cos (Winkel) = 0,7071. Um den tatsächlichen Winkel zu erhalten, berechnest du den acos vom entstandenen Ergebnis und hast in diesem Fall 45°.

Tipp:
Zwischen Bogenmaß und Grad richtig konvertieren.


So, jetzt hab ich aber wirklich alles vorgekaut, glaub ich. :lol:

Mit freundlichen Grüßen,
WhiteMike

Werbeanzeige