2015-10-27 8 views
0

В трехмерных сценах, каждый кадр, мы продолжаем обновлять локальную мирную матрицу 4x4, которая может передавать 3D-объект из локальной координаты в мировую систему координат. Но я не могу вычислить матрицу, которая может заставить 3D-объект вращаться сам по себе по локальной оси Y. Поскольку я не знаю локального вектора 3D-объекта, я знаю только локальную-> матрицу мира и продолжаю ее обновлять. Как люди справляются с этим?Вращать символ по локальной оси Y

ответ

0

Для поворота объекта вам понадобится матрица поворота. Это должно быть ясно. И у большинства библиотек есть методы для создания таких матриц вращения.

Ваша проблема заключается в том, что делать с этой матрицей. Вы хотите использовать его для изменения существующего преобразования мира. Есть два варианта. В следующем примере я предполагаю, что макет матрицы с основным столбцом используется OpenGL. Матричные заказы для DirectX меняются на противоположные.

Вариант 1: Умножение слева:

newWorld = rotationMatrix * oldWorld 

Это вращает объект в глобальной системе координат.

Вариант 2: Умножьте на право:

newWorld = oldWorld * rotationMatrix 

Это вращает объект в его системе координат местного. Вероятно, это то, что вы ищете.

Btw, если у вас есть мировое преобразование, вы знаете локальную ось y, которая является только вторым столбцом матрицы.