使用 IK 链解算器

本部分介绍如何使用三种类型的 IK 链解算器设置角色运动:单链解算器、多链解算器以及样条曲线链解算器。

使用单链解算器

使用单链 IK 解算器可以非常快速地设置角色运动,并可通过非常直观的方式调整运动。

可以在“Animation”>“IK”>“Add IK Handle” 选项窗口中设置“single-chain IK solver”选项。

唯一/不使用“Run IK”

使用单链解算器时,解是唯一的,这意味着无论是正向还是反向播放动画,是移开还是移回约束/控制柄等等,骨骼行为都相同。所以,您可以通过交互方式移动和回放骨骼运动和进行渲染,而无需使用“Run IK”。

如使用多链 IK 解算器,则骨骼的行为不唯一;即关节运动会按照无法预知的方式改变,具体取决于是回放动画、创建视图帧、移动约束还是撤消变换。解决该问题的方法是执行单独的非交互操作,以便使用“Run IK”工具“烘焙”骨骼运动。(要渲染多链解,必须在输出 SDL 文件之前使用“Run IK”。)

非重叠控制柄

使用单链解算器,只能在骨骼的每个部分上放置一个控制柄。例如,可以为每条手臂(肩部到腕部)放置一个控制柄,为每根手指放置一个控制柄(第一个指节到指尖)等等。这一点与多链 IK 区别很大,在多链 IK 中,控制柄可以共享关节,而且通常重叠程度相当高。

单链 IK 示例

下图显示具有单链 IK 控制柄的 IK 链。

创建简单脊椎链

并非只有生物才能拥有骨骼链。台灯也是一个简单的骨骼链。通过使用骨骼链,可单击并形成从台灯底座到灯罩的各个部分,从而轻松创建台灯。

创建类人角色

本部分介绍如何绘制人体骨骼形式。

绘制右腿

  1. 选择“Animation”>“IK”>“New Skeleton”
  2. 单击以定义骨盆、右臀、右膝盖、右踝部以及右脚趾的位置。

    如果此时不断单击,会继续向右脚趾末端添加关节。

绘制左腿

要绘制左腿,需要将创建的下一个关节 DAG 节点作为骨盆节点的子节点。

  1. 按住 键,同时使用上箭头键在层次中向上移动,直到激活骨盆。可以在 SBD 窗口或建模窗口中执行该操作。

    还可以使用“Edit”>“Duplicate”>“Mirror” 创建左腿。

  2. 像右腿一样,单击以定义左侧的臀、膝盖、踝部和脚趾的位置。

绘制脊椎和头部

  1. 按住 键,同时使用上箭头键在层次中向上移动到骨盆,然后绘制脊椎、颈部和头部。

绘制右臂

  1. 按住 键,同时使用上箭头键在层次中向上移动到锁骨,然后绘制右臂。

绘制左臂

  1. 按住 键,同时使用上箭头键在层次中向上移动到锁骨,然后绘制左臂。

    有关骨骼的详细信息,请参见“Animation”>“Editors”>“Skeletons”

  2. 现在骨骼绘制完成。

提示与注释

两个对齐骨骼之间的关节在 IK 动画中一般会“锁定”。

如果层次中的两个连续骨骼(例如,大腿和小腿)在一条直线上,那么即使最低关节(踝部)上的约束已移动,它们也不会弯曲。出现该问题是因为到达踝部约束需要弯曲臀部和膝盖,而对于每个关节而言,只有确定另一关节将同时移动之后才会移动。否则,踝部将在短时间内距离其约束过远。

对于多链控制柄,解决这一问题的方法是设置关节限制(在上例中,位于膝关节上),使两个肢体永远不会在一条直线上(与直线成 2 或 3 度角应该足够)。对于单链,解决方法是设置静止位置,使关节不会在世界空间中对齐。

使用多控制柄解算器

本部分介绍如何使用多控制柄解算器工具操纵骨骼。

选择“Animation”>“IK”>“Add IK Handle” 以便将“Solver”设置为“Multi-handle”

虽然单链 IK 解算器可满足大多数反向运动学需要,但也可以使用多链 IK 控制柄来操纵骨骼。

例如,如果您需要设置尾巴来回摇摆,而且每次摇摆时朝相反方向弯曲的效果,则需要使用多链解算器。使用多链解算器时,骨骼具有非唯一的行为,您需要使用“Run IK”工具烘焙骨骼运动。

有关多链解算器与单链解算器区别的详细信息,请参见“使用单链解算器”

在某些情况下,可以使用多链解算器在骨骼上创建单链解算器无法实现的特殊动画。例如,如果您需要使尾巴来回摇摆,而且每次摇摆时朝相反方向弯曲,则需要使用多链 IK 控制柄。

拾取多链 IK 控制柄时,“Information Window”中的“IK Handle info”部分包含以下三个在使用单链控制柄时不显示的项:

Weight

决定该控制柄相对于骨骼链中其他控制柄的影响的数值。

Position

选中该选项时,控制柄用于确定骨骼末端效应器的位置。

Orientation

选中该选项时,控制柄用于确定末端效应器的父关节的方向。

位置与方向 IK 控制柄

如果在“Position”处于启用状态时指定了一个 IK 控制柄,则移动该 IK 控制柄也会移动骨骼的末端效应器,就像单链 IK 的行为一样。

如果在“Orientation”处于启用状态时指定了 IK 控制柄,则旋转该控制柄会影响末端效应器的父关节的旋转。因此,指向末端效应器的骨骼具有该 IK 控制柄的方向。

请参见页边处的图中对启用“Position”与“Orientation”的图解。

如果同时为一个多链 IK 控制柄指定了“Position”和“Orientation”,将合并它们的行为。末端效应器会随该 IK 控制柄移动,而且指向末端效应器的骨骼会旋转为与控制柄的方向一致。

了解有关 IK 控制柄的信息

有关 IK 控制柄的详细信息,请参阅“创建简单脊椎链”部分。

叠加 IK 控制柄

使用多链 IK 解算器可以叠加 IK 控制柄。例如,可以在手臂上放置从肩部到腕部的 IK 控制柄,并从肩部到肘部放置另一个控制柄。

默认情况下,叠加的 IK 控制柄对 IK 链产生等量影响。

在下例中,如果向下拉动肩部到肘部的控制柄,同时向上拉动肩部到腕部的控制柄,则手臂的姿势会尝试以相等程度满足两个控制柄:

如果希望一个控制柄的影响比另一个控制柄强,可以在“Information window”中调整控制柄的权重。在本示例中,如果希望肩部到肘部的 IK 控制柄产生较小的影响,可将该 IK 控制柄的权重设置为较小值(例如 0.1)。结果,手臂骨骼受肩部到腕部控制柄的影响更大,如下所示:

设置 IK 控制柄的旋转行为

本部分介绍如何“烘焙”IK 控制柄。

使用多链解算器时,需要执行一个额外操作,将 IK 控制柄行为“烘焙”到骨骼关节的旋转上(使用“Animation”>“IK”>“Run IK”)。该操作会直接在骨骼关节上创建关键帧动画,以便可对场景进行渲染,或者通过编辑关节上的关键帧进一步细化骨骼动画。

注:

“RunIK”对于单链骨骼可选,但在使用多链 IK 控制柄时是必需的。

使用样条曲线控制柄解算器

本部分介绍如何控制骨骼链的各个部分。

可以使用样条曲线控制柄控制骨骼链中的一部分。通过使用样条曲线控制柄,骨骼链会与目标样条曲线匹配。使用样条曲线控制柄能够简化尾部、颈部或蛇的动画。样条曲线解算器有四种主要用途:

  • 可以将骨骼链与曲线匹配。只要您更改曲线,骨骼链就会随之改变,仍然与曲线匹配。由此,您可以设置曲线或控制柄的动画,并且相应地设置骨骼链的动画。
  • 可以沿曲线定位骨骼链。
  • 可以滚动骨骼链。
  • 可以扭曲骨骼链。

烘焙动画和使用运动模糊补偿

本部分介绍如何对动画应用运动模糊。

有时,您会希望生成动画曲线取代约束或表达式动画。在这些情况下,“Bake”插件提供相当于“Run IK”的功能。“Bake”按照指定的间隔定期使用关键帧为它们创建动画曲线,可手动查看和编辑这些关键帧。

注:

烘焙动画后,可以选择“Bake”选项窗口中的“Delete Constraints”选项,来删除所有约束。

注:

如果要使用“Motion Blur”渲染动画(详细信息请参见“Render”>“Globals”),您可能希望使用“Motion Blur compensation”。渲染器计算运动模糊采样点的动画,在这些值之间插值。

注:

补偿仅应用于通过单链或样条曲线 IK 控制柄平移的动画。

注:

约束动画仅限于 -180/+180 度的范围。如果约束从 -180 突然增加到 +180,对象实际上并不会移动。但运动模糊采样会读取这些度数范围之间的值,使得对象显示为翻转(即使对象不应翻转)。使用“Motion Blur compensation”时,会在检测到翻转问题的位置,在运动模糊采样时间点创建附加关键帧。

样条曲线 IK 概述

样条曲线控制柄是通过根关节、末端关节和目标样条曲线在骨骼链上定义的。

与单链 IK 控制柄一样,样条曲线控制柄是影响骨骼的约束。它们不会叠加。

在变换曲线或为其设置动画时,骨骼链会尝试匹配它。您还可以变换根控制柄的位置或旋转或者设置相应动画以更改链位置,使其沿曲线滚动。旋转主控制柄会使链上的各个关节扭曲。如果使用点约束将根关节约束到一个对象,会约束链的起始位置。

主控制柄和根控制柄

有两种样条曲线控制柄。

  • 主控制柄,与单链 IK 控制柄相似,都位于链末端,定义从根关节到末端关节的链。它控制链的扭曲角度。
  • 根控制柄控制骨骼链在样条曲线上的位置以及链的滚动角度。它是位于主控制柄定义的根关节上的单关节控制柄。根控制柄仅控制根关节:即该关节在样条曲线上的位置及其绕下方骨骼的旋转。不过,根关节影响整个链。

如果主样条曲线控制柄控制没有根控制柄的骨骼链(根控制柄可能无法创建或已被删除),根关节会保持固定,且只有可达到的链部分跟随样条曲线。尾部就是一个恰当的示例;它始终附着到身体,同时可沿曲线自由拖动其端部。如果不存在主控制柄,则根控制柄不能存在。

  • 可以创建共享一条目标样条曲线的多个相邻主控制柄。有关示例,请参见下图。
  • 每条样条曲线只有一个根控制柄,而且可存在多个主控制柄。主控制柄的位置由根控制柄控制。相邻主控制柄可以使用不同的目标曲线。
  • 在删除主样条曲线控制柄时,还会删除存在的根控制柄。但在删除根控制柄时,不会删除其主控制柄。

参数和弧长

样条曲线控制柄可以使用参数或弧长定义曲线上的位置。这两种类型的测量都使用相对百分比值。

下图显示样条曲线上由参数距离和弧长定义的点。该图中的每个点由四个值表示:绝对参数值、相对百分比参数值、绝对弧长值和相对百分比弧长值。

对于每个样条曲线控制柄,我们只能使用相对参数值和相对弧长值来定义点或位置。

滚动链

滚动链意味着使用下方骨骼作为旋转轴来旋转根关节。由于所有下方关节会继承上方关节的旋转,因此根关节的旋转会使整个链滚动。

扭曲链

扭曲链意味着使用链中每个关节的下部骨骼作为旋转轴,旋转各个关节(末端关节除外)。如果主控制柄的“Twist Root”属性设置为“ON”,则扭曲会从根关节开始;否则会从第二个关节开始。

您可以使用四种不同的扭曲类型控制样条曲线控制柄。(详细信息请参见“Information Window”中的“Twist Type”。)

样条曲线控制柄信息

本部分介绍如何查看有关样条曲线控制柄的信息。

拾取了一个 IK 控制柄时,可通过选择“Windows”>“Information”>“Information Window” 来查看有关该控制柄的信息。

根控制柄信息

有关其他控制的信息,请参见“创建简单脊椎链”

对于根控制柄,“Information Window”的“IK handle section”中显示下列附加控制:

Target curve

样条曲线控制柄的目标曲线。

Position Type

样条曲线控制柄可以使用参数或弧长定义曲线上的位置。

Position

您可以按住 键 (Windows) 或 键 (Mac),并使用鼠标左键在“Position”字段中滚动来更改位置。也可以在“Position”字段中键入值。

Roll

您可以按住 键 (Windows) 或 键 (Mac),并使用 在“Roll deg”字段中滚动来更改旋转角度。也可以在“Roll deg”字段中键入一个数字。

Anti Flip

当样条曲线链沿螺旋曲线路径移动时,它可能会意外翻转 180 度,或者轴发生更改。要控制该行为,请选择“Anti Flip”>“CURVE_NORMAL”或者“Anti Flip”>“WORLD_UP”。默认情况下,它设置为“NONE”。

如果“Anti_Flip”设置为“CURVE_NORMAL”或“WORLD_UP”,则需要设置“UP Axis”和“Front Axis”。必须为两个轴设置不同的旋转。

“Anti_Flip”约束根关节的方向。定义的“Front Axis”沿曲线的切线方向。“Up Axis”垂直于“Front Axis”。

  • CURVE_NORMAL —“Up Axis”沿曲线的法线方向。
  • WORLD_UP —“Up Axis”尝试沿世界空间的上方向轴方向。

根据曲线路径的方向,可能需要尝试抗翻转设置。

主控制柄信息

对于主控制柄,可以在“Information window”中更改扭曲类型和扭曲角度。

Target curve

样条曲线控制柄的目标曲线。

Twist Type

主样条曲线控制柄解具有四种类型的控制,您可以使用以下弹出菜单来指定这些控制:

  • Linear — 每个关节上的扭曲程度相同。
  • Fast Out Slow In — 根关节附近关节的扭曲程度大于末端附近关节的扭曲程度。
  • Slow Out Fast In — 根关节附近关节的扭曲程度小于末端附近关节的扭曲程度。
  • Ease Out Ease In — 中间关节的扭曲程度大于两端关节的扭曲程度。
Twist Root

设置为“ON”可以从根关节开始扭曲。否则,扭曲从第二个关节开始。

Twist

可通过在“Twist”字段中键入度数来设置扭曲度。可以按住 键 (Windows) 或 键 (Mac),并使用鼠标左键 进行滚动,通过交互方式更改度数值。

注:

Alias 另存一个 SDL 文件时,会仅为“Render Globals”窗口中指定的关键帧范围写入 IK 和约束动画。

注:

这意味着如果您在该 SDL 文件中编辑起始/结束帧,则原始起始/结束范围以外没有约束/IK 动画。

注:

必须重新保存 SDL 以获得缺失的所有约束/IK 动画。