
advanceskeleton插件分身体和表情单独绑定的时候合并表情使用的代码以及合并步骤
1.身体单独绑定
2.表情单独绑定
3.合并步骤
①原有adv表情文件删掉除了curve组以外所有东西 删除无用节点之后保存curve_ctrl
②原有adv表情文件curve组整个从父级到子级加个facial前缀(这个用于将来放在原地链接属性用) 单独保存整个文件为face_v02
③打开表情face_v02 导入 curve_ctrl 并去掉名词空间
④选择facial前缀的组单独显示(这时候会显示出所有表情facial前缀的控制器),然后框选所有显示出的facial前缀的控制器(注意单独取消face方块表情面板的那个主控制器的选择) 执行下面代码 做一对一链接 之后保存为facial_final
#——————————————华丽分割—————————————————————————————————————————————————————————————————————————————————
##选中facial——
import maya.cmds as mc
myAllReal_ctrl=mc.ls(sl=True)
for a in myAllReal_ctrl:
myHideAttr=a.split("facial_")[1]
myallAttr=mc.listAttr(a,k=1)
myallAttr_01=mc.listAttr(a,ud=1)
if myallAttr:
if myallAttr_01:
for b in myallAttr_01:
if b not in myallAttr:
myallAttr.append(b)
for b in myallAttr:
if mc.getAttr(a+'.'+b,l=1)==0 :
mc.connectAttr(myHideAttr+'.'+b,a+'.'+b,f=1)
if mc.getAttr(a+'.'+b,l=1)==1 :
mc.setAttr(a+'.'+b,l=0)
mc.setAttr(myHideAttr+'.'+b,l=0)
mc.connectAttr(myHideAttr+'.'+b,a+'.'+b,f=1)
mc.setAttr(a+'.'+b,l=1)
mc.setAttr(myHideAttr+'.'+b,l=1)
#————————————————————————————————————————————————————————————————————————————————————————
⑤打开身体绑定,导入facial_final文件 表情里面的模型对身体里的做blendshape融合,表情假控制器P给头部
完成
######+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++############################
###写在后面##我们在制作时候发现合并完之后眼睛follow 属性失效,如遇到请运行下面代码##
import maya.cmds as mc
#
CNNsource=mc.listConnections( 'lowerLid_L.lowerFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_L.outputY', 'lowerLid_L.lowerFollowY', f=1 )
CNNsource=mc.listConnections( 'upperLid_L.upperFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_L.outputY', 'upperLid_L.upperFollowY', f=1 )
CNNsource=mc.listConnections( 'lowerLid_L.lowerFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_L.outputZ', 'lowerLid_L.lowerFollowZ', f=1 )
CNNsource=mc.listConnections( 'upperLid_L.upperFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_L.outputZ', 'upperLid_L.upperFollowZ', f=1 )
CNNsource=mc.listConnections( 'lowerLid_R.lowerFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_R.outputY', 'lowerLid_R.lowerFollowY', f=1 )
CNNsource=mc.listConnections( 'upperLid_R.upperFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_R.outputY', 'upperLid_R.upperFollowY', f=1 )
CNNsource=mc.listConnections( 'lowerLid_R.lowerFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_R.outputZ', 'lowerLid_R.lowerFollowZ', f=1 )
CNNsource=mc.listConnections( 'upperLid_R.upperFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_R.outputZ', 'upperLid_R.upperFollowZ', f=1 )
###
CNNsource=mc.listConnections( 'upperFollowMultiplyDivide_L.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_L.rotate', 'upperFollowMultiplyDivide_L.input1', f=1 )
CNNsource=mc.listConnections( 'lowerFollowMultiplyDivide_L.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_L.rotate', 'lowerFollowMultiplyDivide_L.input1', f=1 )
CNNsource=mc.listConnections( 'upperFollowMultiplyDivide_R.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_R.rotate', 'upperFollowMultiplyDivide_R.input1', f=1 )
CNNsource=mc.listConnections( 'lowerFollowMultiplyDivide_R.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_R.rotate', 'lowerFollowMultiplyDivide_R.input1', f=1 )
CNNsource=mc.listConnections( "upperLid_L.upperFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_L.rotate', CNNsource[0]+'.input1', f=1 )
CNNsource=mc.listConnections( "upperLid_R.upperFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_R.rotate', CNNsource[0]+'.input1', f=1 )
CNNsource=mc.listConnections( "lowerLid_L.lowerFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_L.rotate', CNNsource[0]+'.input1', f=1 )
CNNsource=mc.listConnections( "lowerLid_R.lowerFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_R.rotate', CNNsource[0]+'.input1', f=1 )
############+++++++++++++++++++++++++++++++++########################
欢迎交流
VX:27971533