Tja, das ist halt das Problem. Wenn du aus deinen zwei Vektoren drei Winkel berechnen willst, ist das nicht ganz einfach.
Ich habe oben schon eine einfachere Methode beschrieben, die ich daher empfehlen würde: Den Winkel per Skalarprodukt berechnen, per Kreuzprodukt eine zur Rotationsbewegung senkrechte Achse berechnen und dann eine Matrix erzeugen bzw. eine Drehung ausführen, die um den Winkel um die berechnete Achse dreht. In D3D nimmste da halt einfach D3DXMatrixRotationAxis, unter
OpenGL weiß ich nicht ob es da ein direktes Äquivalent gibt, und wie gesagt, ist es nicht ganz einfach, wenn auch nicht unmöglich, es mit drei Winkeln zu machen.
Dazu musst du halt neue Vektoren erzeugen, für jede achsenparellele Ebene einen (also für die xy-Ebene, indem du die Z-Koordinate auf 0 setzt). Jetzt berechnest du innerhalb dieser Ebene den Winkel zwischen den Vektoren per Skalarprodukt, und das machst du für die anderen Ebenen auch. Dadurch bekommst du deine drei Winkel. Naja, die Translation ist dann ja wieder trivial, einfach den alten Anfangspunkt des Knochens vom neuen Anfangspunkt subtrahieren. Leider landest du damit wiederum beim noch weiter oben von mir erwähnten Gimbal-Lock-Problem, das aber für deine Animationen vermutlich nicht so drastisch ist.