Estou com dificuldades para tentar descobrir a ordem de multiplicação correta para uma matriz de transformação final. Eu sempre recebo movimentos estranhos ou geometria distorcida. Meu modelo atual é explicado abaixo:
Para um único nó, minha ordem de multiplicação é:
L = S * R * T
Onde
L = matriz de transformação local
S = matriz em escala local
R = matriz de rotação local
T = matriz de conversão local
Para a transformação do mundo de um nó:
W = PW * L
Onde
W = matriz de transformação mundial
PW = matriz de transformação do mundo pai
L = a matriz de transformação local calculada acima
Ao renderizar, para cada nó, calculo a matriz:
MV = Inv (C) * NW
Onde
MV = matriz de transformação da visualização de modelo para um nó específico
Inv (C) = a matriz de transformação inversa da câmera
NW = matriz de transformação mundial do nó calculada acima.
Finalmente, no sombreador, tenho a seguinte transformação:
TVP = PRP * MV * VP
Onde
TVP = posição final do vértice transformado
PRP = matriz de perspectiva
MV = matriz de transformação mundial do nó calculada acima
VP = posição do vértice não transformado.
Com o modelo atual, os nós filhos que têm rotação local giram estranhamente ao transformar a câmera. Onde eu errei com a ordem de multiplicação?