HumanIK 反向运动学和重定目标解算器根据 HIKCharacters 的移动能力计算它们的姿势,这一定程度上由它们骨架的结构定义。对于两足动物和四足动物,角色的节点需要按某种特定的排列进行连接:例如,右肩是右肘的父节点,而右肘相应地是右腕的父节点。HumanIK 生物力学模型配备了有关这些节点的移动方法的知识;当解算器需要移动一个或多个节点以满足 HIKEffectorSetState 或源动画的要求时,会使用此内置知识来构建新的姿势。
不过,为了使此过程控制您自己的一个角色,需要将角色骨架中的每个关节映射到 HumanIK 可以理解的节点之一。每个节点都有一个唯一的描述性 ID,在 HIKNodeId 枚举中列出。以下部分描述了相关准则,用于理解此枚举的命名约定以及为角色关节选择合适的节点。
HumanIK 需要在它控制的每个角色中存在最少的一组特定节点。这些必需节点在上方的图中以红色类型和星形表示。
HumanIK 最多可支持 9 个其他脊椎节点(Spine1NodeId 到 Spine9NodeId)以及 10 个颈部节点(NeckNodeId 以及 Neck1NodeId 到 Neck9NodeId)。自下而上对这些节点进行编号,越靠近髋部,编号就越小,越靠近头部,编号就越大。
定义脊椎或颈部节点时不能跳过编号。例如,如果不映射 Spine1NodeId 和 Spine2NodeId,则不能将骨骼映射到 Spine3NodeId。
手和脚在 HumanIK 中几乎完全等效;每只脚和每只手均可包含相同类型的关节,只是它们的父子关系稍有不同。可以单独定义每个角色的脚和手,这可使每个角色具有很大的复杂性。例如,一个海盗角色可以有一只脚踝以下没有任何关节的木制假腿、一只仅趾跟有一个关节、但关节连接和脚趾不完整的穿靴的脚、一只关节完整的手和一只缺少几根手指的残疾手。
HumanIK 允许为每只手和每只脚最多角色化六个手指:人类骨架的五个手指(称为拇指、食指、中指、无名指和小指)以及额外的第六个手指或脚趾。
每个手指和每个脚趾均是关节链,可以包含多个 HumanIK 节点。上图显示了可以为所有手指和脚趾角色化的所有节点。上图中,只有拇指和额外手指中的节点以全称命名;但是,其余手指和脚趾中的关节遵循相同的命名约定。有关完整列表,请参见 HIKNodeId 枚举。
角色化角色的手指和脚趾时,通常建议将每个角色的手指尖或脚趾尖映射到节点。这尤其适用于在具有不同数量的手指或手指关节的角色之间重定目标动画。这是因为每个手指的效应器确定了最后一个角色化节点在该关节链中的位置。如果最后一个角色化节点位于手指尖,则可以使用效应器来控制角色指尖的位置。请参见效应器放置。
可选手节点和脚节点,分别为 LeftHandNodeId、RightHandNodeId、LeftFootNodeId 和 RightFootNodeId,可在角色的手指和脚趾的根部提供关节。该节点在以下情况中使用最频繁:每个脚趾或手指不需要完整的关节连接,但弯曲手或脚可增加真实感。例如,就穿有闭合鞋的角色而言,即使没有为各个脚趾定义任何节点,通过脚节点,脚同样可以在趾根处弯曲,如下所示。
除上面讨论的节点以外,HumanIK 还支持以下节点以达到特殊效果。
角色的骨架可以在身体的左右两侧包含其他锁骨骨骼,由 LeftCollarExtraNodeId 和 RightCollarExtraNodeId 节点定义。这些附加锁骨骨骼可以帮助模拟手臂抬起时人类肩膀的移动。
额外锁骨骨骼节点(如果已启用)位于锁骨骨骼节点和肩膀节点之间,即 LeftCollarExtraNodeId 位于 LeftCollarNodeId 和 LeftShoulderNodeId 之间,RightCollarExtraNodeId 位于 RightCollarNodeId 和 RightShoulderNodeId 之间。
默认情况下,HumanIK 在锁骨节点和额外锁骨节点之间均匀展开锁骨旋转。例如,当角色抬起左臂时,一半旋转应用于 LeftCollarNodeId,另一半应用于 LeftCollarExtraNodeId。但是,可以通过设置 HIKExtraCollarRatioId 特性的值来控制锁骨节点和额外锁骨节点之间的混合比例。请参见常规特性。
HumanIK 支持为角色的肩部、肘部、髋部和膝部使用滚动节点。每个滚动节点通常位于其关联父节点和骨骼中下一个节点之间的中心附近。例如,左肩的滚动节点位于左肩和左肘的中间,左肘的滚动节点位于肘部和腕部的中间。HumanIK 解算器将滚动旋转应用于具有关联滚动节点的节点时,可将该滚动旋转的百分比应用于滚动节点。此过程称为滚动提取。
滚动提取模拟两足动物和四足动物的手臂和腿围绕其轴旋转的实际方式。通过从更合适的位置继续沿着肢体方向控制蒙皮变形,可大大提高为蒙皮角色创建的动画的真实感。
默认情况下,不会为任何滚动节点激活滚动提取。要启用滚动提取,必须为每个滚动节点激活一个角色特性,并将该特性的值设置为表示应该应用于滚动节点而不是应用于父节点的滚动旋转的百分比。
有关详细信息,请参见使用滚动提取。
参照节点 ReferenceNodeId 旨在用作角色的整体平移、旋转和缩放的可选存储库。可将其视为角色髋部的抽象父对象。
髋部平移节点 HipsTranslationId 用作角色髋部平移的独立存储库。如果已为角色启用了该节点,并且 HumanIK 解算器需要偏移角色髋部的平移,则结果平移将存储回髋部平移节点,而不是存储在 HipsNodeId 节点中。
默认情况下,即使已启用 HipsTranslationId,仍会将髋部的旋转存储在 HipsNodeId 节点中。但是,通过将角色的 HIKHipsTranslationModeId 特性的值设置为 1,可以配置 HumanIK 以将髋部的旋转存储在 HipsTranslationId 节点中。在这种情况下,平移和旋转均不会应用于 HipsNodeId 节点。
也可以使用 HipsTranslationId 节点将源角色的轨迹重定目标为目标角色。有关详细信息,请参见将动画轨迹重定目标。