Nehmen Sie DirectX als Plattform an, wenn dies wichtig ist. (Ziemlich sicher ist es nicht)
Angenommen, ich habe eine geeignete Skalierungs-, Rotations- und Translationsmatrix. In welcher Reihenfolge multipliziere ich sie, um eine geeignete Weltmatrix zu erhalten, und warum?
Mit "richtig" meine ich "ich könnte sie direkt in DirectX werfen und den am häufigsten verwendeten 3D-Rahmen erhalten."
Antworten:
Normalerweise handelt es sich um Skalierung, dann Rotation und zuletzt um Translation. Bei Matrixbezeichnung (dh T für Translationsmatrix, R für die Rotationsmatrix und S für die Skalierungsmatrix) wäre dies:
T * R * S
Wenn Sie jedoch ein Objekt um einen bestimmten Punkt drehen möchten, handelt es sich um Skalierung, Punktverschiebung, Drehung und zuletzt Objektverschiebung.
Warum: Zuerst möchten Sie das Objekt skalieren, damit die Übersetzungen ordnungsgemäß funktionieren. Anschließend drehen Sie die Achsen so, dass die Verschiebung auf den angepassten Achsen erfolgt. Zuletzt übersetzen Sie das Objekt in seine Position.
In OpenGL können Sie gluLookAt verwenden, um eine vollständige Kameratransformation in einem Aufruf zu erhalten. Es gibt wahrscheinlich einen ähnlichen Aufruf für DirectX.
quelle
Translation, Rotation und Skalierung ist die Reihenfolge, in der die Operation ausgeführt wird
quelle
Ich glaube, es ist Translation Rotation und Dialation
quelle