Verständnisfrage zur Rotation/Translation in OpenGL
-
Hi,
ich muss euch leider nochmal mit einer einfachen Verständnisfrage nerven. Und zwar habe ich immer noch nicht ganz verstanden, wie ich Objekte in der 3D Welt bewegen kann. Ich habe in meiner Welt mehrere Objekte, deren Position und Ausrichtung ich mit einer lokalen Matrix beschreiben. Vor dem Rendern multipliziere ich diese Matrix mit der Weltmatrix mit glmultmatrix. Rotationen und Bewegungen der einzelnen Objekte berechne ich mit folgenden Formeln:void Rotate(Matrix4 m) { mLocalViewMatrix = m * mLocalViewMatrix; } void Translate(Matrix4 trans) { mLocalViewMatrix = trans * mLocalViewMatrix; }
Damit drehe und bewege ich die Objekte immer von der aktuellen Ausrichtung entlang der lokalen Achsen. Soweit habe ich das Verstanden und funktioniert auch. Jetzt möchte ich aber die Objekte nicht immer an den lokalen Achsen bewegen und rotieren, sondern entlang der Weltachsen. Also egal welche Ausrichtung das Objekt hat möchte ich es z. B. immer auf der Z-Achse der Welt bewegen. Nur wie mache ich das?
Gruß
-
ich arbeite ja eig. unter d3d aber das prinzip sollte ja gleich sein. ich verstehe aber dein problem nicht. vielleicht meinst du ja das:
multiplizierst du die lokale matrix erst mit der rotationsmatrix und dann mit der translationsmatrix, so wird das objekt um sich selbst gedreht.
multiplizierst du die lokale matrix erst mit der translationsmatrix und dann mit der rotationsmatrix, so wird das objekt um die weltachsen gedreht.
vielleicht war das ja, was du wissen wolltest