def finalize(self): """ Press action. Clears buffers. """ #Clean our lists... self.l_created = lists.returnListNoDuplicates(self.l_created) self.l_return = lists.returnListNoDuplicates(self.l_return) if self._createMode in ['curve','jointChain','group','follicle'] and self.l_return: if self._createMode == 'group': bufferList = [] for i,o in enumerate(self.l_created): buffer = rigging.groupMeObject(o,False) bufferList.append(buffer) try:mc.delete(o) except:pass self.l_created = bufferList elif self._createMode =='follicle': if self.mode == 'midPoint': log.warning("Mid point mode doesn't work with follicles") return bufferList = [] for o in self.l_created: mesh = attributes.doGetAttr(o,'cgmHitTarget') if mc.objExists(mesh): uv = distance.returnClosestUVToPos(mesh,distance.returnWorldSpacePosition(o)) log.info("uv: {0}".format(uv)) follicle = nodes.createFollicleOnMesh(mesh) log.info("follicle: {0}".format(follicle)) attributes.doSetAttr(follicle[0],'parameterU',uv[0]) attributes.doSetAttr(follicle[0],'parameterV',uv[1]) try:mc.delete(o) except:pass else: for o in self.l_created: try:mc.delete(o) except:pass if self._createMode == 'curve' and len(self.l_return)>1: if len(self.l_return) > 1: self.l_created = [curves.curveFromPosList(self.l_return)] else: log.warning("Need at least 2 points for a curve") elif self._createMode == 'jointChain': self.l_created = [] mc.select(cl=True) for pos in self.l_return: self.l_created.append( mc.joint (p = (pos[0], pos[1], pos[2]),radius = 1) ) log.debug( self.l_created) if self.d_tagAndName: for o in self.l_created: try: i_o = cgmMeta.cgmNode(o) for tag in self.d_tagAndName.keys(): i_o.doStore(tag,self.d_tagAndName[tag]) i_o.doName() except StandardError,error: log.error(">>> clickMesh >> Failed to tag and name: %s | error: %s"%(i_o.p_nameShort,error))
def finalize(self): """ Press action. Clears buffers. """ #Clean our lists... self.createdList = lists.returnListNoDuplicates(self.createdList) self.returnList = lists.returnListNoDuplicates(self.returnList) if self.createMode in ['curve','jointChain','group','follicle'] and self.returnList: if self.createMode == 'group': bufferList = [] for i,o in enumerate(self.createdList): buffer = rigging.groupMeObject(o,False) bufferList.append(buffer) try:mc.delete(o) except:pass self.createdList = bufferList elif self.createMode =='follicle': if self.mode == 'midPoint': guiFactory.warning("Mid point mode doesn't work with follicles") return bufferList = [] for o in self.createdList: mesh = attributes.doGetAttr(o,'cgmHitTarget') if mc.objExists(mesh): uv = distance.returnClosestUVToPos(mesh,distance.returnWorldSpacePosition(o)) follicle = nodes.createFollicleOnMesh(mesh) attributes.doSetAttr(follicle[0],'parameterU',uv[0]) attributes.doSetAttr(follicle[0],'parameterV',uv[1]) try:mc.delete(o) except:pass else: for o in self.createdList: try:mc.delete(o) except:pass if self.createMode == 'curve' and len(self.returnList)>1: if len(self.returnList) > 1: self.createdList = [curves.curveFromPosList(self.returnList)] else: guiFactory.warning("Need at least 2 points for a curve") elif self.createMode == 'jointChain': self.createdList = [] mc.select(cl=True) for pos in self.returnList: self.createdList.append( mc.joint (p = (pos[0], pos[1], pos[2]),radius = 1) ) self.reset()
def finalize(self): """ Press action. Clears buffers. """ #Clean our lists... self.createdList = lists.returnListNoDuplicates(self.createdList) self.returnList = lists.returnListNoDuplicates(self.returnList) if self.createMode in ['curve','jointChain','group','follicle'] and self.returnList: if self.createMode == 'group': bufferList = [] for i,o in enumerate(self.createdList): buffer = rigging.groupMeObject(o,False) bufferList.append(buffer) try:mc.delete(o) except:pass self.createdList = bufferList elif self.createMode =='follicle': if self.mode == 'midPoint': guiFactory.warning("Mid point mode doesn't work with follicles") return bufferList = [] for o in self.createdList: mesh = attributes.doGetAttr(o,'cgmHitTarget') if mc.objExists(mesh): uv = distance.returnClosestUVToPos(mesh,distance.returnWorldSpacePosition(o)) follicle = nodes.createFollicleOnMesh(mesh) attributes.doSetAttr(follicle[0],'parameterU',uv[0]) attributes.doSetAttr(follicle[0],'parameterV',uv[1]) try:mc.delete(o) except:pass else: for o in self.createdList: try:mc.delete(o) except:pass if self.createMode == 'curve' and len(self.returnList)>1: if len(self.returnList) > 1: self.createdList = [mc.curve (d=3, p = self.returnList , ws=True)] else: guiFactory.warning("Need at least 2 points for a curve") elif self.createMode == 'jointChain': self.createdList = [] mc.select(cl=True) for pos in self.returnList: self.createdList.append( mc.joint (p = (pos[0], pos[1], pos[2])) ) self.reset()
def addFollicleSingleAttach(obj, mesh): from cgm.lib import (distance, nodes, attributes) mi_obj = cgmMeta.validateObjArg(obj, cgmMeta.cgmObject) mi_mesh = cgmMeta.validateObjArg(mesh, mayaType='mesh') uv = distance.returnClosestUVToPos(mi_mesh.mNode, mi_obj.getPosition()) follicle = nodes.createFollicleOnMesh(mi_mesh.mNode) attributes.doSetAttr(follicle[0], 'parameterU', uv[0]) attributes.doSetAttr(follicle[0], 'parameterV', uv[1]) #create group mi_attachPoint = mi_obj.doLoc() mi_attachPoint.parent = follicle[1] #parent constrain mc.pointConstraint(mi_attachPoint.mNode, mi_obj.mNode, maintainOffset=True) mc.orientConstraint(mi_attachPoint.mNode, mi_obj.mNode, maintainOffset=True)
s.p_hidden = False curves.createControlCurve('semiSphere', 10, 'z-') attributes.doSetAttr('closestPointOnSurface1', 'inPostionX', 5) mc.setAttr('closestPointOnSurface1.inPostionX', 5) m1 = cgmPM.cgmModule(name='test') m1 = cgmMeta.cgmNode('spine_part') m1.setState('skeleton', forceNew=True) m1.rigNull.skinJoints m1.getModuleColors() m1.getPartNameBase() m1.modulePuppet.getGeo() targetObj = mc.ls(sl=True)[0] distance.returnClosestPointOnSurfaceInfo(targetObj, 'test_controlSurface') distance.returnClosestUV(targetObj, 'test_controlSurface') log.info(a) nodes.createFollicleOnMesh('spine_controlSurface', 'test') locators.locMeClosestUVOnSurface(mc.ls(sl=True)[0], 'test_controlSurface', pivotOnSurfaceOnly=False) mesh = 'Morphy_Body_GEO' i_obj = cgmMeta.cgmObject('hips_anim') mControlFactory.returnBaseControlSize(i_obj, mesh, axis=['x', 'y', 'z-']) mControlFactory.returnBaseControlSize(i_obj, mesh, axis=['z-']) mc.softSelect(softSelectEnabled=True) mc.softSelect(q=True, softSelectDistance=True) mc.softSelect(q=True, softSelectUVDistance=True) mc.softSelect(q=True, softSelectFalloff=2) mc.softSelect(softSelectFalloff=0) mc.softSelect(softSelectDistance=20)
def _create(self): #>> Quick links ============================================================================ d_closestInfo = self.d_closestInfo if self.b_attachControlLoc or not self.b_createControlLoc: try:#>>> Follicle ============================================================================ l_follicleInfo = nodes.createFollicleOnMesh(self.mi_targetSurface.mNode) mi_follicleAttachTrans = cgmMeta.asMeta(l_follicleInfo[1],'cgmObject',setClass=True) mi_follicleAttachShape = cgmMeta.asMeta(l_follicleInfo[0],'cgmNode') #> Name ---------------------------------------------------------------------------------- mi_follicleAttachTrans.doStore('cgmName',self.mi_obj.mNode) mi_follicleAttachTrans.addAttr('cgmTypeModifier','attach',lock=True) mi_follicleAttachTrans.doName() #>Set follicle value --------------------------------------------------------------------- mi_follicleAttachShape.parameterU = d_closestInfo['normalizedU'] mi_follicleAttachShape.parameterV = d_closestInfo['normalizedV'] self.mi_follicleAttachTrans = mi_follicleAttachTrans#link self.mi_follicleAttachShape = mi_follicleAttachShape#link self.mi_obj.connectChildNode(mi_follicleAttachTrans,"follicleAttach","targetObject") self.md_return["follicleAttach"] = mi_follicleAttachTrans self.md_return["follicleAttachShape"] = mi_follicleAttachShape except Exception,error:raise StandardError,"!Attach Follicle! | %s"%(error) if not self.b_createControlLoc:#If we don't have a control loc setup, we're just attaching to the surface try:#Groups ======================================================================================= mi_followGroup = self.mi_obj.doDuplicateTransform(True) mi_followGroup.doStore('cgmName',self.mi_obj.mNode) mi_followGroup.addAttr('cgmTypeModifier','follow',lock=True) mi_followGroup.doName() mi_followGroup.parent = mi_follicleAttachTrans if self.b_parentToFollowGroup: #raise StandardError,"shouldn't be here" self.mi_obj.parent = mi_followGroup self.md_return["followGroup"] = mi_followGroup else: #Driver loc ----------------------------------------------------------------------- mi_driverLoc = self.mi_obj.doLoc() mi_driverLoc.doStore('cgmName',self.mi_obj.mNode) mi_driverLoc.addAttr('cgmTypeModifier','driver',lock=True) mi_driverLoc.doName() self.mi_driverLoc = mi_driverLoc mi_driverLoc.parent = mi_followGroup mi_driverLoc.visibility = False self.md_return["driverLoc"] = mi_driverLoc #Constrain ===================================================================== #mc.pointConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) #mc.orientConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) if self.b_pointAttach: mc.pointConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) else: mc.parentConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) except Exception,error:raise StandardError,"!Groups - no control Loc setup! | %s"%(error) else:#Setup control loc stuff try:#>>> Follicle ============================================================================ l_follicleInfo = nodes.createFollicleOnMesh(self.mi_targetSurface.mNode) mi_follicleFollowTrans = cgmMeta.asMeta(l_follicleInfo[1],'cgmObject',setClass=True) mi_follicleFollowShape = cgmMeta.asMeta(l_follicleInfo[0],'cgmNode') #> Name ---------------------------------------------------------------------------------- mi_follicleFollowTrans.doStore('cgmName',self.mi_obj.mNode) mi_follicleFollowTrans.addAttr('cgmTypeModifier','follow',lock=True) mi_follicleFollowTrans.doName() #>Set follicle value --------------------------------------------------------------------- mi_follicleFollowShape.parameterU = d_closestInfo['normalizedU'] mi_follicleFollowShape.parameterV = d_closestInfo['normalizedV'] self.mi_follicleFollowTrans = mi_follicleFollowTrans#link self.mi_follicleFollowShape = mi_follicleFollowShape#link self.md_return["follicleFollow"] = mi_follicleFollowTrans self.md_return["follicleFollowShape"] = mi_follicleFollowShape self.mi_obj.connectChildNode(mi_follicleFollowTrans,"follicleFollow") #Groups ======================================================================================= mi_followGroup = mi_follicleFollowTrans.duplicateTransform() mi_followGroup.doStore('cgmName',self.mi_obj.mNode) mi_followGroup.addAttr('cgmTypeModifier','follow',lock=True) mi_followGroup.doName() self.mi_followGroup = mi_followGroup self.mi_followGroup.parent = mi_follicleFollowTrans self.md_return["followGroup"] = mi_followGroup except Exception,error:raise StandardError,"!Follicle - attach Loc setup! | %s"%(error) mi_offsetGroup = self.mi_obj.duplicateTransform() mi_offsetGroup.doStore('cgmName',self.mi_obj.mNode) mi_offsetGroup.addAttr('cgmTypeModifier','offset',lock=True) mi_offsetGroup.doName() mi_offsetGroup.parent = mi_followGroup self.mi_offsetGroup = mi_offsetGroup self.md_return["offsetGroup"] = mi_offsetGroup if self.b_attachControlLoc:mi_follicleFollowTrans.connectChildNode(mi_offsetGroup,"followOffsetGroup","follicle") mi_zeroGroup = cgmMeta.asMeta( mi_offsetGroup.doGroup(True),'cgmObject',setClass=True) mi_zeroGroup.doStore('cgmName',self.mi_obj.mNode) mi_zeroGroup.addAttr('cgmTypeModifier','zero',lock=True) mi_zeroGroup.doName() mi_zeroGroup.parent = mi_followGroup self.mi_zeroGroup = mi_zeroGroup self.md_return["zeroGroup"] = mi_zeroGroup #Driver loc ----------------------------------------------------------------------- mi_driverLoc = self.mi_obj.doLoc() mi_driverLoc.doStore('cgmName',self.mi_obj.mNode) mi_driverLoc.addAttr('cgmTypeModifier','driver',lock=True) mi_driverLoc.doName() self.mi_driverLoc = mi_driverLoc mi_driverLoc.parent = mi_offsetGroup mi_driverLoc.visibility = False self.md_return["driverLoc"] = mi_driverLoc #Closest setup ===================================================================== mi_controlLoc = self.mi_obj.doLoc() mi_controlLoc.doStore('cgmName',self.mi_obj.mNode) mi_controlLoc.addAttr('cgmTypeModifier','control',lock=True) mi_controlLoc.doName() self.mi_controlLoc = mi_controlLoc self.md_return["controlLoc"] = mi_controlLoc if self.b_attachControlLoc: mi_group = cgmMeta.asMeta( mi_controlLoc.doGroup(),'cgmObject',setClass=True ) mi_group.parent = mi_follicleAttachTrans #Create decompose node -------------------------------------------------------------- mi_worldTranslate = cgmMeta.cgmNode(nodeType = 'decomposeMatrix') mi_worldTranslate.doStore('cgmName',self.mi_obj.mNode) mi_worldTranslate.doName() self.mi_worldTranslate = mi_worldTranslate attributes.doConnectAttr("%s.worldMatrix"%(mi_controlLoc.mNode),"%s.%s"%(mi_worldTranslate.mNode,'inputMatrix')) #Create node -------------------------------------------------------------- mi_cpos = NodeF.createNormalizedClosestPointNode(self.mi_obj,self.mi_targetSurface) attributes.doConnectAttr ((mi_cpos.mNode+'.out_uNormal'),(mi_follicleFollowShape.mNode+'.parameterU')) attributes.doConnectAttr ((mi_cpos.mNode+'.out_vNormal'),(mi_follicleFollowShape.mNode+'.parameterV')) #attributes.doConnectAttr ((mi_controlLoc.mNode+'.translate'),(mi_cpos.mNode+'.inPosition')) attributes.doConnectAttr ((mi_worldTranslate.mNode+'.outputTranslate'),(mi_cpos.mNode+'.inPosition')) #Constrain ===================================================================== #mc.pointConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) #mc.orientConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) if self.b_pointAttach: mc.pointConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) else: mc.parentConstraint(self.mi_driverLoc.mNode, self.mi_obj.mNode, maintainOffset = True) if self.b_attachControlLoc: for attr in self.mi_orientation.p_string[0]: attributes.doConnectAttr ((mi_controlLoc.mNode+'.t%s'%attr),(mi_offsetGroup.mNode+'.t%s'%attr)) if self.b_createUpLoc:#Make our up loc ============================================================= mi_upLoc = mi_zeroGroup.doLoc() mi_upLoc.doStore('cgmName',self.mi_obj.mNode) mi_upLoc.addAttr('cgmTypeModifier','up',lock=True) mi_upLoc.doName() mi_upLoc.parent = mi_zeroGroup self.md_return["upLoc"] = mi_upLoc mi_follicleFollowTrans.connectChildNode(mi_upLoc,"followUpLoc","follicle") #Move it ---------------------------------------------------------------------------------------- mi_upLoc.__setattr__("t%s"%self.mi_orientation.p_string[0],self.f_offset) if self.md_return.get("follicleFollow"): mi_follicleFollowTrans.connectChild(mi_driverLoc,"driverLoc","follicle") return self.md_return
s.p_hidden = False curves.createControlCurve('semiSphere',10,'z-') attributes.doSetAttr('closestPointOnSurface1','inPostionX',5) mc.setAttr('closestPointOnSurface1.inPostionX',5) m1 = cgmPM.cgmModule(name = 'test') m1 = cgmMeta.cgmNode('spine_part') m1.setState('skeleton',forceNew = True) m1.rigNull.skinJoints m1.getModuleColors() m1.getPartNameBase() m1.modulePuppet.getGeo() targetObj = mc.ls(sl=True)[0] distance.returnClosestPointOnSurfaceInfo(targetObj,'test_controlSurface') distance.returnClosestUV(targetObj,'test_controlSurface') log.info(a) nodes.createFollicleOnMesh('spine_controlSurface','test') locators.locMeClosestUVOnSurface(mc.ls(sl=True)[0], 'test_controlSurface', pivotOnSurfaceOnly = False) mesh = 'Morphy_Body_GEO' i_obj = cgmMeta.cgmObject('hips_anim') mControlFactory.returnBaseControlSize(i_obj, mesh,axis = ['x','y','z-']) mControlFactory.returnBaseControlSize(i_obj, mesh,axis = ['z-']) mc.softSelect(softSelectEnabled = True) mc.softSelect(q = True, softSelectDistance = True) mc.softSelect(q = True, softSelectUVDistance = True) mc.softSelect(q = True, softSelectFalloff = 2) mc.softSelect(softSelectFalloff = 0) mc.softSelect(softSelectDistance = 20) mc.softSelect(softSelectUVDistance = 30)