我在动画中有四个关键帧,f0,f1,f2,f3,我正在尝试插值位于t= (f- f1 )/( f2 -f1)的f1和f2之间的帧f的旋转。
我的问题是,我可以在关键帧之间进行二次插值来找到旋转吗?我想使用所有四个关键帧。我也希望它是跨关键帧的C1连续。
我已经研究了them和Catmull-Rom样条线,但我仍然有点犹豫要不要实现它们,因为我不确定公式到底应该是什么样子。小队讲述了如何在一系列旋转之间进行插值,我不确定如何将其应用于仅四次旋转。提前感谢!
发布于 2014-11-25 05:46:17
不幸的是,四元数不在线性空间中,所以它们之间的插值有点棘手,正如您已经发现的那样。
我假设你想要使用加权平均,就像你在3D空间中计算曲线一样。
首先,没有定义两个以上四元数的精确球面插值(SLERP)。这是因为它们的组合是使用乘法来描述的,而它们的乘法是non-commutative (除了其他原因之外)。因此,您将不得不使用近似解决方案,就像其他所有动画软件一样:-)
generalized quaternion interpolation (也就是Shoemake的Quaternion curves)是一种可能性,甚至是更花哨(更准确)的基于优化的more。然而,在实践中,我总是使用NLERP (归一化线性插值,例如here),如果插值的四元数相当接近(大约60到90度的差异仍然可以),它会得到很好的结果,同时非常简单和快速。here是一篇很好的简单的文章,里面有3D矢量的例子,展示了它们之间的区别。
就我个人而言,我总是回到几何工具的Quaternion Algebra and Calculus笔记中,它对CG中四元数的理论和实践方面都有非常简洁的描述。
别忘了对足性,这是实现四元数插值时最常见的问题:)
https://stackoverflow.com/questions/27111391
复制相似问题