Rotace součástí modelů

Vytvořil sasule, publikováno 18.03.2018 22:01

Rotace součástí modelů v kostce

Součásti modelů v Blueprintech v části ContainerComponent využívají pro umístění transformační matici 4x4:

A B C D
E F G H
I J K L
M N O P

Platí:

M - posun v ose x
N - posun v ose y (nahoru/dolů)
O - posun v ose z
P - 1
D, H L - 0

Zbylé pozice (písmenka) se řídí tzv. transformační maticí, která určuje rotaci, velikost objektu (scale) a "shear".

Výchozí transformace má na diagonále (A, F, K, P) hodnotu 1. 

Často se stává, že je potřeba objekt rotovat ve více osách. Potom je potřeba provést postupnou transofrmaci a výslednou matici zapsat na pozice A - C, E - G a I - K. 

Dílčí matice pro jednotlivé osy:

  • Rotace v ose X
    1  0      0 
    0 cos(x) -sin(x) 
    0 sin(x) cos(x)   
     
  • Rotace v ose Y
    cos(x)  0 sin(x)
     0      1  0
    -sin(x) 0 cos(x) 
    
  • Rotace v ose Z
    cos(x) -sin(x) 0
    sin(x) cos(x)  0
     0       0     1 

Kde "x" je úhel rotace.

Teď už jen zbývá jednotlivé matice poskládat ve výslednou. To se provádí násobením matic. Pro násobení matic jsem narazil na hezkou kalkulačku.

Transformační matice jsou převzaty z tohoto zdroje. (Zdroj již není volně dostupný)