2017-07-26 26 views
1

我有使用矩阵运行许多骨骼动画的代码,我想将它转换为双四元数,以获得更好的性能。双四元数和任意比例

我只有一个问题 - 我找不到如何处理任意比例的好资源。

我不太明白骨骼层次结构中的尺度是如何进行的。

假设对于骨架中的每个节点,我都有其局部双四元数(旋转+平移)和一个三维矢量来进行缩放,我该怎么处理它们以合并缩放?

回答

0

骨骼动画和尺度,特别是非均匀尺度,是一个棘手的问题。

使用骨骼层次结构的标准实现方法,每个骨骼都有一个矩阵,尺度简单地传播给儿童,这通常被认为是不想要的行为 - 传播不均匀的尺度会导致儿童骨骼的剪切和其他变形,蒙皮中的文物。出于这个原因,它通常会在子矩阵上得到“补偿” - 例如,请参阅此概念的Autodesk Maya implementation

为了更好地描述将非传播比例集成到双四元数中,几个academic papers by Ladislav Kavan提供了很多细节。他还在YouTube上发表了关于双四元数的讲座。

+0

我确实需要传播尺度。我的代码实现了支持任意传播尺度的3D模型格式,所以我没有在这方面做出选择(虽然尺度部分,特别是它的非均匀部分,实际上并没有太多用处)。 – user2503048

+0

在这种情况下,不幸的是,您无法使用对偶四元数和尺度向量来表示整个变换 - 这些变量中没有足够的自由度来表示剪切和倾斜,这将是非均匀缩放传播的结果通过转型层次。 –