Example #1
0
    def setupTeeth(self):
        allCons = []
        conGrps = []
        ConObj = CreateControler(
            13, (0.1 * self.scale, 0.1 * self.scale, 0.1 * self.scale))
        ConObj.signValue = 54861
        for i, jnt in enumerate(self.jnts):
            jntMat = rig.getAttr(jnt + '.worldMatrix')
            con = ConObj.SK_b08(jnt.split('_')[0] + '_M')
            allCons.append(con)
            rig.xform(con, ro=(90, 0, 0), wd=True)
            rig.makeIdentity(apply=True, r=True)
            rig.xform(con, m=jntMat)

            conGrp = CA.addGrp().grp(con, 'Freeze')
            conGrps.append(conGrp)

            rig.parentConstraint(con, jnt, mo=True)
            rig.scaleConstraint(con, jnt, mo=True)

        self.Connect.connect(self.grp, allCons)  #连接控制器属性
        newGrp = rig.group(conGrps, n=self.grp + '_CTRLGrp')
        rig.parent(newGrp, self.grp)

        #连接visibility属性
        Connect = CA.connectAttribute()
        Connect.sourceAttr = 'conVis'
        Connect.targetAttr = 'visibility'
        Connect.connect(self.grp,
                        [rig.listRelatives(con, p=True)[0] for con in allCons])
Example #2
0
    def startSkin(self):
        print self.checkBoxDict
        print self.textFieldDict
        print self.relativeDict

        for CB in self.checkBoxDict:
            if self.checkBoxDict[CB]:
                bts = self.relativeDict[CB]
                if 0 == len(bts):
                    pass

                if 1 == len(bts):
                    obj = self.textFieldDict[bts[0]]
                    newObj = obj[2:-1]
                    objs = newObj.split("', u'")

                    if self.bts[bts[0]] and objs[0] != '':
                        infs = rig.sets(self.bts[bts[0]], q=True)
                        CA.skinClusterObj().skinClusters(infs, objs)

                if 1 < len(bts):
                    for bt in bts:
                        obj = self.textFieldDict[bt]
                        newObj = obj[2:-1]
                        objs = newObj.split("', u'")

                        if self.bts[bt] and objs[0] != '':
                            infs = rig.sets(self.bts[bt], q=True)
                            CA.skinClusterObj().skinClusters(infs, objs)
Example #3
0
    def restoryTemplate(self):
        #获得控制器形状
        ShpaeIE = InportExport.SK_ImportExportUI()
        cons = []
        if rig.objExists('face_controls_Sets'):
            cons = WDBase.getSetElements().getEle()
        ShpaeIE.allCons = cons
        ShpaeIE.relativesSet = False
        #        ShpaeIE.conSpace = True
        ShapeInfo = ShpaeIE.SK_getCurveShape()

        parameter = WDBase.convertData().getAttrData(
            'Head_FaceRig_Control_GRP.parameter')
        templateInfo = WDBase.convertData().getAttrData(
            'Head_FaceRig_Control_GRP.templateInfo')

        rig.file(f=True, new=True)
        WDTemplate.WD_buildPostion(parameter[0], parameter[1], parameter[2],
                                   parameter[3], parameter[4], parameter[5],
                                   parameter[6], parameter[7], parameter[8],
                                   parameter[9])

        BD.backupData([], [], [], parameter).done()  #备份数据
        self.setWindowInfo()

        positinIE = InportExport.SK_ImportExportUI()
        positinIE.relativesSet = False
        positinIE.shapeSign = False
        positinIE.conSpace = False
        positinIE.SK_setCurveShape(templateInfo)
        ShpaeIE.SK_setCurveShape(ShapeInfo)
Example #4
0
 def getData(self):
     self.jnts = [con for con in rig.listConnections(self.grp+'.CTRLJoint', s = False, d = True)]
     self.jnts =  CA.order().startOrder(self.jnts)#对数组进行排序
     self.scale = CA.distance().getScale(self.jnts[0], self.jnts[-1], 1.24976436649)
     
     self.Connect = CA.connectAttribute()
     self.Connect.attrType = 'long'
     self.Connect.sourceAttr = 'CTRLCurve'  
     self.Connect.targetAttr = 'CTRLCurve'        
Example #5
0
 def startBackupData(self):
     CA.convertData().setAttrData(self.grp + '.parameter', self.parameter)
     CA.convertData().setAttrData(self.grp + '.checkBoxDict',
                                  self.checkBoxDict)
     CA.convertData().setAttrData(self.grp + '.textFieldDict',
                                  self.textFieldDict)
     CA.convertData().setAttrData(self.grp + '.relativeDict',
                                  self.relativeDict)
     CA.convertData().setAttrData(self.grp + '.templateInfo',
                                  self.getTemplateInfo())
Example #6
0
    def getData(self):
        self.jnts = [
            con for con in rig.listConnections(
                self.grp + '.CTRLJoint', s=False, d=True)
        ]
        self.scale = CA.distance().getScale(self.jnts[0], self.jnts[-1], 0.35)

        self.Connect = CA.connectAttribute()
        self.Connect.attrType = 'long'
        self.Connect.sourceAttr = 'CTRLCurve'
        self.Connect.targetAttr = 'CTRLCurve'
Example #7
0
    def __init__(self, checkBoxDict, textFieldDict, relativeDict, parameter):
        self.checkBoxDict = checkBoxDict
        self.textFieldDict = textFieldDict
        self.relativeDict = relativeDict
        self.parameter = parameter

        self.grp = CA.getRigGrp().createGrp()
Example #8
0
 def skinSet(self):
     infs = rig.listConnections(self.grp + '.CTRLJoint', s=False, d=True)
     InfSets = CA.addSets()
     InfSets.componentSets = 'Face_UpTeeth_Sets'
     InfSets.startAdd(infs[0])
     InfSets.componentSets = 'Face_DnTeeth_Sets'
     InfSets.startAdd(infs[1])
Example #9
0
 def buildPosController(self):
     self.getWindowInfo()
     parameter = WDBase.convertData().getAttrData(
         'Head_FaceRig_Control_GRP.parameter')
     WDTemplate.WD_buildPostion(parameter[0], parameter[1], parameter[2],
                                parameter[3], parameter[4], parameter[5],
                                parameter[6], parameter[7], parameter[8],
                                parameter[9])
Example #10
0
 def Groups(self):
     rig.parent(self.aimLoctorGrp, self.eye)
     
 
     #连接visibility属性
     Connect = CA.connectAttribute()
     Connect.sourceAttr = 'conVis'
     Connect.targetAttr = 'visibility'
     Connect.connect(self.eye, [rig.listRelatives(con, p = True)[0] for con in self.allCons])
Example #11
0
    def __init__(self):
        self.main = 'Main_Control_GRP'
        self.head = 'Head_Control_GRP'

        self.tempCurve = []  #临时曲线
        self.tempJoint = []  #临时骨骼

        self.deformerGrp = CA.getRigGrp()
        self.deformerGrp.grp = 'Head_FaceDeformers_GRP'
Example #12
0
    def eyeLid(self):
        self.newAddJnts = []
        for lip in self.lips:
            rig.select(cl = True)
            pos = rig.xform(lip, q = True, t = True, ws = True)
            Njnt = rig.joint(p = pos, n = lip+'_Joint')
#            self.newAddJnts.append(Njnt)
            rig.hide(Njnt)
            NjntGrp = rig.group(Njnt, n = Njnt+'_GRP')
            
            jntTemp = re.compile('_UpLid_|_DnLid_').sub('_Eye_',lip)
            jnt = re.compile('M\Z').sub('Joint',jntTemp)
            lipGrp = rig.group(empty = True, n = lip+'_GRP')
            lipGrpUp = rig.group(lipGrp, n = lip+'_GRP_UP')
            lipGrpTop = rig.group(lipGrpUp, n = lip+'_GRP_TOP')
            jntParent = rig.listRelatives(jnt, p = True)[0]
            jntMat = rig.getAttr(jnt+'.worldMatrix')
            rig.xform(lipGrpTop, m = jntMat)
            aimNode = rig.aimConstraint(lip ,lipGrpTop, aimVector = (0, 0, 1), upVector = (0, 1, 0), worldUpType = 'object', worldUpObject = jnt+'_Loc_GRP') 
            rig.delete(aimNode)
            
            lipCon = CA.addGrp().grp(lip,'AimRotate')#增加 组
            
            #连接旋转和位移
            rig.connectAttr(lip+'.rotateZ', lipGrp+'.rotateZ')
            rig.connectAttr(lip+'.scaleX', lipGrp+'.scaleX')
            rig.connectAttr(lip+'.scaleZ', lipGrp+'.scaleZ')
            translateMD = rig.createNode('multiplyDivide', n = lip +'_translate_MD', ss = True)
            lipRoateGrp = rig.listRelatives(lip, p = True)[0]
            print lipRoateGrp
            rig.addAttr(lipRoateGrp, at = 'float', ln = 'Move', dv = -157/self.scale, k = True)
            rig.connectAttr(lip+'.translateY', translateMD+'.input1X')
            rig.connectAttr(lipRoateGrp+'.Move', translateMD+'.input2X')            
            rig.connectAttr(translateMD+'.outputX', lipGrpUp+'.rotateX')                 
            
            rig.parent(lipGrpTop, lipCon, jnt+'_CTRL_GRP')
            rig.parent(NjntGrp, lipGrp)
                  
        jnts = [jnt for jnt in rig.listConnections(self.eye+'.CTRLJoint', s = False, d = True)]#列出眼睛控制器骨骼,注意:不包含新增加的眼皮骨骼
        for jnt in jnts:
            con = re.compile('Joint\Z').sub('M',jnt)#得到控制器名字
            lipCon = CA.addGrp().grp(con,'freeze')#增加 组
Example #13
0
def WD_buildPostion(main, ear, eye, eyebrow, tongue, tooth, joints, eyebrowNum,
                    mouthNum, nasolabialGrooveNum):
    if main:
        mainObject = BuildMainController(eyebrowNum, mouthNum,
                                         nasolabialGrooveNum)
        mainObject.done()


#        rig.connectAttr('LfUpLip_0M.translate', 'LfDnLip_0M.translate')
#        rig.connectAttr('RtUpLip_0M.translate', 'RtDnLip_0M.translate')

    if ear:
        earObject = BuildEarController()
        earObject.done()

    if eye:
        eyeObject = BuildEyeController()
        eyeObject.num = 3
        eyeObject.done()

    if eyebrow:
        eyebrowObject = BuildEyebrowController()
        eyebrowObject.done()

    if tongue:
        tongueObject = BuildTongueController()
        tongueObject.num = 5
        tongueObject.done()

    if tooth:
        toothObject = BuildToothController()
        toothObject.done()

    if joints:
        jointsObject = BuildjointsController()
        jointsObject.done()

    faceRig = CA.getRigGrp().createGrp()  #生成空组Head_FaceRig_Control_GRP
    rig.select(cl=True)
    jnt = rig.joint(p=(0, 15, 0.44), n='Head_Zero_Joint')
    jntGrp = rig.group(jnt, n=jnt + '_GRP')
    rig.parent(jntGrp, faceRig)

    grps = [
        u'Main_Control_GRP', u'Ear_Control_GRP', u'Eye_Control_GRP',
        u'Eyebrow_Control_GRP', u'Tongue_Control_GRP', u'Tooth_Control_GRP',
        u'Head_Control_GRP'
    ]
    for grp in grps:  #将每个部件的组P给Head_FaceRig_Control_GRP
        if rig.objExists(grp):
            rig.parent(grp, faceRig)

    rig.select(faceRig)  #选择Head_FaceRig_Control_GRP
    rig.xform(faceRig, cp=True, p=True)
Example #14
0
    def Groups(self):  #整理层级
        CTRLCurves = rig.listConnections(self.grpName + '.CTRLCurve',
                                         s=False,
                                         d=True)
        CA.freezeObj().freeze(CTRLCurves)
        CTRLJoints = rig.listConnections(self.grpName + '.CTRLJoint',
                                         s=False,
                                         d=True)

        CTRLCurveGRP = rig.group(CTRLCurves, n=self.grpName + '_CTRLCurve')
        CTRLJointGRP = rig.group(CTRLJoints, n=self.grpName + '_CTRLJoint')

        mainCons = [con for con in CTRLCurves if re.match('Eye_M', con)]
        secCons = [
            con for con in CTRLCurves
            if re.match('\ALf_Eye_\d+M|\ARt_Eye_\d+M', con)
        ]
        if secCons:
            rig.parent(secCons, mainCons[0])

        rig.parent(CTRLCurveGRP, CTRLJointGRP, self.grpName)
Example #15
0
    def extraAddLid(self):
        exLids = [con for con in self.allCons if re.match('.+LidMin_\d+M',con)]
        print exLids
        for lid in exLids:
            if re.match('Lf_', lid):
                LR = 'Lf_'
            else:
                LR = 'Rt_'
                
            if re.match('\w\w_Up', lid):
                UD = 'Up'
            elif re.match('\w\w_Dn', lid):
                UD = 'Dn'
            else:
                UD = None
                
            pos = rig.xform(lid, q = True, t = True)
            rig.select(cl = True)
            jnt = rig.joint(p = pos ,n = lid+'_Joint')#创建骨骼
            rig.parent(jnt, lid)
            rig.hide(jnt)
            self.newAddJnts.append(jnt)
            
            ConGrp = CA.addGrp().grp(lid, 'Rotate')
            
            if UD:
                parentJnt = LR+UD+'Lid_0M_GRP_UP'
                mat = rig.getAttr(parentJnt+'.worldMatrix')
                grp = rig.group(empty = True, n = ConGrp+'_Rotate')
                rig.xform(grp, m = mat)
                rig.parent(ConGrp, grp)                
                rig.parent(grp, LR+UD+'Lid_0M_GRP')
                
                parentLid = rig.listRelatives(lid, p = True)[0]
                if re.match('\w+_2M\Z', lid):
                    v = 1
                else:
                    v = -0.3
                rig.addAttr(parentLid, at = 'float', ln = 'RotateRX', k = True, dv = v)
#                rig.addAttr(parentLid, at = 'float', ln = 'RotateRY', k = True, dv = 1)
#                rig.addAttr(parentLid, at = 'float', ln = 'RotateRZ', k = True, dv = 1)
                RotateRoMD = rig.createNode('multiplyDivide', n = lid+'_Roate_MD')
                rig.connectAttr(parentJnt+'.rotate', RotateRoMD+'.input2')
                rig.connectAttr(parentLid+'.RotateRX', RotateRoMD+'.input1X')
#                rig.connectAttr(parentLid+'.RotateRY', RotateRoMD+'.input1Y')
#                rig.connectAttr(parentLid+'.RotateRZ', RotateRoMD+'.input1Z')
                rig.connectAttr(RotateRoMD+'.output', grp+'.rotate') 
                
#                rig.parent(ConGrp, LR+UD+'Lid_0M_GRP')
            else:
                parentJnt = LR+'Eye_0Joint_CTRL_GRP'
                rig.parent(ConGrp, parentJnt)
Example #16
0
    def createJoint(self):
        tempCurveName = rig.curve(d=3, p=self.curve)  #生成曲线
        curCurveName = rig.rename(tempCurveName, self.tempCruveName)  #重命名曲线
        curCurveNameShape = rig.listRelatives(curCurveName, s=True)[0]  #获得形节点
        CurveInfo = CA.curveAverage()
        posInfo = CurveInfo.getInfo(curCurveNameShape, self.num)[1]  #获得位置信息
        rig.delete(curCurveName)  #删除曲线

        #生成骨骼
        rig.select(cl=True)
        for i, pos in enumerate(posInfo):
            jnt = rig.joint(p=pos, n=self.name + '_' + str(i) + 'Joint')
            self.connectAddAttr(jnt, 'CTRLJoint')  #连接属性
Example #17
0
    def importExportControlCurve(self):
        cons = []
        if rig.objExists('face_controls_Sets'):
            cons = WDBase.getSetElements().getEle()

        TempIE = InportExport.SK_ImportExportUI()
        TempIE.guiName = 'IEControl_UI'
        TempIE.guiTitle = u'导入导出控制器'
        TempIE.guiImport = u'导入控制器'
        TempIE.guiExport = u'导出控制器'
        TempIE.allCons = cons
        TempIE.relativesSet = False
        TempIE.displayUI()
Example #18
0
    def mirrorCon(self, axis, direction):
        MirrorCon = WDBase.BlendShapeController()

        if rig.objExists('Main_Control_GRP'):
            rigging = rig.attributeQuery('rigging',
                                         node='Main_Control_GRP',
                                         ex=True)
            MirrorCon.grp = 'Main_Control_GRP'
            MirrorCon.axis = axis
            MirrorCon.direction = direction
            MirrorCon.conType = 'small'
            MirrorCon.select = False
            MirrorCon.rigging = rigging
            MirrorCon.Mirror()

        if rig.objExists('Head_Control_GRP'):
            rigging = rig.attributeQuery('rigging',
                                         node='Head_Control_GRP',
                                         ex=True)
            MirrorCon.grp = 'Head_Control_GRP'
            MirrorCon.axis = axis
            MirrorCon.direction = direction
            MirrorCon.conType = 'macro'
            MirrorCon.select = False
            MirrorCon.rigging = rigging
            MirrorCon.Mirror()

        if rig.objExists('Eye_Control_GRP'):
            rigging = rig.attributeQuery('rigging',
                                         node='Eye_Control_GRP',
                                         ex=True)
            MirrorCon.grp = 'Eye_Control_GRP'
            MirrorCon.axis = axis
            MirrorCon.direction = direction
            MirrorCon.conType = 'eye'
            MirrorCon.select = False
            MirrorCon.rigging = rigging
            MirrorCon.Mirror()

        if rig.objExists('Ear_Control_GRP'):
            rigging = rig.attributeQuery('rigging',
                                         node='Ear_Control_GRP',
                                         ex=True)
            MirrorCon.grp = 'Ear_Control_GRP'
            MirrorCon.axis = axis
            MirrorCon.direction = direction
            MirrorCon.conType = 'ear'
            MirrorCon.select = False
            MirrorCon.rigging = rigging
            MirrorCon.Mirror()
Example #19
0
 def mirrorBlendShape(self, axis, direction, Msign):
     if Msign:
         MirrorCon = WDBase.BlendShapeController()
         if rig.objExists('Main_Control_GRP'):
             MirrorCon.grp = 'Main_Control_GRP'
             MirrorCon.axis = axis
             MirrorCon.direction = direction
             MirrorCon.conType = 'blendShape'
             MirrorCon.select = False
             MirrorCon.Mirror()
     else:
         Mth = MTH.createBlendShape()
         Mth.auto = False
         Mth.addBlendShapeControl()
Example #20
0
    def skinSet(self):
        InfSets = CA.addSets()
            
        infs = rig.listConnections(self.eye+'.CTRLJoint', s = False, d = True)
        for inf in infs:
            if re.match('\ALf_', inf):
                InfSets.componentSets = 'Face_LfEye_Sets'
                InfSets.startAdd(inf)    
            if re.match('\ARt_', inf):   
                InfSets.componentSets = 'Face_RtEye_Sets'
                InfSets.startAdd(inf)   
                
 
        InfSets.componentSets = 'Face_BsMesh_Sets'
        InfSets.startAdd(self.newAddJnts)                    
Example #21
0
    def startLockTransform(self):
        Trans = CA.getAllTransform()
        Trans.removeObj = self.conSetObj

        Trans.grpName = 'Head_FaceRig_Control_GRP'
        Head_FaceRig_Control_GRP = Trans.getTransform()

        Trans.grpName = 'Head_FaceDeformers_GRP'
        Head_FaceDeformers_GRP = Trans.getTransform()

        Head_FaceRig_Control_GRP.extend(Head_FaceDeformers_GRP)
        allTransforms = Head_FaceRig_Control_GRP

        for obj in allTransforms:
            Lock = BC.LockHideAttr(False, False, False, False)
            Lock.hideAndLockObj(obj)
Example #22
0
    def setWindowInfo(self):
        parameter = WDBase.convertData().getAttrData(
            'Head_FaceRig_Control_GRP.parameter')
        main = rig.checkBox(self.mainCB, e=True, v=parameter[0])
        ear = rig.checkBox(self.earCB, e=True, v=parameter[1])
        eye = rig.checkBox(self.eyeCB, e=True, v=parameter[2])
        eyebrow = rig.checkBox(self.eyebrowCB, e=True, v=parameter[3])
        tongue = rig.checkBox(self.tongueCB, e=True, v=parameter[4])
        tooth = rig.checkBox(self.toothCB, e=True, v=parameter[5])
        joints = rig.checkBox(self.jointCB, e=True, v=parameter[6])

        eyebrowNum = rig.intSliderGrp(self.eyebrowISG, e=True, v=parameter[7])
        mouthNum = rig.intSliderGrp(self.mouthISG, e=True, v=parameter[8])
        nasolabialGrooveNum = rig.intSliderGrp(self.cheefISG,
                                               e=True,
                                               v=parameter[9])
Example #23
0
    def linkVis(self):
        allCons = rig.listConnections(self.grp + '.CTRLCurve', s=False, d=True)
        frontGrp = []
        backGrp = []
        for con in allCons:
            grp = rig.listRelatives(con, p=True)[0]
            if re.match('\w+_Back_\d+M', con):
                backGrp.append(grp)
            else:
                frontGrp.append(grp)

        connectVisibility = CA.connectAttribute()
        connectVisibility.sourceAttr = 'smallVis'
        connectVisibility.connect(self.grp, frontGrp)
        connectVisibility.sourceAttr = 'smallBackVis'
        connectVisibility.connect(self.grp, backGrp)
Example #24
0
 def getData(self):
     GRP = CA.getRigGrp()
     self.rigGrp = GRP.createGrp()
     GRP.grp = self.eye+'_Loc'
     self.aimLoctorGrp = GRP.createGrp()
     
     self.allCons = [con for con in rig.listConnections(self.eye+'.CTRLCurve', s = False, d = True)]
     jnts = [jnt for jnt in rig.listConnections(self.eye+'.CTRLJoint', s = False, d = True)]
     
     if 1 == len(jnts):
         self.jnts = [jnt for jnt in jnts if not re.match('\ALf_|\ARt_',jnt)]
         
     else:
         self.jnts = [jnt for jnt in jnts if re.match('\ALf_|\ARt_',jnt)] 
 
 
     self.lips = [con for con in self.allCons if re.match('.+Lid_\d+M',con)]
Example #25
0
 def changeConSize(self):
     size = rig.floatSliderGrp(self.sizeFSG, q=True, v=True)
     rig.floatSliderGrp(self.sizeFSG, e=True, v=1)
     Con = WDBase.changeController()
     objs = rig.ls(sl=True)
     if objs:
         obj = objs[0]
         if re.match('\ALf[A-Z]+|\ARt[A-Z]+', obj):
             Con.size = size
             Con.operate = 'changeSize'
             Con.selectTypes('small')
         elif re.match('\ALf_.+Macro_M\Z|\ARt_.+Macro_M\Z', obj):
             Con.size = size
             Con.operate = 'changeSize'
             Con.selectTypes('macro')
         elif re.match('\ALf_.+_M\Z|\ARt_.+_M\Z', obj):
             Con.size = size
             Con.operate = 'changeSize'
             Con.selectTypes('main')
Example #26
0
    def startSetup(self):
        checkBoxData = dict([(CB,
                              rig.checkBox(self.__dict__[CB], q=True, v=True))
                             for CB in self.allCB])
        textFieldData = dict([
            (TF,
             rig.textField(self.__dict__[TF.replace('BT', 'TF')],
                           q=True,
                           tx=True)) for TF in self.allBt
        ])
        StartSetup = WDMain.combineComponent(checkBoxData, textFieldData,
                                             self.dictData)

        self.getWindowInfo()
        parameter = WDBase.convertData().getAttrData(
            'Head_FaceRig_Control_GRP.parameter')
        print parameter
        BD.backupData(checkBoxData, textFieldData, self.dictData,
                      parameter).done()  #备份数据
        StartSetup.done()
Example #27
0
 def linkLimitAttr(self):
     attr4 = [u'+translateX', u'+translateY',u'-translateX', u'-translateY'] 
     attr6Cons = [u'Rt_Brow_M', u'Lf_Brow_M', u'Mouth_Tip_M',u'JawMain_M',u'Lf_Cheek_M', u'Rt_Cheek_M', u'Lf_CornerLip_M', u'Rt_CornerLip_M', u'Up_Lip_M', u'Dn_Lip_M']
     attr6 = [u'+translateX', u'+translateY', u'+translateZ',u'-translateX', u'-translateY', u'-translateZ'] 
     
     self.RotateToTranslate = {u'limitMaxrx':u'+translateX', u'limitMinx':u'-translateX', u'limitMaxry':u'+translateY', u'limitMinry':u'-translateY', u'limitMaxrz':u'+translateZ', u'limitMinrz':u'-translateZ',}
     self.TranslateToRotate = dict([(self.RotateToTranslate[attr], attr )for attr in self.RotateToTranslate])
     
     linkAttr = CA.connectAttribute()
     linkAttr.attrType = 'float'
     linkAttr.sourceAttr = 'CTRLBSRotate'
     linkAttr.targetAttr = 'CTRLBSRotate'
     
     subCon = [u'Nose_M']
     cons = [con for con in self.CTRLBsCurves if not(con in subCon)]
     for con in cons:
         rotateLimit = rig.listAttr(con,ud = True, k = True)
         if rotateLimit:
             
             attrs = []
             print con+'------------>'
             matCon = rig.getAttr(con+'.worldMatrix')
             conGrp = rig.group(empty = True, n = con+'_Rotation')
             linkAttr.connect(self.grp, [conGrp])#连接属性
             rig.xform(conGrp, m = matCon)
             rig.parent(conGrp, con)
             
             for rl in rotateLimit:#迭代旋转属性
                 attrs.append(self.RotateToTranslate[rl])
                 grpAttr = conGrp+'.t'+rl[-1]
                 if not rig.connectionInfo(grpAttr, isDestination=True):
                     rig.connectAttr(con+'.'+rl[-2::], grpAttr, f = True)
                     
             self.rampAndLimit(conGrp, attrs) 
             
             
             
         if con in attr6Cons:
             self.rampAndLimit(con, attr6)
         else:
             self.rampAndLimit(con, attr4)
Example #28
0
 def setupTongue(self):
     #对骨骼校正轴向
     oj = 'zyx'
     secondaryAxisOrient = 'yup'
     orientJoints = [jnt for jnt in self.jnts]#排除不需要校正轴向的骨骼
     for jnt in orientJoints:
         rig.joint(jnt,e = True, oj = oj, secondaryAxisOrient = secondaryAxisOrient, ch = False, zso = True)
     rig.joint(self.jnts[-1],e = True, oj = 'none', ch = False, zso = True)
     
     
     #生成控制器并增加父子约束
     allCons = []
     preCon  = ''
     ConObj = CreateControler(13, (0.1*self.scale, 0.1*self.scale, 0.1*self.scale))
     ConObj.signValue = 32547
     for i,jnt in enumerate(self.jnts):
         jntMat = rig.getAttr(jnt+'.worldMatrix')
         con = ConObj.SK_b08(jnt.split('_')[0]+'_'+str(i)+'M')
         allCons.append(con)
         rig.xform(con, ro = (90, 0, 0), wd = True)
         rig.makeIdentity(apply = True, r = True)
         rig.xform(con, m = jntMat)
         
         conGrp = CA.addGrp().grp(con, 'Freeze')
         if i != 0:
             rig.parent(conGrp, preCon)
         preCon = con
         
         rig.parentConstraint(con, jnt, mo = True)
     
     self.Connect.connect(self.grp, allCons)#连接控制器属性
     
     #连接visibility属性
     self.Connect.sourceAttr = 'conVis'
     self.Connect.targetAttr = 'visibility'
     self.Connect.connect(self.grp, [rig.listRelatives(con, p = True)[0] for con in allCons])
Example #29
0
    def startCreateSet(self):
        consSet = CA.addSets()
        consSet.faceSets = 'face_controls_Sets'

        for grp in self.allGroups:
            if rig.objExists(grp):  #如果组存在
                if 'Head_Control_GRP' == grp:
                    cons = rig.listConnections(grp + '.CTRLBsCurve',
                                               s=False,
                                               d=True)
                    MacroCons = rig.listConnections(grp + '.CTRLMacroCurve',
                                                    s=False,
                                                    d=True)
                    cons.extend(MacroCons)

                else:
                    cons = rig.listConnections(grp + '.CTRLCurve',
                                               s=False,
                                               d=True)

                if cons:
                    consSet.componentSets = 'Face_' + grp.split(
                        '_')[0] + '_sets'
                    consSet.startAdd(self.exceptCons(cons))
Example #30
0
 def skinSet(self):
     InfSets = CA.addSets()
     InfSets.componentSets = 'Face_Main_Sets'
     infs = rig.listConnections(self.grp + '.LoftMesh', s=False, d=True)
     InfSets.startAdd(infs)