旋转表达:blender下骨骼重映射的公式推导 bone animation retarget

三维旋转:欧拉角、四元数、旋转矩阵、轴角之间的转换

设编辑模式下的骨骼变换矩阵为M_edit,在pose mode下则为M_pose,最后在view3d下呈现M_final。则有关系式:M_final = M_pose x M_edit。 可得M_final = M_pose x M_edit
现规定E_final为M_final的欧拉角(绕x,y,z轴)的旋转表达,则E_final = E_pose + E_edit不应该成立,因为旋转表达并不能线性叠加。这句话对吗?

是的,这句话是正确的。

欧拉角(绕x,y,z轴的旋转)不能简单地线性相加,即使它们表示的是同一个变换的不同部分。原因如下:

  • 旋转的非交换性:旋转操作不满足交换律,即先绕X轴旋转再绕Y轴旋转,与先绕Y轴旋转再绕X轴旋转,结果是不同的。

  • 万向节死锁问题:欧拉角表示旋转时存在奇点问题,在某些特定角度下会导致自由度丢失。

  • 非线性空间:旋转矩阵属于SO(3)群,而欧拉角只是这个群的一种参数化表示,它们之间的运算不是简单的线性运算。

M矩阵 与 Q四元数 等价吗?

是的,具体来说:

  • 表示等价性:3×3 旋转矩阵和单位四元数都可以表示三维空间中的旋转,它们之间存在一一对应关系(除了四元数的符号歧义)。

  • 运算等价性:矩阵乘法 M1 × M2 对应四元数乘法 Q1 × Q2
    矩阵逆 M^(-1) 对应四元数共轭 Q(对于单位四元数)
    矩阵作用于向量 M × v 对应四元数作用于向量 Q × v × Q

  • 公式保持一致:M_final = M_pose × M_edit
    Q_final = Q_pose × Q_edit

这两个公式在数学上是等价的,只是表示方法不同。

posted @ 2025-08-11 20:50  Nolca  阅读(22)  评论(0)    收藏  举报