예제 #1
0
def getDeformers(geometry, deformerType):
    if not mc.objExists(geometry):
        return []
    deformers = mayaTool.findDeformer(geometry)
    deformers = [dfm for dfm in deformers if mc.nodeType(dfm) == deformerType]

    if len(deformers) == 0:
        return []

    if deformerType == 'cluster':
        return deformers

    elif deformerType == 'blendShape':
        attributes = []
        for bsp in deformers:
            attributes.append('%s.envelope' % bsp)
            for attr in mayaTool.getBlendShapeAttributes(bsp):
                attributes.append('%s.%s' % (bsp, attr))
        return attributes

    elif deformerType == 'skinCluster':
        return mc.skinCluster(deformers[0], q=True, inf=True)

    else:
        return []
예제 #2
0
def getDeformers(geometry, deformerType):
    if not mc.objExists(geometry):
        return []
    deformers = mayaTool.findDeformer(geometry)
    deformers = [dfm for dfm in deformers if mc.nodeType(dfm) == deformerType]
    
    if len(deformers) == 0:
        return []
    
    if deformerType == 'cluster':
        return deformers
    
    elif deformerType == 'blendShape':
        attributes = []
        for bsp in deformers:
            attributes.append('%s.envelope'%bsp)
            for attr in mayaTool.getBlendShapeAttributes(bsp):
                attributes.append('%s.%s'%(bsp, attr))
        return attributes
    
    elif deformerType == 'skinCluster':
        return mc.skinCluster(deformers[0], q=True, inf=True)
    
    else:
        return []
예제 #3
0
def setBlendShapeWeights(geometry, args, weights):
    vtxCounts = len(weights)
    bsp, attr = args.split('.')

    if re.search('\.envelope$', args):
        weights = mc.setAttr('%s.it[0].bw[:%d]'%(bsp, vtxCounts-1), *weights)
    else:
        attrIndex = mayaTool.getBlendShapeAttributes(bsp).index(attr)
        mc.setAttr('%s.it[0].itg[%d].tw[:%d]'%(bsp, attrIndex, vtxCounts-1), *weights)
예제 #4
0
 def on_actionLoadBlendShape_triggered(self, args=None):
     if args == None: return
     selBsp = mc.ls(sl=True, type='blendShape')
     if len(selBsp) < 1:
         return
     self.LET_bsp.setText(selBsp[0])
     #-
     attributes = mayaTool.getBlendShapeAttributes(selBsp[0])
     self.__bspModel.changeData(attributes)
 def on_actionLoadBlendShape_triggered(self, args=None):
     if args == None:return 
     selBsp = mc.ls(sl=True, type='blendShape')
     if len(selBsp) < 1:
         return
     self.LET_bsp.setText(selBsp[0])
     #-
     attributes = mayaTool.getBlendShapeAttributes(selBsp[0])
     self.__bspModel.changeData(attributes)
    def refresh_Src(self):
        self.__srcModel.clear()

        blendShape = str(self.let_Src.text())
        if not mc.objExists(blendShape):
            return
        if mc.nodeType(blendShape) != 'blendShape':
            return
        attributeList = mayaTool.getBlendShapeAttributes(blendShape)
        attributeList.insert(0, 'envelope')
        self.__srcModel.change(attributeList)
 def refresh_Src(self):
     self.__srcModel.clear()
     
     blendShape = str(self.let_Src.text())
     if not mc.objExists(blendShape):
         return
     if mc.nodeType(blendShape) != 'blendShape':
         return
     attributeList = mayaTool.getBlendShapeAttributes(blendShape)
     attributeList.insert(0, 'envelope')
     self.__srcModel.change(attributeList)
예제 #8
0
def setBlendShapeWeights(geometry, args, weights):
    vtxCounts = len(weights)
    bsp, attr = args.split('.')

    if re.search('\.envelope$', args):
        weights = mc.setAttr('%s.it[0].bw[:%d]' % (bsp, vtxCounts - 1),
                             *weights)
    else:
        attrIndex = mayaTool.getBlendShapeAttributes(bsp).index(attr)
        mc.setAttr(
            '%s.it[0].itg[%d].tw[:%d]' % (bsp, attrIndex, vtxCounts - 1),
            *weights)
예제 #9
0
def getBlendShapeWeights(geometry, args):
    vtxCounts = getGeometryPointsCount(geometry)
    bsp, attr = args.split('.')
    
    if re.search('\.envelope$', args):
        weights = mc.getAttr('%s.it[0].bw[:%d]'%(bsp, vtxCounts-1))
    
    else:
        attrIndex = mayaTool.getBlendShapeAttributes(bsp).index(attr)
        weights = mc.getAttr('%s.it[0].itg[%d].tw[:%d]'%(bsp, attrIndex, vtxCounts-1))

    return weights
예제 #10
0
def getBlendShapeWeights(geometry, args):
    vtxCounts = getGeometryPointsCount(geometry)
    bsp, attr = args.split('.')

    if re.search('\.envelope$', args):
        weights = mc.getAttr('%s.it[0].bw[:%d]' % (bsp, vtxCounts - 1))

    else:
        attrIndex = mayaTool.getBlendShapeAttributes(bsp).index(attr)
        weights = mc.getAttr('%s.it[0].itg[%d].tw[:%d]' %
                             (bsp, attrIndex, vtxCounts - 1))

    return weights
예제 #11
0
    def on_btn_blendShape_clicked(self, clicked=None):
        if clicked == None:return
        
        sel = mc.ls(sl=True)
        if len(sel) < 1:
            return
        
        if not mc.nodeType(sel[0]) == 'blendShape':
            return
        
        self.btn_blendShape.setText(sel[0])
        #--------------------------------
        self.__blendShape   = sel[0]
        self.__AttributeDT  = mayaTool.getBlendShapeInfo(sel[0])
        self.__AttributeDT2 = dict(zip(self.__AttributeDT.values(), self.__AttributeDT.keys()))
        self.__IGTAttributeDT = mayaTool.getBlendShapeInputGeomTarget(sel[0])
        mesh = mc.blendShape(str(self.btn_blendShape.text()), q=True, g=True)
        self.__baseModel = mc.listRelatives(mesh, p=True, path=True)[0]        
        #--------------------------------
        self.__AttributeModel.clear()

        for i, attr in enumerate(mayaTool.getBlendShapeAttributes(sel[0])):
            self.__AttributeModel.insertRow(i, attr)
예제 #12
0
    def on_btn_blendShape_clicked(self, clicked=None):
        if clicked == None: return

        sel = mc.ls(sl=True)
        if len(sel) < 1:
            return

        if not mc.nodeType(sel[0]) == 'blendShape':
            return

        self.btn_blendShape.setText(sel[0])
        #--------------------------------
        self.__blendShape = sel[0]
        self.__AttributeDT = mayaTool.getBlendShapeInfo(sel[0])
        self.__AttributeDT2 = dict(
            zip(self.__AttributeDT.values(), self.__AttributeDT.keys()))
        self.__IGTAttributeDT = mayaTool.getBlendShapeInputGeomTarget(sel[0])
        mesh = mc.blendShape(str(self.btn_blendShape.text()), q=True, g=True)
        self.__baseModel = mc.listRelatives(mesh, p=True, path=True)[0]
        #--------------------------------
        self.__AttributeModel.clear()

        for i, attr in enumerate(mayaTool.getBlendShapeAttributes(sel[0])):
            self.__AttributeModel.insertRow(i, attr)