Ich bin gerade dabei mich mit der Physikbibiothek Bullet vertraut zu machen, und habe dort ein kleines Problem bezüglich der Rotation von Objekten.
Keine Angst, es geht nicht um Bullet an sich, sondern eigentlich um Quaternionen.
Bullet liefert mir die momentane Drehung meines Objektes so zurück:
Code: Alles auswählen
dynamicsWorld->stepSimulation(1/100.f,10);
btTransform trans;
fallRigidBody->getMotionState()->getWorldTransform(trans);
btQuaternion rot = trans.getRotation();
// Das funktioniert (logischerweise) nicht so wie es soll
Kugel.SetRotation(rot.x() , rot.y(), rot.z() );
Code: Alles auswählen
void ISEN_Object::SetRotation(float x, float y, float z)
{
m_fRotationX = x;
m_fRotationY = y;
m_fRotationZ = z;
D3DXMATRIX matRotateX;
D3DXMATRIX matRotateY;
D3DXMATRIX matRotateZ;
D3DXMatrixRotationX(&matRotateX, m_fRotationX);
D3DXMatrixRotationY(&matRotateY, m_fRotationY);
D3DXMatrixRotationZ(&matRotateZ, m_fRotationZ);
m_matRotate = matRotateX * matRotateY * matRotateZ; // Rotationsmatrix neu bestimmen
m_matWorldTransform = m_matRotate * m_matScale * m_matTranslate; // Worldmatrix neu bestimmen
}
Nun habe ich leider absolut KEINE Ahnung wie Quaternionen genau funktionieren, ich benutze sie ja auch nicht, nur besteht Bullet halt leider darauf das so zurückzugeben.
Also meine Frage:
Wie kann ich das sinnvoll umwandeln?
Danke im Vorraus!