反向运动学
使用 forward kinematics 工具主要涉及到的是正确地建立关节。在创建关节并将关节编为一组,且给关节加了合适的限制之后,就要转换关节并给它们作关键帧。首先从顶部层级开始,然后向下处理底层关节直到获得所要的姿态。
对于定向运动来说 ( 如一个人将脚放到地面或伸手开门 ) ,使用正向运动学来实现非常困难和麻烦,一般需用反向运动学 (ik) 来制作动画。
反向运动学包括 ik 手柄和 ik 解算器。一个 ik 手柄贯穿受影响的关节,这些受影响的关节就叫 ik 链,并且手柄线贯穿关节。手柄矢量指的是从起始关节开始指向末端关节的矢量,末端关节是 ik 手柄的末端受动器所在位置,如图 13-17 所示。
图 13-17 ik 手柄
ik 解算器可以查看 ik 链末端受动器的位置并作一些必要的计算,以使关节能正确旋转。旋转方式是从起始关节开始到 ik 链的末端关节为止,这种方式意味着末端关节在末端受动器所在位置。当末端受动器移动时, ik 解算器就将末端受动器的平移值改为关节的旋转值,关节也会相应地改变。通常, ik 链只使用 3 个关节,但也可以处理更多的关节。
maya 的界面有 3 种 ik 解算器: ikrp(rotate plane) 解算器, iksc(single chains) 解算器和 ik spline 解算器,每种 ik 解算器都有各自的 ik 手柄类型。
使用 ikrp 手柄
ikrp 解算器是 ik 手柄工具的默认设置,其具体操作步骤如下:
(1) 在侧视图中,画一条简单的关节链,如图 13-18 所示。
(2) 执行 skeleton → ik handle tool □命令,并将工具重置为默认设置。
(3) 单击第 1 个关节,然后单击最后一个关节,一个 ik 手柄已创建起来。顶部的圆复杂,如图 13-19 所示。当得到其组件的内容时,设置起来就非常简单。
ikrp 解算器仅计算末端受动器的位置值,而忽略了末端受动器的旋转值。通过 ikrp 解算器旋转的关节,其旋转方式是关节的 y 轴是平的、 x 轴指向骨头中心、 z 轴垂直于弯曲方向。这是建立关节的默认局部方向坐标,如果没有看到旋转圆面,则可以执行末端受动器并按 f 键显示 show manipulator 工具。
沿着关节弯曲方向的平面由平面指示器显示,平面作为关节链平面。用旋转 ik 链的扭曲圆平面可以绕手柄矢量旋转该平面。相对于由手柄矢量和极矢量创建的参考面可以测出 twist 度,该参考面可以被移动且可以作关键帧。
图 13-18 建立骨骼 图 13-19 ik 手柄
注意:
有时,手臂弯曲的方式会引起 ik 链与默认参考平面设置相互转换,为了避免这种转换,可以调整极矢量或作极矢量动画。
使用 ikrp 手柄的好处在于能比较精确地控制 ik 链的旋转,缺点在于必须处理较多的组件。
使用 iksc 手柄
ik sc 手柄比 ik rp 手柄要简单些,下面 介绍如何使用 ik sc 手柄。具体操作步骤如下:
(1) 首先进入侧视图并另画一条简单的关节链。
(2) 执行 skeleton → ik handle tool 命令,如图 13-20 所示进行没置,然后关闭该对话框。
图 13-20 设置 ik sc 手柄
(3) 单击第 1 个关节,然后单击最后一个关节,可以看到 iksc 手柄了。
(4) 执行 rotate 并旋转 ik 手柄发现这似乎只对局部 x 和 y 旋转手柄有效,且释放手柄后它们又回到一定的角度。
而要按 f 键显示 show manipulator 工具,那么将什么也看不到,因为 iksc 手柄没有额外的控制器 —— 所有的东西都是由 ik 手柄所控制。 iksc 解算器计算末端受动器的旋转值并以一定的方式旋转 ik 链,其中一定的方式是指在链中的所有关节都有默认的局部方向。尽管在手柄中看不到任何有关关节链平面的表示,但关节链平面确实存在于 iksc 解算器中。作为 iksc 手柄,该平面通过关节链,这样 x 和 y 轴正位于平面上,如图 13-21 所示。
图 13-20 一个 iksc 手柄
对于 iksc 手柄,在 attribute editor 中,如果有两个或两个以上链相重叠时, iksc 就会有一个 priority 赋值。 priority 1 设置的手柄将首先旋转链中的关节,然后 priority 2 设置的手柄将旋转手柄的关节,依次类推。 po weig
[1] [2] 下一页
新闻热点
疑难解答