Mel在三套骨骼相互转换时的应用苏华岭在maya骨骼的绑定过程中,有很多步骤都需要重复制作,这不仅增加的工作量而且制作过程枯燥无味,并且容易出现错误严重影响工作效率,给动画的工作人员带来很大的麻烦。在这时如果适当的用Mel来编写一段小代码或者表达式往往会给整个绑定过程带来事半功倍的效果。一个正常人物的设定往往需要至少三套骨骼的相互协作才能完成一套和谐的稳定的动作,所谓三套骨骼就是指FK骨骼、IK骨骼以及刷权重用的绑定骨骼。在工作的时候IK和FK只能显示其中的一套并且依附于绑定骨骼,而且需要另外的一套自动的隐藏,其工作原理是将IK控制骨骼和FK控制骨骼分别用父子约束命令到绑定骨骼上,然后在通过控制约束接点来控制绑定骨骼是跟随FK骨骼还是跟随IK骨骼。下面就用人体绑定这一例子来解释说明一下:首先建立骨骼及其控制器如图所示:蓝色代表IK骨骼系统,红色代表FK骨骼系统,黄色代表绑定骨骼系统控制器FK1FK2FK3分别与骨骼FK1FK2FK3执行父子约束,并且依次FK3_con_gp与FK2_con”P”上,FK2_con_gp与FK1_con”P”上;IK控制器与IK手柄父子约束,IK_lct与IK手柄矢量约束;然后要做的就是分别把FK骨骼和IK骨骼约束到绑定骨骼上:选择IK1、bone1执行父子约束,IK2、bone2执行父子约束,IK3、bone执行父子约束。选择FK1、bone1执行父子约束,FK2、bone2执行父子约束,FK3、bone执行父子约束。做完之后会是这种效果:接下来要做的就是使用Mel来控制FK及IK的显示或隐藏上图黄色圆圈命名为IKFK,给IKFK添加属性Switch,并编写一下语言:if(IKFK.switch==0){FK1.visibility=FK2.visibility=FK3.visibility=0;IK1.visibility=IK2.visibility=IK3.visibility=1;FK1_con.visibility=FK2_con.visibility=FK3_con.visibility=0;IK_con.visibility=1;IK_lct.visibility=1;}if(IKFK.switch==1){FK1.visibility=FK2.visibility=FK3.visibility=1;IK1.visibility=IK2.visibility=IK3.visibility=0;IK_con.visibility=0;FK1_con.visibility=FK2_con.visibility=FK3_con.visibility=1;IK_lct.visibility=0;}这个表达式的原理是:当IKFK.switch的属性为0时,FK的骨骼及控制器隐藏,IK的骨骼及控制器显示;当IKFK.switch的属性为1时,FK的骨骼及控制器显示,IK的骨骼及控制器隐藏。由于FK、IK同时与绑定骨骼进行了父子约束,因此FK与IK对绑定骨骼的影响值各位0.5,所以还要再添加上一句表达式来消除绑定骨骼父子约束的偏移误差:bone1_parentConstraint1.FK1W1=bone2_parentConstraint1.FK2W1=bone3_parentConstraint1.FK3W1=IKFK.switch;bone1_parentConstraint1.IK1W0=bone2_parentConstraint1.IK2W0=bone3_parentConstraint1.IK3W0=1-IKFK.switch;表达式原理:第一句中将IKFK中的switch属性值赋给了FK对绑定骨骼的父子约束值。第二句中1减去IKFK中switch属性值,赋给了IK对绑定骨骼的父子约束值。Ok,大功告成参考文献:maya绑定的艺术