В трехмерных сценах, каждый кадр, мы продолжаем обновлять локальную мирную матрицу 4x4, которая может передавать 3D-объект из локальной координаты в мировую систему координат. Но я не могу вычислить матрицу, которая может заставить 3D-объект вращаться сам по себе по локальной оси Y. Поскольку я не знаю локального вектора 3D-объекта, я знаю только локальную-> матрицу мира и продолжаю ее обновлять. Как люди справляются с этим?Вращать символ по локальной оси Y
ответ
Для поворота объекта вам понадобится матрица поворота. Это должно быть ясно. И у большинства библиотек есть методы для создания таких матриц вращения.
Ваша проблема заключается в том, что делать с этой матрицей. Вы хотите использовать его для изменения существующего преобразования мира. Есть два варианта. В следующем примере я предполагаю, что макет матрицы с основным столбцом используется OpenGL. Матричные заказы для DirectX меняются на противоположные.
Вариант 1: Умножение слева:
newWorld = rotationMatrix * oldWorld
Это вращает объект в глобальной системе координат.
Вариант 2: Умножьте на право:
newWorld = oldWorld * rotationMatrix
Это вращает объект в его системе координат местного. Вероятно, это то, что вы ищете.
Btw, если у вас есть мировое преобразование, вы знаете локальную ось y, которая является только вторым столбцом матрицы.