Dlaczego 4×4 macierze używane do przekształcania rzeczy w 3D?
Powód za użyciem 4×4 macierze do przekształcania rzeczy w 3D
Na przykład, obrót odbywa się zwykle za pomocą macierzy, więc aby poradzić sobie z wieloma przekształceniami (obrót/tłumaczenie/skalowanie/projekcja…itp) w sposób jednolity, trzeba je zakodować w matrycy.
Dobrze, bardziej technicznie rzecz biorąc; transformacja polega na odwzorowaniu punktu/wektora na inny punkt/wektor.
p` = T(p);
gdzie p` jest punktem przekształconym, a T(P) jest funkcją transformacji.
Biorąc pod uwagę, że nie używamy macierzy, musimy to zrobić, aby połączyć wiele przekształceń:
p1 = T(P);
Pfinał = M(p1);
Macierz może nie tylko łączyć wiele typów przekształceń w jedną macierz (np. powinowaty, liniowy, rzutowy).
Korzystanie z macierzy daje nam możliwość łączenia łańcuchów przekształceń, a następnie ich mnożenia wsadowego. Oszczędza to nam mnóstwo cykli zwykle przez GPU (dzięki dla @ChristianRau za wskazanie tego).
Tfinał = T * r * P; // Tłumaczyćobracać sięprojekt
Pfinał = Tfinał*P;
Warto również zauważyć, że procesory graficzne, a nawet niektóre procesory, są zoptymalizowane pod kątem operacji wektorowych; Procesory korzystające z SIMD i GPU będące z założenia procesorami równoległymi opartymi na danych, więc korzystanie z macierzy idealnie pasuje do akceleracji sprzętowej (faktycznie, GPU zostały zaprojektowane tak, aby pasowały do operacji na macierzach/wektorach).
KREDYT:
https://gamedev.stackexchange.com/questions/72044/dlaczego-uzyjemy-4×4-macierze-do-przekształcenia-rzeczy-w-3d?answertab=aktywna#tab-top
Zostaw odpowiedź
Musisz Zaloguj sie lub Zarejestruj się dodać nową odpowiedź.