advanceskeleton插件分身体和表情单独绑定的时候合并表情步骤

时间:2023-03-09 17:01:32
advanceskeleton插件分身体和表情单独绑定的时候合并表情步骤

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