Ich habe einige Modelle, die ich mithilfe von Quaternionen auf normale Weise drehen möchte, außer dass ich sie nicht um den Ursprung drehen möchte, sondern leicht versetzen möchte. Ich weiß, dass Sie im 3D-Raum nicht sagen, dass Sie sich um einen Punkt drehen. Sie sagen, Sie drehen sich um eine Achse. Ich stelle es mir also so vor, als würde es sich um einen Vektor drehen, dessen Schwanz nicht am lokalen Ursprung positioniert ist.
Alle affinen Transformationen in meiner Rendering- / Physik-Engine werden mithilfe von SQT (Maßstab, Quaternion, Übersetzung; eine Idee aus dem Buch Game Engine Architecture ) gespeichert . Daher erstelle ich aus diesen Komponenten für jeden Frame eine Matrix und übergebe sie an den Vertex-Shader. In diesem System wird zuerst die Translation, dann die Skalierung und dann die Rotation angewendet.
In einem bestimmten Fall muss ich ein Objekt im Weltraum verschieben, skalieren und um einen Scheitel drehen, der nicht am lokalen Ursprung des Objekts zentriert ist.
Frage: Wie kann ich unter Berücksichtigung der oben beschriebenen Einschränkungen meines aktuellen Systems eine lokale Rotation erzielen, die um einen anderen Punkt als den Ursprung zentriert ist? Automatisches Upvote für alle, die beschreiben können, wie dies auch nur mit Matrizen gemacht wird :)