У мене виникають труднощі, намагаючись визначити правильний порядок множення для кінцевої матриці перетворення. Я завжди отримую або дивний рух, або спотворену геометрію. Моя поточна модель пояснюється нижче:
Для одного вузла мій порядок множення:
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 = неперетворене положення вершини.
У сучасній моделі дочірні вузли, які мають локальне обертання, дивно обертаються при перетворенні камери. Де я помилився з порядком множення?