Du bist nicht angemeldet.

Werbeanzeige

1

29.10.2019, 11:38

Probleme bei verschiedenen Rotationen eines 3d Modells

Hallo zusammen,

mich plagt seit längerem ein Problem, bei meinen ersten Gehversuchen in der Spieleprogrammierung.

Mein Problem ist wenn mein Model geneigt (pitch) ist und ich dann das Model dreh (yaw) verändert sich die Neigung des Model.
Die Bewegung des Models, ist aber vollkommen korrekt.

Kurze Präzession (mein Model ist ein Raumschiff):

- ich neige Schiff, so das die Nase etwas nach oben zeigt.
- nun dreh ich das Schiff und die Nase geht immer weiter runter. Bis sie ab einen gewissen Punkt wieder steigt bis wir bei 360° wieder beim Urzustand sind.
- Wenn ich allerdings das Schiff bewege steigt das Schiff im gewünschten Grad nach oben. Egal wie die Nase gerade steht. ?(

Weiß einer woran dies liegen könnte?

Falls ihr noch was braucht, sagt Bescheid, da ich keinen Ansatzpunkt habe, möchte ich nicht meinen kompletten Code posten. (wäre nen bisschen viel glaub ich ;) )

Vielen Dank vorab

David Scherfgen

Administrator

Beiträge: 10 205

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

29.10.2019, 12:05

Wahrscheinlich arbeitest du mit 3 Rotationswinkeln. Du solltest stattdessen besser auf Quaternions setzen.

Schorsch

Supermoderator

Beiträge: 5 182

Wohnort: Wickede

Beruf: Student

  • Private Nachricht senden

3

29.10.2019, 12:05

Hey,
wie rotierst du dein Modell? Arbeitest du mit Euler-Rotation? Dabei gibt es einige Probleme, wie zum Beispiel Gimbal Lock.
Du drehst dein Modell vermutlich um seine lokalen Achsen, erwartest aber eine Drehung um die globalen Achsen. Aber mal Schritt für Schritt. Du neigst dein Raumschiff (pitch) und veränderst damit das lokale Koordinatensystem deines Modells. Jetzt drehst du dein Raumschiff (yaw). Dabei nutzt du weiter die lokale Achse des Schiffs. Global gesehen ist diese Achse aber bereits geneigt. Was du aber eigentlich erreichen möchtest ist dass du dein Raumschiff um eine globale Achse drehst.
Womit arbeitest du? Nutzt du irgendeine Gameengine? An sich wäre es schon mal sinnvoll wenn du mit Quaternionen arbeites. Dadurch schließt du Probleme wie oben genanntes Gimbal Lock aus. Zusätzlich musst du dann eben darauf achten dass du deine Drehachsen passend wählst/berechnest. In diesem Fall willst du eben das globale Koordinatensystem und nicht das lokale deines Modells nutzen.
Bei deiner Bewegung bin ich mir nicht sicher. Das könnte das gleiche Problem sein. Vielleicht wäre es gut wenn du das ganze grob skizzieren könntest.

Du könntest mal nach "global vs local space" googlen. Es gibt auch einige Youtube Videos in welchen das Prinzip erklärt wird. Vielleicht ist dann schon alles klar.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige