首页 > 解决方案 > 3D 索具:皮带扭曲或帧插值超过 180 度。欧拉、矩阵、四元数?

问题描述

此处为 3D TD,定义“Bezier 曲线”和沿它的方向以及控制对象的变换。我在插入之间的“向上向量”Control Objects时遇到了问题,这种方式可以让我在控制之间有超过 180 度的差异,所以我可以扭曲多少。

我正在使用 SideFX Houdini,它有一种类似 C 的语言VEX来实现它们。在这里,您可以看到控制项、Bezier 句柄(青色、黄色)和其中之一的变换面板。

对象和贝塞尔曲线的图像

为了生成帧,贝塞尔曲线被重新采样为折线,并从每个Control Object对应点开始,有一个平行帧传输Control Object对应点。

这将导致帧的连续性中断,所以我所做的是围绕切轴进行加权旋转,因此帧的“Up Vector”逐渐与下一个Control ObjectUp Vector”对齐。

问题是这种对齐是通过检查两个向量之间的角度来完成的,帧传输向上和下一个Control Object Up在同一平面上。最大的不同是180度。除此之外,它会翻转到另一边:带有翻转帧的剪辑

现在,如果应用这种扭曲或滚动,我可以拥有超过 180 个,作为帧传输和后续对齐的偏移,但这是一个额外的步骤。 扭曲超过 180 作为偏移

我知道在处理矩阵时没有转弯的概念,因此我从与Euler构成的对象中提取的内容可能是不可能的。但我有一种感觉,可能有一个涉及四元数的解决方案,我通常将它们用作Axis-Angle,而不是我在概念上完全掌握它们。

我的问题似乎是我如何将一个控制对象与下一个控制对象联系起来,我可以掌握从一个控制对象到另一个控制对象需要多少扭曲。

寻找我应该研究的参考文献来对此进行排序。如果它甚至可能......

谢谢

标签: linear-algebratransformationquaternionsbezierbasis

解决方案


推荐阅读