J'ai des difficultés à essayer de trouver le bon ordre de multiplication pour une matrice de transformation finale. J'ai toujours un mouvement étrange ou une géométrie déformée. Mon modèle actuel est expliqué ci-dessous:
Pour un seul nœud, mon ordre de multiplication est le suivant:
L = S * R * T
où
L = matrice de transformation locale
S = matrice à l'échelle locale
R = matrice de rotation locale
T = matrice de traduction locale
Pour la transformation du monde d'un nœud:
W = PW * L
où
W = matrice de transformation mondiale
PW = matrice de transformation du monde parent
L = la matrice de transformation locale calculée ci-dessus
Lors du rendu, pour chaque nœud, je calcule la matrice:
MV = Inv (C) * NW
où
MV = la matrice de transformation de la vue du modèle pour un nœud particulier
Inv (C) = la matrice de transformation inverse de la caméra
NW = matrice de transformation mondiale du nœud calculée ci-dessus.
Enfin, dans le shader, j'ai la transformation en jachère:
TVP = PRP * MV * VP
où
TVP = position finale du sommet transformé
PRP = matrice de perspective
MV = matrice de transformation du monde du nœud calculée ci-dessus
VP = position du sommet non transformée.
Avec le modèle actuel, les nœuds enfants qui ont une rotation locale tournent étrangement lors de la transformation de la caméra. Où me suis-je trompé avec l'ordre de multiplication?