Предположим, что DirectX является платформой, если это важно. (Уверен, это не так)
Предполагая, что у меня есть правильная шкала, матрица вращения и перевода, в каком порядке я умножаю их, чтобы получить правильную матрицу мира и почему?
Под «правильным» я подразумеваю «я мог бы выбросить их прямо в DirectX и получить наиболее часто используемый 3D-кадр».
Ответы:
Обычно это масштаб, затем вращение и, наконец, перевод. С обозначением матрицы (т. Е. T для матрицы перевода, R для матрицы вращения и S для матрицы масштабирования) это будет:
T * R * S
Однако, если вы хотите повернуть объект вокруг определенной точки, то это масштаб, перемещение точки, вращение и, наконец, перемещение объекта.
Почему: сначала вы хотите масштабировать объект так, чтобы переводы работали правильно. Затем вы поворачиваете оси так, чтобы перемещение происходило по настроенным осям. Наконец вы переводите объект в его положение.
В OpenGL вы можете использовать gluLookAt, чтобы получить полное преобразование камеры за один вызов. Вероятно, аналогичный вызов для DirectX.
источник
вращение и масштабирование перевода - последовательность выполнения операции
источник
Я верю, что это ротация перевода и набор номера
источник