【HumanK角色绑定系统】
为了与角色动画软件motionBuilder同步,maya2011起将原有的FBIK(全身反向动力学)系统升级为HIK(人类角色反向动力学)系统。虽然名称改为humanIK,不过HIK系统并不仅仅针对人类角色,它还可以运用于四足角色,加上HIK强化的目标重定(动画移植)功能。相信它将会成为一个很流行的角色动画绑定系统。
与过去maya中内置的FBIK系统相比,HIK简化了很多流程,并且可以快速的将用户自定义的骨架加入到HIK解算系统中。HIK使用黄色的FK骨架图形来代替过去的FK关节,可以直接在场景中进行控制,而不需要像传统FBIK那样进行FK和IK模式的切换――FK和IK的无缝切换有了崭新的控制方式。事实上,FK控制器的动画效果也就是最后的关节动画效果,只不过它可以同时使用效应器的移动和自身的旋转来实现相同的动画,它的最终动画效果是由自身的旋转动画和效应器的吸附程度决定。HIK的动画设置方法和FBIK大同小异,所不同的是HIK支持了Autokey(自动设置关键帧)功能,动画曲线的调节也直观了很多。 【HIK系统创建流程】
1.启用HIK面板。在Skeleton菜单下,选择HumanIK,进入HIK系统的创建面板。
*如果maya不包含HIK系统,需要在插件管理器中加载mayaHIK.mll。 2.创建HIK骨架。如果场景中还没有任何HIK系统,点击Skeleton即可创建一套骨骼。
3.调整比例。HIK系统的骨架,默认是以1.8M(Maya中的场景数值为180厘米)左右的角色身高为基础的,对于通常以1:100(模型:实际)比例的三维动画而言显得巨大,因此需要将CharacterScale数值设置为0.01,。
*数值会在骨架比例发生变化后自动回复到1,用户可根据场景比例进行HIK骨架的任意缩放。
而游戏通常都会匹配现实的单位比例,此时的骨架需要调整的范围则不会太大。以下我以一个游戏模型的绑定来进行系统介绍。
4.模型的关节对位。角色模型在maya场景中,应该是沿着Z轴正向面向用户的。关节对位要以角色模型左侧(面对用户是右侧)进行。HIK对模型的T姿态要求比较严格,因为手臂要和X轴向平行,你只能在X轴方向上对手臂关节进行移动,任何其他轴向的运动或者旋转,都会产生HIK系统的错误警告。不管你是手动创建的关节,或者执行了变形冻结,或者改变了关节朝向,关节的唯一的绝对坐标系都会如实的反映给HIK系统。
T 形站姿有以下要求:
1. 角色必须面向 Z 轴的正方向。
2. 手臂必须沿 X 轴扩散。因此,左臂应指向 X 轴的正方向。
3.角色的头顶必须向上,并位于 Y 轴的正方向上。
4.角色的手将展平,手掌朝向地面,拇指平行于 X 轴。
5.角色的脚需要垂直于腿(脚趾指向 Z 轴方向,如图所示)。脚不得绕 Y 轴旋转(即,左脚脚趾不应向内朝向右腿,也不应向外远离右腿)。 我们可以将HIK系统的Definition面板置于右边,观察关节的状态变化,确保都是绿色显示。如果出现橙色,就表示手臂与X轴不平行,会导致效应器控制时出现异常。场景中的初音模型并不是很标准的T姿态,因为她的手臂稍微向下倾斜。为了匹配模型,旋转HIK手臂关节时,橙色的警告出现了(即使是用户自己创建的关节,只要和X轴向不平行,也会出错)。我们并不能违反HIK的强制规定,那么这里可以用一个逆向的步骤进行: (1)旋转角色左手臂关节完成关节和模型的对位。
*此时可以记下旋转的角度,便于后面还原位置时使用。
(2)镜像关节。
(3)关节和模型执行蒙皮操作。
(4)手动旋转左手臂关节至和X轴向平行的朝向。
*尽管HIK要求手臂关节要和X轴向平行,但并不是绝对的,HIK系统会有一个允许的角度变化范围,因此粗略的调节,使HIK面板的橙色关节变为绿色即可。右手通常是左手旋转值的负值。
【插入说明】热量贴图的蒙皮方式适合于一个所有点都有连接的完整模型,如果是由多个物体合并而成的模型,有可能会丢失组件,因此这里我选择了传统的蒙皮方式。另外有一点需要注意,maya从2012版本之后,将蒙皮的权重规则改变了,这可能会给传统的动画绑定带来不少麻烦。maya的传统设置中,笔刷绘制权重的方式会将一个点受影响的权重值总和大于或小于1;当我们通过componentEditor修改SmoothSkins光滑蒙皮的关节数值时,系统会自动分配权重,保持总和为1,此时我们就可以将不需要的关节权重去掉。过去的这种方式,是“去掉多余关节影响”的工作流程。
Maya2013的默认方式,则是 “增加关节影响”的工作流程。在这种流程下,无论是笔刷绘制还是手动输入权重值,maya都不会规格化权重的总和为1,而是只针对所选关节进行数值改变,保持其他关节权重的固定。这种方式需要一个重新整合计算的过程,所以称为PostNormalization(后期规格化)。
配合交互式蒙皮,这是种不错的方式,但我们很难去控制具体的权重值,所以我会暂时先使用传统的权重规格。在蒙皮后,选择模型,执行Skin->EditSmoothSkin->EnableWeightNormalization,使用传统的蒙皮规格。
*如果已经改变了权重,导致局部点出现偏移,可以在执行了EnableWeightNormalization命令后再执行NormalizeWeights修正模型权重。有关蒙皮权重的内容,此处暂不讨论,会另外进行。
5. 添加效应器(关节控制器)。在HIK面板的Source下拉菜单中选择ControlRig,完成控制器的绑定。
*以前HIK版本中,要先锁定骨架才能加入控制器,现在的HIK系统会根据需要,自动锁定或者提示用户解锁会造成控制器丢失。如果在绑定了控制器后需要对关节重新设置,只要在Skeleton栏点击小锁头按钮解锁即可(控制器将被自动删除)。
从骨架的创建编辑到控制器的加入,我们可以通过菜单、工具架和场景中右键标记菜单来完成。在某些操作上,maya中的HIK会比motionBulider更灵活方便,尽管它只是个简化版。
【动画移植】 HIK有个很方便的目标重定功能,可以快速的将同一个系统下的动画进行转移。例如,将maya的visor窗口中的HIK动画范例用鼠标中键拖入场景中,在Source下拉菜单中会多出一个角色的动画集(以前通常会称为角色组)。此时,只要选择其他动画集,我们建立的HIK系统会立即将它应用到控制角色的关节上。
从Visor中载入的动画范例是已经烘焙到关节上的关键帧动画,如果需要进行修改,我们应该将它烘焙到HIK系统的控制器上,执行Bake->BakeToControlRig。
【动画调节】
HIK的动画调节有两种模式:FullBody和BodyPart。FullBody可“牵一发而动全身”,单个效应器的改变可以影响到整个HIK骨架的变化,在使用pin(固定)功能来约束关节部位时,是必须使用该模式的;BodyPart只会影响所控关节及邻近关节的状态,常用于细调局部关节的动画。
HIK的动画控制器有两种:黄色的FK关节控制器和IK效应器(包括辅助控制的轴心效应器和次级效应器)。
过去FBIK中的IK/FK模式切换的功能,在HIK系统中因为新的FK关节控制器的加入而被省略了。对于IK和FK的融合,每个效应器上都有名为“IK Blend”的参数进行设置(T表示位移,R表示旋转)--也就是通道栏中的Reach属性。当数值为0,表示动画的效果是以黄色FK控制器动画进行,会产生弧线效果,效应器不影响动画过程;当数值大于0,则表示动画偏向效应器的程度;当数值等于1,则是完全的IK模式,黄色FK控制器不参与动画控制,由效应器的直线动画控制。
无论效应器是FK还是IK模式,用户都可以同时选择FK控制器或者效应器来制作PoseToPose。因为当它们其中一个被设置关键帧时,HIK系统会立即将这个关键帧的信息同时写入到FK控制器和效应器上,所以我们不必担心IK/FK模式切换时会发生动画跳跃的情况。IK/FK模式的选择,决定的只是动画的过程,而不是终点的位置。 如果需要调节动画曲线,效应器的IK/FK状态就是我们要优先考虑的。HIK效应器默认是IK模式的只有盆骨和脚踝的效应器,换言之,除了根关节和脚踝关节的动画控制是效应器的动画曲线决定,其他关节动画是直接调节黄色FK控制器的动画曲线的。除非特殊情况,一般很少会用到IK和FK的同时融合,因为这个会增加动画曲线调节的复杂度。 有同仁告诉过我,他们动画师调动画很少会调节动画曲线,都是逐帧完成。我并不反对这样一种过程,只是个人的认识中,这是一种较为繁琐费时的工作,所以我会更优先考虑动画曲线的运用。
以maya的动作捕捉动画范例(dance1.ma)为参考,我们可以看到,决定角色位移的根关节和脚踝的效应器,它们的动画曲线都是比较漂亮的曲率变化。如果忽略了动画曲线的作用,逐帧的手工调节PoseToPose的中间帧,工作量巨大,效果也难以保证,尤其是遇到后期动作变更的情况,则容易导致工作的前功尽弃。 有关HIK动画的调节内容,我会放到后面的章节再进行,此处先省略数千字。 游戏模型布线简单,动画细节不够丰富,不过这里我仍稍稍的加入maya的头发动力学,增强下动画效果(没加入碰撞效果)。使用的是maya2013新增的nHair系统,通过NURBS曲线转动力学曲线的功能,使受控的IK关节产生动力学效果。
方法可以参考早期的博客文章:骨骼与动力学曲线的结合技术
|