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 []
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 []
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)
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 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)
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
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
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)
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)