目标约束

 
 
 

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

请参见创建目标约束(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),那么受约束对象也可能会变成与运动历史相关。有关详细信息,请参见编辑点约束属性