Quaternionen sind gut für interpolierte Rotationen zwischen ihnen. So weit, ist es gut.Kann ich die Rotation von zwei Quaternionen aus Yaw/Pitch/Roll interpolieren?
Wenn ich ein Netzwerkspiel habe, wird es ausreichen, die Rotation als Vektor3f zu übertragen oder sollte ich eine Quaternion verwenden? Um das Spiel weicher zu machen, muss ich möglicherweise zwischen der letzten gesendeten und der aktuellen Rotation interpolieren.
Kann ich aber Drehungen zwischen zwei Quaternionen interpolieren, die aus Yaw/Pitch/Roll erstellt wurden?
Quaternion a = Quaternion.FromYawPitchRoll(x1,y1,z1);
Quaternion b = Quaternion.FromYawPitchRoll(x2,y2,z2);
a.Interpolate(b, value); // will this work correctly?
Sie sollten erwähnen (wie @Justicle tat), dass plain-ol 'lerp in vielen Fällen gut für Quaternionen funktioniert. –
Ich habe gelesen, dass Euler Rotationen nicht eindeutig sind, so dass Sie nicht zwischen ihnen interpolieren können. Die Umwandlung in Quaternionen macht sie wirklich eindeutig, was für mich etwas unlogisch erscheint. – codymanix
@codymanix: Vielleicht, aber es ist der Fall. Sie können Euler-Winkel auch nicht direkt verwenden.Da Quaternionen einen zusätzlichen Freiheitsgrad haben, vermeiden sie das ganze Problem mit dem Gimbal-Lock, egal, was die vorherige Darstellung war oder wohin sie später konvertiert wird. Euler-Winkel -> Quaternion -> Matrix ist vollständig koscher. –