我有两个转换矩阵,我想在它们之间进行插值以获得动画。 如上所述here,不可能简单地插入单个值。有没有一种简单的方法来实现这一目标? (我使用Eigen3)
我的想法:
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;
我的代码是否有问题,是否有一种简单的方法可以完成(旋转)矩阵插值?
答案 0 :(得分:0)
修改此行
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
是欧几里德变换,而不是投射。