×

人物角色绑定之使用MEL进行IK/FK无缝切换

发布时间:2019-12-17 17:53:35

在上一节中,我们通过在通道盒中添加一个IK/FK属性来实现手臂IK和FK的切换功能,但这种切换方式并不是无缝切换,本节将主要学习通过MEL来实现角色手臂IK和FK的无缝切换。

一、IK转换到FK

Step01 打开上一节完成的场景文件“IK/FK无缝切换”,选择IK_ R _bi18骨骼,然后打开脚本编辑器,创建一个名称为FK和IK的标签[在脚本编辑器中执行Command>Rename Tab (命令>重命名标签),对标签进行重命名,在该标签中输入以下语句:

//IK TOFK

float $IK_ R_bi18rx=' getAttr IK_ R_ bi18 .rotateX’;

float $IK_ R_bi18ry=' getAttr IK_ R_bi18 .rotateY’;

float $IK_ R_bi18rz=' getAttr IK_ R_ bi18 .rotateZ’;

如下图(左)所示。

gelAttr语句用于获取数值。

Step02 执行脚本,在上端面板中得到结果// Result: -13.489111 //,就是IK骨骼的3个轴向,下面将这3个值赋予FK,从而实现无缝切换。

Step03 选择FK_ R_bi19,在通道盒中将其旋转轴向的值全部归零,如下图(中)所示。

Step04 将脚本编辑器上端面板中的3个归零命令语句复制到脚本编写区,同时将0分别替换成变量$IK_ R _bi18rx、$IK_ R_bi18ry和$IK_R_ bi18rz, 并调整x、y和z的顺序,如下图(右)所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

Step05 同理制作FK_ R _bi15骨骼。在脚本编辑器中输入以下语句:

Float $IK_ R_bi15ry=`getAttrIK_ R_ bi15.rotateY;

selAttr"FK_ R_ bi15.rotateY" $IK_ R_bi15ry;

执行这两个语句,观察是否正确。

Step06 继续制作FK_ R_shou16骨骼。在脚本编辑器中空一行继续输入以下语句:

float $IK_ R_ shou16rx=' getAttr IK_R_shou16.rotateX`;

float $IK_ R_ shou16ry=' getAttr IK_ R_shou16.rotateY`;

float $IK_ R_ shou16rz= ' getAttr IK_ R_shou16.rotate Z`;

setAttr"FK_ R_ shou16.rotateX" $IK_ R_ shou16rx;

setAttr "FK_ R_ shou16.rotateY" $IK_ R_ shou16ry;

setAttr "FK_ R_ shou16.rotateZ" $IK_ R_ shou16rz;

最终的语句如下图所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

Step07 书写R_ IKFK_crv控制器的命令语句,在脚本编辑器中空一行, 输入以下语句:

setAtr"R_ IKF _crv.IKFK"1

如下图所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

Step08 在大纳中选择skin_ R_bi14, 在脚本编辑中选择所有的脚本语言,然后执行所有脚本,如下图(左)所示,可见skin_ R_bi14骨骼已经捕捉到FK了,如下图(右)所示。

人物角色绑定之使用MEL进行IK/FK无缝切换

这样IK转换到FK的语句就创建完成了。

Step09 创建一个新的工具架rigging,如下图所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

Step10 选择脚本编辑器中的所有脚本,将其拖曳到rigging工具架中,如下图(左)所示,通过Shelf Editor (工具架编辑器)将其重新命名为FK,同时修改标签的颜色以便更好地区别,如下图(右)所示,单击Save All Shelves (保存所有架子)按钮, 这样IK切换到FK的命令就创建好了。

 人物角色绑定之使用MEL进行IK/FK无缝切换

二、 FK转换到IK

Step01 在脚本编辑器的IK标签中输入以下语句:

//FK TO IK

float $FK_R_ shou16[]=' xform -q -ws-t FK_ R_ shou16';

注:xform语句用于获取移动、旋转和缩放的数值。

xform -ws –t$FK_R_ shou16[0] $FK _R _shou16[1]$FK_ R_ shou16[2] R_IK_ shou_crv;

注:此时观察角色的手臂, 如果发现有错误,可通过重新创建手臂的控制器R_ IK shou_ crv来解决,保证控制器与骨骼轴向的统一。在绑定的过程中,这样的情况时有发生。

Step02 在脚本编辑器中空一行, 继续输入以下语句:

float $FK _R_ shou16ro[]= xform -q -Ws –ro FK_ R_ shou16';

xform -ws -ro $FK_R_ shou16ro[0] $FK_R_ shou16ro[1] $FK_R_shou16ro[2]R_IK_ shou _crv;

Step03 在大纲中选择R_Ik_ shou_crv控制器,选择脚本编辑器中的语句,如下图(左)所示,然后执行语句,结果如下图(右)所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

下面捕捉定位器。

Step04 创建一个定位器FK_ lot, 并打组,将组命名为FK _lot_ grp,放在locator1 附近,尽量不要重合,以免选错。

step05 在大纲中将FK_ lot_ grp放置在FK_R_bi_ grp之下,作为FK_ R_bi_grp的子物体,如下图(左)所示。

Step06 将locator1重新命名为IK_lot,并打组命名为IK_ lot_ grp。

Step07 继续输入以下语句:

float $FK_lot[]='xform -q-ws-t FK_ lot';

xform -ws -t $FK_ lot[0] $FK_ lot[1] $FK_lot[2]IK_ lot;

setAttr "R_ IKFK_crv.IKFK"0;

执行以上3个语句,定位器已经捕捉在一起了,如下图(右)所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

执行所有语句,可见FK已经捕捉到IK上了,如下图(左)所示。

TIPS :如果不重合,可以将FK的FK_R_ bi19、FK_R_ bi15和FK_ R_ bi16的选择属性归零。

Step08 参照前面的方法再创建一个FK切换到IK的命令,放置在rigging工具架中,如下图(右)所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

三、设置控制器的隐藏和显示

Step01 打开材质编辑器,将控制器R_ IKFK _crv、 IK_ R_ bi_ grp和FK_ R_ bi_ grp导入进来,然后用R_IKFK_ crv的IKFK属性连接FK_ R_bi_ grp的visibility (显示)属性,如下图(左)所示。

Step02 创建一个反转节点reversel,然后将R_IKFK_crv的IKFK属性连接反转节点reverse1的inputX(输入X)属性上,再将反转节点reverse1的outputX (输出X)属性连接到IK_ R_ bi_ grp的visibility (显示)属性,如下图(右)所示。

 人物角色绑定之使用MEL进行IK/FK无缝切换

选择skin_ R_ bi14原始骨骼,在rigging工具架中单击IK/FK按钮时,观察大纲中的IK_R_ bi grp和FK_ R_bi_ grp。单击IK时,FK就隐藏起来,单击FK时,IK就隐藏起来,读者可自行测试。

短视频怎么才能更好玩

短视频怎么才能更好玩

返回列表>
关于我们
关于我们