Reach

对于反向运动学和重定目标,到达的概念略有不同。

反向运动学

当使用反向运动学解算器时,到达控制角色原始 FK 姿势与在 HIKEffectorSetState 中定义的目标点之间的混和。

每个效应器有两个到达值:一个用于控制平移,一个用于控制旋转。

到达平移

到达平移 控制反向运动学解算器生成的关节位置是位于原始 FK 位置、效应器的位置,还是介于这些极端之间的位置。

 

例如,在左侧的图像中,绿色定位器表示与左腕部关节对应的效应器。

如果到达平移值为零,反向运动学解算器为左腕计算的位置保持在 FK 位置(以黄色骨骼显示)。

 

如果到达平移值为最大值,反向运动学解算器会将关节置于效应器的位置,完全忽略原始 FK 位置。

这些极端之间的值混合 FK 姿势和 IK 目标的位置。

到达旋转

到达旋转与到达平移完全类似,但它控制反向运动学解算器生成的关节旋转是使用原始 FK 姿势的关节方向、效应器的方向,还是这些极端之间的方向。

 

例如,在左侧的图像中,绿色定位器被旋转,从而为左腕关节提供所需方向。

如果到达旋转值为零,反向运动学解算器为左腕计算的旋转保持在原始 FK 值(以黄色骨骼显示)。

 

如果到达旋转值为最大值,反向运动学解算器会将关节旋转到与效应器相同的矩阵,完全忽略原始 FK 旋转。

这些极端之间的值混合 FK 姿势和 IK 目标的旋转。

组合使用到达平移和到达旋转

通过组合使用到达平移和到达旋转,可以将角色的关节固定到其原始 FK 位置或场景中的特定位置或项目。

如果将效应器的到达平移和到达旋转值都设置为最大值,则反向运动学解算器在计算角色的新姿势时根本不会考虑关节的原始位置和旋转。您可以使用此设置将关节实际固定到游戏中某个项目或位置的位置和旋转。

如果效应器的到达平移和到达旋转值保留为 0,则反向运动学解算器根本不会尝试朝其效应器移动相应的关节,无论该效应器的位置和旋转为何。您可以使用此设置将关节实际固定到其原始位置和旋转。

但是请注意,在这两种情况下,由于其他关节的拉伸,该关节可能会移动。请参见Pull

制作到达动画

HumanIK 的许多典型用途涉及随时间调整动画,以便让角色的肢体到达特定点或在某一具体时间与特定项目进行交互,例如,角色伸手去抓住门把。

这种情况的典型方法是将相应效应器(在本例中为右手)的平移和旋转设置为最终所需位置,并制作到达设置的动画,在每一帧增加它们。在第一帧,到达值应从 0 开始,保留原始正向运动学动画不变。在角色移动的最后一帧,到达控制应到达其最大值,将角色的手延伸到最终目标。在之间的每一帧,到达控制应设为零值和最大值之间插补的值,从而向目标平滑移动。

重定目标

使用重定目标解算器时,到达决定源动画和目标角色之间最重要的接触点,即应在三维空间中两个角色之间同步的关节。这些接触点有时在髋部,或如果将动画重定目标为不同大小或比例的角色,则接触点在脚部。默认情况下,HumanIK重定目标解算器使用脚部作为源和目标之间的接触点。

 

例如,在左侧的图像中,原始动画用红色的骨骼显示。当重定目标为较短的角色时,到达设置应使脚部成为重要的接触点。

 

但是,如果动画涉及抓住吊架,则使用脚部作为接触点是不适当的。因为目标角色较短,所以当其脚部固定到原始较高动画中脚部的平移处时,看上去就像悬在半空中。

 

在本例中,将手部设置为源和目标之间的接触点,从而使角色看上去像抓住吊架。

制作到达动画

可以为角色中多个不同节点的位置和方向设置到达设置。重定目标解算器将平衡所有这些到达设置的竞争性要求,以确定如何对齐最终生成的姿势与原始动画的放置。通过在不同到达设置之间进行平衡,从而使您可以随时间混合接触点。例如,如果以上示例中的角色开始是站立姿势,然后跳起来抓住吊架,则到达设置必须通过确定脚部接触优先来开始,并且必须逐渐变化,在动画抓住吊架时转移到手部接触优先。