返回首页 >> Maya文档 >> maya目标约束

目标约束


目标约束可约束某个对象的方向,以使该对象对准其他对象。目标约束的典型使用包括使灯光或摄影机对准某个对象或一组对象。在角色设置中,目标约束的典型使用是设置用于控制眼球转动的定位器。

请参见创建目标约束(Create aim constraints)和“约束 > 目标(Constrain > Aim)”。

目标约束的受约束对象的方向

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

您不需要了解这些向量如何工作才能高效使用约束的详细信息。如果您不熟悉约束,可以跳过本节的其余部分。但是,如果要对目标约束进行较高程度的控制,将需要使用这些向量。此外,熟悉这些向量可帮助您了解受约束对象如何才能突然转动。

注意 如果 aimVector 和 upVector 共线或者“worldUpType”为“无”(None),则“目标”(Aim)约束可能存在更新问题。
这些约束的工作方式是旋转对象,以使 aimVector 指向所需的方向。然后,绕 aimVector 扭曲对象以使 upVector 尽可能近地指向 worldUpVector。

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

这可能是非常有用的效果,因为它允许受约束对象指向任何方向而从不用翻转。它会进行最少量旋转,以使 aimVector 对准对象,然后停止。但是,它从当前的位置旋转,因此,如果每次不对同一帧序列求值,则不能获得相同的答案。这会对渲染造成影响,因此最好避免该情形。

目标向量

目标向量约束受约束对象以使其始终指向目标点。目标向量在受约束对象的枢轴点开始,并且始终指向目标点。

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

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

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

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

在移动目标对象时,受约束对象的目标向量会移动以指向目标点,并相应地确定受约束对象的方向。同时,受约束对象将按照上方向向量的定向自行确定绕目标向量的方向。

例如,默认情况下,对上方向向量进行定义,以使其指向与局部旋转正 Y 轴相同的方向。受约束对象的局部正 X 轴将按照默认目标向量的定向指向目标点。同时,该对象的局部正 Y 轴将尝试按照该对象的上方向向量的定向指向与世界上方向向量相同的方向。目标向量和上方向向量协同工作,以约束受约束对象的方向。

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

侧滚效果

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

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

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

运动历史相关性效果

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

例如,当为某个对象设置动画并在循环中运行动画时,如果该对象在每个循环中的同一帧处结束移动的方式略有不同,该对象就是运动历史相关的。在特定帧处,可能以不同方式确定对象方向,具体取决于其之前的方向。相反,如果对象在每个循环中的移动方式完全相同,则该对象就是运动历史无关的。

如果需要可预测的运动效果,运动历史相关性效果可能是个问题。但是,如果要寻找某些不可预测的运动效果,您可能需要利用对象的运动历史相关性。

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

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

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

请将您关于此页内容的评论发送给我们