gpt4 book ai didi

animation - 四元数的二次插值 (SQUAD)

转载 作者:行者123 更新时间:2023-12-05 08:58:03 28 4
gpt4 key购买 nike

我在动画中有四个关键帧,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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com