Sto riscontrando difficoltà nel cercare di capire l'ordine di moltiplicazione corretto per una matrice di trasformazione finale. Ottengo sempre strani movimenti o geometria distorta. Il mio modello attuale è spiegato di seguito:
Per un singolo nodo il mio ordine di moltiplicazione è:
L = S * R * T
dove
L = matrice di trasformazione locale
S = matrice di scala locale
R = matrice di rotazione locale
T = matrice di traduzione locale
Per la trasformazione mondiale di un nodo:
W = PW * L
dove
W = matrice di trasformazione mondiale
PW = matrice di trasformazione del mondo padre
L = la matrice di trasformazione locale calcolata sopra
Durante il rendering, per ciascun nodo calcolo la matrice:
MV = Inv (C) * NW
dove
MV = la matrice di trasformazione della vista del modello per un nodo particolare
Inv (C) = la matrice di trasformazione inversa della videocamera
NW = la matrice di trasformazione mondiale del nodo calcolata sopra.
Infine, nello shader ho la trasformazione incombente:
TVP = PRP * MV * VP
dove
TVP = posizione del vertice trasformata finale
PRP = matrice prospettica
MV = la matrice di trasformazione mondiale del nodo calcolata sopra
VP = posizione vertice non trasformata.
Con il modello attuale, i nodi figlio con rotazione locale ruotano in modo strano quando si trasforma la telecamera. Dove ho sbagliato nell'ordine di moltiplicazione?