Mam trudności z ustaleniem prawidłowej kolejności mnożenia dla ostatecznej macierzy transformacji. Zawsze mam dziwny ruch lub zniekształconą geometrię. Mój obecny model jest wyjaśniony poniżej:
W przypadku pojedynczego węzła moja kolejność mnożenia wynosi:
L = S * R * T
gdzie
L = lokalna macierz transformacji
S = macierz skali lokalnej
R = lokalna macierz obrotu
T = lokalna macierz translacji
W przypadku transformacji świata w węźle:
W = PW * L
gdzie
W = macierz transformacji świata
PW = macierz transformacji świata macierzystego
L = lokalna macierz transformacji obliczona powyżej
Podczas renderowania dla każdego węzła obliczam macierz:
MV = Inv (C) * NW
gdzie
MV = macierz transformacji widoku modelu dla określonego węzła
Inv (C) = odwrotna macierz transformacji kamery
NW = obliczona powyżej macierz transformacji świata węzła.
Wreszcie w shaderze mam następującą transformację:
TVP = PRP * MV * VP
gdzie
TVP = końcowa przekształcona pozycja wierzchołka
PRP = macierz perspektywiczna
MV = obliczona powyżej macierz transformacji świata węzła
VP = pozycja nietransformowanego wierzchołka.
W obecnym modelu węzły potomne o lokalnym obrocie obracają się dziwnie podczas przekształcania kamery. Gdzie popełniłem błąd przy mnożeniu?