我将尝试使用Eigen在两个四元数之间进行插值(认为这是最简单的方法)。
我找到了两个不同的示例。
第一个示例:
for(int i = 0; i < list.size(); i++)
{
Matrix3f m;
Quaternion<float,0> q1 = m.toRotationMatrix();
Quaternion<float,0> q3(q1.slerp(1,q2));
m_node->Rotation(q3.toRotationMatrix());
}
其次,
Vec3 slerp(const Vec3& a, const Vec3& b, const Real& t)
{
Quaternionf qa;
Quaternionf qb;
qa = Quaternionf::Identity();
qb.setFromTwoVectors(a,b);
return (qa.slerp(t,qb)) * a;
}
我无法确定哪个是正确的。关于这个问题没有太多的文档说明。是否有人能告诉我是否应该使用不同的库?或者如何使用 eigen 进行 slerp 插补。
t_{n} … t_{n+1}
的范围映射到0 … 1
的范围,并将其乘以给定的q
。 - datenwolf