切线约束
 
 
 

切线约束可约束对象的方向,以使某个对象沿曲线移动时,该对象始终指向曲线的方向。曲线提供对象运动的路径,对象会调整自身的方向以指向曲线。切线约束用于使对象跟随曲线的方向,例如过山车会跟随轨迹的方向。

请参见“创建切线约束(Create tangent constraints)”和“约束 > 切线(Constrain > Tangent)”。

通常,将切线约束与几何体约束结合使用。有关几何体约束的详细信息,请参见几何体约束

切线曲线的目标向量

目标向量或加权平均向量表示在受约束对象的位置沿曲线的切线向量。Maya 以曲线附近切线的加权平均值形式计算目标向量(即,曲线的切线向量)。

切线曲线的受约束对象的方向

受约束对象的方向由三个向量控制:目标向量、上方向向量和世界上方向向量。这些矢量将不显示在工作区中,但您可以推断其对受约束对象的方向的影响。

您不需要了解这些向量的工作方式的详细信息即可高效使用约束。如果您不熟悉约束,可以跳过本节的其余部分。但是,如果要对切线约束施加较高程度的控制,您将需要使用这些向量。此外,熟悉这些向量可帮助您了解受约束对象可以如何突然侧滚。

注意如果 aimVector 和 Upvector 共线或如果“worldUpType”“无”(None),切线约束可能具有更新问题。

这些约束的工作方式是旋转对象,以使 aimVector 指向所需的方向。然后,围绕 aimVector 扭曲对象,以使 Upvector 指向尽可能接近于 worldUpVector。

如果 aimVector 和 Upvector 指向同一方向,则无法进行第二个旋转。无论对象围绕 aimVector 如何旋转,Upvector 都不会更接近于 worldUpVector。

该效果非常有用,因为它允许受约束对象指向任何方向而从不翻转。它进行最少量旋转,以使 aimVector 对准目标对象,然后将停止。但是,它从当前位置旋转,因此,如果并非每次都计算同一帧序列,则无法获得相同的答案。这会干扰渲染,最好避免此情况

目标向量

目标向量约束受约束对象,使其始终与目标向量一致。目标向量在受约束对象的枢轴点开始,然后与目标向量对齐。

对象如何旋转以与目标向量对齐取决于相对于对象的局部空间定义目标向量的方式。例如,默认情况下,将定义目标向量以使其与局部旋转正 X 轴指向同一方向。因此,默认情况下,受约束对象的局部旋转正 X 轴将与目标向量对齐。

目标向量本身不会完全约束该对象,因为目标向量不控制该对象绕目标向量的旋转方式。对象围绕目标向量的方向由上方向向量和世界上方向向量控制。

上方向向量和世界上方向向量

上方向向量控制受约束对象围绕目标向量的方向。与目标向量一样,上方向向量相对于受约束对象的局部空间进行定义。默认情况下,上方向向量尝试与世界上方向向量指向同一方向,世界上方向向量相对于场景的世界空间进行定义。上方向向量通过尝试使其自身尽可能与世界上方向向量对齐来确定受约束对象围绕目标向量的方向。

在移动目标对象时,受约束对象的目标向量将移动以与目标向量对齐,并相应确定受约束对象的方向。同时,受约束对象将按照上方向向量的指向确定自身围绕目标向量的方向。

例如,默认情况下,将定义上方向向量以使其与局部旋转正 Y 轴指向同一方向。受约束对象的局部正 X 轴会按照默认目标向量的指向与目标向量对齐。同时,该对象的局部正 Y 轴将尝试按照该对象的上方向向量的指向与世界上方向向量指向同一方向。目标向量和上方向向量一起使用,以约束受约束对象的方向。

默认情况下,上方向向量尝试尽可能与世界上方向向量对齐。但是,可以通过各种方法控制世界上方向向量的角色。例如,可以相对于其他某个对象的局部空间定义世界上方向向量(默认设置),而不是相对于工作区的世界空间定义世界上方向向量。这样的对象称为世界上方向对象。

翻滚效果

在某些情况下,受约束对象可以快速围绕其目标向量旋转。若要理解出现该情况的原因,您需要了解目标向量、上方向向量和世界上方向向量的工作方式。如果您不熟悉约束,可以跳过本节。有关详细信息,请参见上一节:目标约束的受约束对象的方向

在目标向量接近指向上方向向量的同一方向或相反方向时,受约束对象会绕目标向量更快地旋转。当目标向量恰好指向同一方向或相反方向时,受约束对象可以绕目标向量突然旋转 180 度。

这些快速旋转会提供您可能要禁止的翻滚效果。可以通过移动世界上方向向量或对其设置动画来防止翻滚效果。有关详细信息,请参见控制目标约束的运动历史相关性效果

运动历史相关性效果

运动历史相关性是指某个对象在相同的情况中如何提供不同的运动效果,但以前已操纵该对象或已对其设置动画除外。

例如,在对某个对象设置动画并在循环中运行动画时,如果该对象在每个循环中的同一帧上以稍微不同的方法结束移动,则该对象就是运动历史相关的。在特定帧上,该对象可能以不同方式确定方向,具体取决于之前的方向。相比之下,如果对象在每个循环中的移动方式完全相同,则该对象就是运动历史独立的。

如果需要可预测的运动效果,则运动历史相关性效果可能会出现问题。但是,如果要查找某种不可预测的运动效果,您可能需要利用对象的运动历史相关性。

在某些情况下,受约束对象的方向可以变为运动历史相关的。若要理解出现该情况的原因,您需要熟悉目标向量和上方向向量(请参见目标约束的受约束对象的方向)。

如果定义目标向量和上方向向量以指向同一方向,则受约束对象可以变为运动历史相关的。例如,如果相对于受约束对象的局部 Y 轴定义目标向量,但不更改上方向向量(也相对于该对象的局部 Y 轴)的默认方向,则可以这样做。有关详细信息,请参见控制目标约束的运动历史相关性效果

如果将约束的“世界上方向类型”(World Up Type)属性设定为“无”(None),则受约束对象也可以变为运动历史相关的。有关详细信息,请参见编辑点约束属性