SRT represent's disadvantage

$SRT$是指使用缩放,旋转,平移来表示变换矩阵

SRT表示法

矩阵$M$可以使用$SRT$表示:

$$\overrightarrow{v}M = \overrightarrow{v} SRT = \overrightarrow{v} SR + \overrightarrow{T}$$

非等比缩放

考虑如下情况:

$$
\begin{align}
\overrightarrow{v_2} &= \overrightarrow{v_1} M_1\notag\\
&= \overrightarrow{v_0}M_0M_1\notag\\
&= \overrightarrow{v_1}S_1R_1 + \overrightarrow{T_1}\notag\\
&= (\overrightarrow{v_0}S_0R_0 + \overrightarrow{T_0})S_1R_1 + \overrightarrow{T_1}\notag\\
&= \overrightarrow{v_0}(S_0R_0S_1R_1) + (\overrightarrow{T_0}S_1R_1 + \overrightarrow{T_1})\notag
\end{align}
$$

如果我们要将$M_0M_1$表示为$SRT$,那么说明$S_0R_0S_1R_1$可以表示为$SR$

如果$S_1$为等比缩放,那么$S_0R_0S_1R_1 = S_0S_1R_0R_1$

那么不是等比缩放呢?

问题转化为存在正交旋转矩阵$R$与缩放矩阵$S$,则$RS$能否表达为$S^{‘}R^{‘}$?

通过反证法来证明,考虑如下矩阵:

$$
S =
\begin{bmatrix}
1 & 0 & 0 \\
0 & 2 & 0 \\
0 & 0 & 1
\end{bmatrix} \quad
R =
\begin{bmatrix}
1 & 0 & 0 \\
0 & \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \\
0 & \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}
\end{bmatrix}
$$

假设存在$S’$和$R’$使得$RS=S’R’$

$$
\begin{alignat}{2}
R’ &=
\begin{bmatrix}
r’{11} & r’{12} & r’{13} \\
r’
{21} & r’{22} & r’{23} \\
r’{31} & r’{32} & r’_{33}
\end{bmatrix} &\quad
S’ &=
\begin{bmatrix}
s’_1 & r0 & 0 \\
0 & s’_2 & 0 \\
0 & 0 & s’_3
\end{bmatrix}\notag\\[2ex]
RS &=
\begin{bmatrix}
1 & 0 & 0 \\
0 & \sqrt{2} & -\frac{\sqrt{2}}{2} \\
0 & \sqrt{2} & \frac{\sqrt{2}}{2}
\end{bmatrix} &\quad
S’R’ &=
\begin{bmatrix}
s’1r’{11} & s’1r’{12} & s’1r’{13} \\
s’2r’_{21} & s’2r’{22} & s’2r’{23} \\
s’3r’_{31} & s’3r’{32} & s’3r’{33}
\end{bmatrix}\notag
\end{alignat}
$$

结合$RS = S’R’$与$R’$为正交矩阵可得:
$$
\begin{cases}
1 = s’1 r’{11} \\[2ex]
0 = s’1 r’{12} \\[2ex]
0 = s’1 r’{13} \\[2ex]
r’^2_{11} + r’^2_{12} + r’^2_{13} = 1
\end{cases}
$$

$\therefore s’_1 = \pm{1}$,同理可得:$s’_2 = \pm \frac{\sqrt{2}\sqrt{5}}{2}$与$s’_3 = \pm \frac{\sqrt{2}\sqrt{5}}{2}$

$$
\begin{align}
\because det(AB) &= det(A)det(B) \quad RS = S’R’ \quad det(S’) = s’_1s’_2s’_3\notag\\[2ex]
\therefore det(R’) &= \frac{det(R)det(S)}{det(S’)}\notag\\[2ex]
&= \frac{1\times (1\times 2 \times 1)}{\pm{1}\times \frac{\sqrt{2}\sqrt{5}}{2}\times \frac{\sqrt{2}\sqrt{5}}{2}}\notag\\[2ex]
&= \pm \frac{4}{5} \neq 1\notag
\end{align}
$$
与$R’$为正交矩阵的假设不符.

分解矩阵为SRT

假设某个节点有n个祖先,其局部变换矩阵分别为$M_1,M_2,\cdots M_n$.

$$
\begin{align}
M_{SRT} &= M_0M_1\cdots M_n\notag\\[2ex]
M_{RT} &= R_0T_0R_1T_1\cdots R_nT_n\notag
\end{align}
$$

从$M_{SRT}$中很容易分解出平移项,提取第四行元素即可

从$M_{RT}$中剥离平移,可以得到$M_R$矩阵,这个矩阵必须被转换为四元数或欧拉角

最麻烦的是提取缩放,首先将$M_{SRT}$中的平移项置零,得到$M_{SR}$.

然后通过如下公式计算缩放矩阵:

$$M_S = M_{SR}M_R^{-1}$$

只需要从该矩阵中提取对角线的元素作为缩放,其余元素是产生倾斜(变形))的部分

More Info

GPU Pro 5 - Managing Transformations in Hierarchy
矩阵乘积的行列式等于行列式的乘积
插入公式诀窍
MathJax语法

github page custom domain name character wrinkle

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×