用特征3插值两个矩阵



我有两个变换矩阵,我想在它们之间插值以获得动画。如此处所述,不可能简单地插值单个值。有没有简单的方法可以做到这一点?(我使用特征3)

我的想法:

Eigen::Matrix4f m1; //Transformation Matrix 1
Eigen::Matrix4f m2; //Transformation Matrix 2
Eigen::Quaternion<float> quat1(m1.block<3,3>(0,0)); //This extracts rotation matrix
Eigen::Quaternion<float> quat2(m2.block<3,3>(0,0));
quat1.slerp(t,quat2); //This interpolates
//Now i need a 4x4 Matrix again
Eigen::Matrix3f rot=quat1.toRotationMatrix();
Eigen::Matrix4f newmatrix;
newmatrix.block<3,3>(0,0)=rot;

我的代码有问题吗,有没有简单的方法来完成(旋转)矩阵插值?

  1. 修改此行

    Eigen::Quaternion<float> quat3  = quat1.slerp(t,quat2); //This interpolates
    //Now i need a 4x4 Matrix again
    Eigen::Matrix3f rot = quat3.toRotationMatrix();
    
  2. 此外,插值线性平移组件(m1m2的最后一列)

  3. 可以肯定的是,m1m2是欧几里得变换,而不是射影。

最新更新