- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在动画中有四个关键帧,f0、f1、f2、f3,我试图在 t = (f-f1)/(f2-f1 ).
我的问题是,我可以在关键帧之间进行二次插值来找到旋转吗?我想使用所有四个关键帧。我还希望它在关键帧之间是 C1 连续的。
我研究过 SQUAD 和 Catmull-Rom Splines,但我仍然有点犹豫要不要实现它们,因为我不确定这些公式到底应该是什么样子。 SQUAD 告诉我们如何在一系列旋转之间进行插值,我不确定如何将它应用于四个。提前致谢!
最佳答案
不幸的是,四元数不存在于线性空间中,因此它们之间的插值有点棘手,正如您已经发现的那样。
我假设您想使用加权平均值,就像您计算 3D 空间中的曲线一样。
首先,没有定义超过两个四元数的精确球面插值 ( SLERP )。这是因为他们的组合是用乘法描述的,他们的乘法是non-commutative (除其他原因外)。所以你将不得不使用一个近似的解决方案,就像所有其他动画软件一样:-)
SQUAD(又名 Shoemake 的 Quaternion curves )是一种可能性,甚至是更高级(更准确)的基于优化的 generalized quaternion interpolation .然而,在实践中,我总是使用 NLERP(归一化线性插值,例如描述 here ),如果插值四元数相当接近(大约 60 到 90 度的差异仍然很好),它会给出很好的结果,同时非常简单和快速。一篇带有 3D 矢量示例的不错的简单文章显示了它们之间的区别是 here .
就个人而言,我总是回到几何工具的 Quaternion Algebra and Calculus注释,对 CG 中四元数的理论和实践方面进行了极其简洁的描述。
并且不要忘记对映体,这是迄今为止实现四元数插值时最常见的问题:)
关于animation - 四元数的二次插值 (SQUAD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27111391/
我是一名优秀的程序员,十分优秀!