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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

17.01.2016, 13:38

Nun, das kann aber wohl nur sein, wenn deine Matrix wirklich 0, 0, 1 in der dritten Spalte stehen hat, mit anderen Worten: Deine Matrix kann nur Rotationen um z haben...

Krane

Treue Seele

  • »Krane« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

12

17.01.2016, 14:05

Hmm, in der dritten Spalte steht zu Beginn des Programmes (0,0,1).
Sobald ich das Objekt rotiere erhalte ich Werte wie (66.9,34.1,0.6).
Die ersten zwei Werte, also x und y, erhöhen sich immer weiter während das Spiel läuft, so dass die Bewegung des Spielers immer schneller wird. Der 3. Wert ändert sich nur bei Rotation.

Ich befürchte, dass etwas mit meiner Rotate Funktion nicht stimmt.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
void TransformComponent::Rotate(glm::vec3 delta)
{
    m_rotation += glm::quat(delta);

    for(unsigned int i = 0; i < m_childTransforms.size(); i++)
    {
        m_childTransforms[i]->RotateAround(delta);
    }
}


Es liegt wohl daran, dass man zwei Quaternions nicht mit + addiert.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Krane« (17.01.2016, 14:21)


13

19.01.2016, 07:53

Quaternionen addiert man schon so (die Implementation von glm ist sicher korrekt).

ABER: Um Rotationen zu konkatenieren werden (Einheits-)quaternionen multipliziert, nicht addiert. Sonst ist das Ergebnis kein Einheitsquaternion mehr und repräsentiert auch keine Rotation.

PS: Bitte auch überprüfen, was der quat-Konstruktor aus dem vec3 genau macht.

Krane

Treue Seele

  • »Krane« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

14

19.01.2016, 18:04

Hab das Problem schon gelöst. Ich musste die Quaternions tatsächlich multiplizieren und nicht addieren. ^^
Danke trotzdem. :)

Werbeanzeige