Я испытываю трудности, пытаясь выяснить правильный порядок умножения для окончательной матрицы преобразования. Я всегда получаю странное движение или искаженную геометрию. Моя текущая модель объясняется ниже:
Для одного узла мой порядок умножения:
L = S * R * T
где
L = матрица локального преобразования
S = матрица локального масштаба
R = матрица локального вращения
T = матрица локального перевода
Для преобразования мира узла:
W = PW * L
где
W = матрица преобразования мира
PW = матрица преобразования родительского мира
L = матрица локального преобразования, вычисленная выше
При рендеринге для каждого узла вычисляю матрицу:
MV = Inv (C) * NW
где
MV = матрица преобразования вида модели для конкретного узла
Inv (C) = матрица обратного преобразования камеры
NW = матрица преобразования мира узла, рассчитанная выше.
Наконец, в шейдере происходит следующее преобразование:
TVP = PRP * MV * VP
где
TVP = окончательно преобразованная позиция вершины
PRP = перспективная матрица
MV = матрица преобразования мира узла, вычисленная выше
VP = нетрансформированная позиция вершины.
В текущей модели дочерние узлы, имеющие локальное вращение, странно вращаются при преобразовании камеры. Где я ошибся с порядком умножения?