当设定对象旋转的关键帧时,Maya 将采用在一个关键帧到下一关键帧之间插入旋转值的方法,计算对象在关键帧之间的方向。在 Maya 中,旋转插值的方法有两种:Euler 和四元数。对场景中的每个动画旋转,都可指定一种旋转插值方法。为动画对象选择的旋转插值方法确定 Maya 计算旋转的方式。有关 Euler 角度和四元数的详细信息,请参见 Euler 角度、四元数以及哪种类型的插值最适用于您的动画旋转?。
除非另有指定,否则旋转插值默认为 Euler 旋转。可以在 Maya“首选项”(Preferences)窗口(选择“窗口 > 设置/首选项 > 首选项”(Window > Settings/Preferences > Preferences)时,位于“设置”(Settings)类别下的“动画”(Animation)区域中)中设定新曲线的默认旋转插值方法,或者可以从“曲线图编辑器”(Graph Editor)中设定现有旋转曲线的旋转插值方法。请参见设定曲线的旋转插值。
使用 Euler 方法为对象的动画旋转插值时,Maya 将使用 Euler 角度来确定对象随时间变化的特定于轴的方向。使用三个独立的角度来计算 Euler 旋转,这三个角度表示绕 X、Y 和 Z 轴的旋转以及旋转的顺序。
旋转顺序将指定动画对象绕其 X、Y 和 Z 轴进行旋转的顺序。更改动画对象的旋转顺序将更改其最终方向。通过设定对象的“旋转顺序”(Rotate Order)属性,可以指定对象的旋转顺序。例如,如果将动画对象的“旋转顺序”(Rotate Order)设定为 YZX,那么该对象将首先在 Y 轴上进行旋转,然后是 Z 轴,最后才是 X 轴。您可使用“旋转顺序”(Rotate Order)属性将导入动画对象的旋转顺序与对象来自的 3D 软件包中的坐标系(例如,XZY,不同于 Maya 默认的 XYZ)相匹配。如果希望导入对象的动画旋转能按预期显示,这点就非常重要。
Maya 中有两种类型的 Euler 旋转插值:“独立”和“同步”。可以从“曲线图编辑器”(Graph Editor)中设定曲线的 Euler 旋转插值类型。请参见更改旋转插值。
对于“独立 Euler”(Independent Euler)曲线,插值从各独立曲线上的关键帧到关键帧进行计算,与相邻的旋转曲线无关。如果要为单个旋转通道设定关键帧,或要将其他关键帧(以及细节)添加到单个旋转曲线,请使用“独立 Euler”(Independent Euler)曲线。“独立 Euler”(Independent Euler)曲线特别适用于简单的动画旋转。
“同步 Euler”(Synchronized Euler)上的所有关键帧都锁定在同一时间。这意味着,如果对象具有“同步 Euler”(Synchronized Euler)旋转曲线,那么插值从所有旋转曲线上的关键帧到关键帧同时进行计算。如果要为多个旋转通道(X、Y 和 Z)设定关键帧,或要将其他关键帧(以及细节)添加到动画对象的所有旋转曲线,请使用“同步 Euler”(Synchronized Euler)曲线。“同步 Euler”(Synchronized Euler)曲线特别适用于更为复杂的动画旋转。
“独立 Euler”(Independent Euler)和“同步 Euler”(Synchronized Euler)之间的主要区别在于它们的关键帧。例如,移动位于“独立 Euler”(Independent Euler)“旋转 X”(Rotate X)曲线上关键帧的时间只会移动位于“旋转 X”(Rotate X)曲线上的关键帧;然而,移动“同步 Euler 旋转 X”(Synchronized Euler Rotate X)曲线上关键帧的时间也会移动“Y”和“Z”曲线上相应的关键帧。同样,如果仅设定动画对象“旋转 X”(Rotate X)通道的关键帧,并且旋转插值类型设定为“独立 Euler”(Independent Euler),那么只会设定“旋转 X”(Rotate X)通道的关键帧。但是,如果“旋转”(Rotate)插值类型设定为“同步 Euler”(Synchronized Euler),那么将设定全部三个通道(“X”、“Y”和“Z”)的关键帧。
当 Euler 角度用于插值对象的动画旋转时,对象绕其各个轴的方向将逐轴进行计算。这就是 Euler 角度旋转易于产生瑕疵(例如,万向锁定和翻转)的原因。当围绕单轴的旋转造成不需要的围绕互补轴的旋转,或当轴发生重合的时候,将发生万向锁定。当 Euler 角度旋转在关键帧之间插值时,角度如果意外地绕正或负 180 度折回,就会发生翻转。
如果发生万向锁定或翻转,可以使用“Euler 过滤器”(Euler Filter)校正该行为。例如,可以使用“Euler 过滤器”(Euler Filter)从损坏的运动捕捉动画数据中规格化毁损的旋转曲线。可以从“曲线图编辑器”(Graph Editor)或“摄影表”(Dope Sheet)中的“曲线”(Curves)菜单访问“Euler 过滤器”(Euler Filter)。有关“Euler 过滤器”(Euler filter)的详细信息,请参见 Euler 角度过滤和filterCurve。
四元数将提供动画旋转的平滑插值,与 Euler 角度相比,四元数总能在关键帧之间产生更为有效的路径。四元数将存储对象的总方向,而并非一系列的独立旋转。这意味着一个四元数存储的旋转数据量与三个 Euler 角度存储的量相同。因为四元数仅存储方向值,所以可用于计算一个方向到另一方向的最短旋转。
使用同步四元数设定对象旋转的动画时,Maya 首先将对象已设置关键帧的方向值存储作为 Euler 角度,并将其转化为四元数以便进行插值处理,然后会将已插值的四元数旋转值转化回 Euler 角度,以便显示在通道盒和曲线图编辑器中。
在 Maya 中,四元数显示为“同步”(Synchronized)“Euler”曲线和值。当对象的旋转曲线处于同步状态时,位于对象“旋转”(Rotate)“X”、“Y”和“Z”曲线上的关键帧都锁定在同一时间。当添加、删除或移动其中一个对象旋转曲线上的关键帧时,相应的关键帧也将在相关的旋转曲线上进行更新。这样可消除从其中一个轴删除关键帧或单独移动关键帧时间时可能发生的插值问题。
四元数曲线的切线设置将影响对象动画旋转的插值方式。有关切线类型的详细信息,请参见“曲线图编辑器”(Graph Editor)的“切线”(Tangents)菜单。Maya 将使用下列类型的切线和插值来计算一个关键帧到另一关键帧的最短旋转:
对于具有钳制切线的四元数曲线,Maya 将使用阶跃插值。对于具有线性切线的四元数曲线,Maya 将使用球形线性插值(也称为球面线性插值)来计算一个关键帧到下一关键帧的最短旋转,并在关键帧之间产生突变过渡。对于具有样条线切线的四元数曲线,Maya 将使用立方插值来计算一个关键帧到下一关键帧的最短旋转,并在关键帧之间产生平滑过渡。
在 Maya ®Trax™“编辑器”(Editor) 中混合动画片段时,可选择下列四元数旋转插值类型之一:“四元数最短路径”(Quaternion Shortest)或“四元数最长路径”(Quaternion Longest)。“四元数最短路径”(Quaternion Shortest)插值使用四元数插值来查找从一个片段到另一片段旋转之间的最短路径。“四元数最长路径”(Quaternion Longest)插值使用四元数插值来查找从一个片段到另一片段旋转之间的最长路径。该路径处于“四元数最短路径”(Quaternion Shortest)的相反方向。
通过设定“属性编辑器”(Attribute Editor)中的“旋转混合”(Rotation Blend)属性,可以指定片段混合的四元数旋转插值类型。
每种旋转插值方法都有优点和缺点。由您选择最适合您动画的插值类型。请参见 Euler 旋转插值应何时使用?以及四元数应何时使用?。