Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: (OpenGL) 2x Rotieren um selbes Koordinatensystem

  Alt 13. Apr 2006, 23:44
Zitat von Phobeus:
Ich habe wirklich echte Probleme Dir zu folgen, da das von Dir beschriebene Verhalten doch eigentlich genau das ist, was man erwarten würde.
Jain ^^. Stell dir vor, du drehst ein Objekt mit der Maus mit einer Linksbewegung um ca. 90° um die Y-Achse. Du lässt die Maus los, und willst nun das Objekt so neigen, dass es seine Oberseite preis gibt. Also rein intuitiv mit einer Mausbewegung nach unten. Was passiert aber nun? Das Objekt neigt sich nach links! Weil durch die vorige Drehung ja die X-Achse verdreht wurde, und von nun an auf einmal die Z-Achse die richtige Wahl wäre um das Objekt wie gewünscht zu neigen.
Das selbe gilt verkehrt, wenn die Drehoperationen vertauscht ausgeführt werden.
Zumindest die erste Drehung soll also geschehen, OHNE dass sich die Achsen mitdrehen!

Zitat von Phobeus:
Im Anhang ein lieblos zusammengefrickeltes Sample basierend auf der SVN-Version von easySDL, dass Dir vielleicht weiter hilft.
Lieben Dank dafür - leider habe ich die verwendeten Units nicht, bzw. kenn ich (noch) keine Bezugsquelle. Aber das ist u.U. auch nicht mehr nötig (s.u.)

Zitat von Phobeus:
Bedenken solltest Du zwei Dinge: Es ist hilfreich, wenn das Objekt sich im Mittelpunkt befindet. Sprich: Ein Quad von -0.5/-0.5 nach 0.5/0.5 ist leichter zu rotieren als eines von 0/0 nach 1/1. Ansonsten dreht sich das Gebilde halt nicht ums Zentrum, sondern wie ein Planet um die Sonne.
Das hatte ich bereits bedacht, so dass ich erst rotiere, und dann verschiebe. (Mathe-LK'ler 8))

Zitat von Phobeus:
Auch solltest Du bedenken, dass Matrix-Operationen eine eigenart haben: A*B != B*A. Es spielt also eine große Rolle um welche Achse Du zunächst drehst. In deinem Fall bietet sich vermutlich an erst die X und dann um die Y-Achse zu drehen.
Nunja, daher rührt letztlich das eigentliche Problem. Aber:
Zitat von Phobeus:
die beiden letzteres Tutorials aus der mathematischen Rubrik unserer Tutorials
bzw. das letzte dieser hat mich auf eine Idee gebracht! Da so wie dort beschrieben eine Drehung um ein beliebiges Koordinatensystem sehr einfach geht, könnte ich mir vorstellen, dass wenn ich zwischen den beiden Drehungen das lokale Koordinatensystem zurück setze, ich den von mir gewünschten Effekt erzielen kann. So dass beim lokalen KO-System des Objektes quasi die Achsen immer in Ausgangsausrichtung bleiben. Dieses Zurücksetzen war mit dem Welt-KO-System ja nicht so einfach drin, da dort ja die "Kamera" an und für sich verdreht wird.

Ich werd's einfach mal testen, und mich im Vorfeld ganz kräftig bei dir bedanken

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat