返回首页 >> Maya文档 >> maya法线约束

法线约束


法线约束可约束对象的方向,以使其与 NURBS 曲面或多边形面(网格)的法线向量对齐。让对象在具有唯一、复杂形状的曲面上移动时,法线约束很有用。如果没有法线约束,在曲面上移动对象或设置其动画可能会很乏味且耗时。例如,可能需要让一滴眼泪沿角色的脸落下。可以将眼泪约束到脸的曲面,而不是直接设置眼泪的动画。

请参见创建法线约束(Create normal constraints)和“约束 > 法线(Constrain > Normal)”。

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

法线约束的受约束对象的方向

受约束对象的方向受三个向量控制:目标向量、上方向向量和世界上方向向量。这些向量不会显示在工作区中,但可以推断它们对受约束对象的方向产生的效果。

无需为了有效地使用约束而了解这些向量如何工作的详细信息。如果不熟悉约束,则可以跳过本节的其余部分。但是,如果希望对法线约束施加高度的控制,将需要使用这些向量。此外,熟悉这些向量可能会有助于了解受约束对象如何可以突然侧滚。

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

如果 aimVector 和 upVector 指向同一方向,那么不可能进行此处的第二个旋转。无论对象如何围绕 aimVector 旋转,upVector 都不会更加靠近 worldUpVector。

这可能会是一个很有用的效果,因为它允许受约束对象指向任何方向而从不翻转。它的旋转量最小,以便 aimVector 瞄准对象,然后它将停止。但是,它会从当前的位置旋转,因此,如果每次不对相同的帧序列求值,则得不到相同的答案。这可能会对渲染造成很大的破坏,最好避免这种情况

目标向量

目标向量会约束受约束对象,以便它始终与目的向量对齐。目标向量始于受约束对象的枢轴点,然后与目的向量对齐。

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

目标向量自身无法完全约束对象,因为目标向量并不控制对象可能会围绕目标向量旋转的方式。围绕目标向量的对象的方向是由上方向向量和世界上方向向量所控制的。

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

上方向向量控制围绕目标向量的受约束对象的方向。与目标向量类似,上方向向量也是相对于受约束对象的局部空间定义的。默认情况下,上方向向量尝试指向与世界上方向向量相同的方向,世界上方向向量是相对于场景的世界空间定义的。上方向向量通过尝试将它自身尽可能与世界上方向向量对齐,确定围绕目标向量的受约束对象的方向。

移动目的对象时,受约束对象的目标向量将移动以与目的向量对齐,并相应地确定受约束对象的方向。同时,受约束对象确定它自身(围绕目标向量)的方向,就像上方向向量所指示的那样。

例如,默认情况下,定义上方向向量以使其指向与局部旋转正 Y 轴相同的方向。受约束对象的局部正 X 轴将与目的向量对齐,就像默认目标向量所指示的那样。同时,对象的局部正 Y 轴将尝试指向与世界上方向向量相同的方向,就像对象的上方向向量所指示的那样。目标向量与上方向向量一起使用可约束受约束对象的方向。

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

侧滚效果

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

随着目标向量越来越接近指向与上方向向量相同的方向或相反的方向,受约束对象围绕目标向量旋转得更快。如果目标向量恰好指向相同的方向,或恰好指向相反的方向,则受约束对象可能会突然围绕目标向量旋转 180 度。

这些快速旋转会产生侧滚效果,您可能希望避免这些效果。通过移动世界上方向向量或设置其动画,可以避免侧滚效果。有关详细信息,请参见控制目标约束的运动历史相关性效果。

运动历史相关性效果

运动历史相关性是指对象如何可以在相同的情况下(除了对象先前受操纵或已设置动画之外)提供不同的运动效果。

例如,当设置某个对象的动画并循环运行动画时,如果对象在每个循环中在相同的帧处以略为不同的方式结束移动,那么该对象与运动历史相关。在某个帧处,根据其先前的方向,可能会以不同的方式确定对象的方向。相反,如果在每个循环中对象以完全相同的方式移动,那么该对象就与运动历史无关。

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

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

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

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

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