我有两个变换矩阵,我想在它们之间插值以获得动画。如此处所述,不可能简单地插值单个值。有没有简单的方法可以做到这一点?(我使用特征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;
我的代码有问题吗,有没有简单的方法来完成(旋转)矩阵插值?
-
修改此行
Eigen::Quaternion<float> quat3 = quat1.slerp(t,quat2); //This interpolates //Now i need a 4x4 Matrix again Eigen::Matrix3f rot = quat3.toRotationMatrix();
-
此外,插值线性平移组件(
m1
和m2
的最后一列) -
可以肯定的是,
m1
和m2
是欧几里得变换,而不是射影。