def doUpdateLocator(locatorName,forceBBCenter = False): """ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION: Update a locator created with our nifty tool. ARGUMENTS: obj(string) RETURNS: name(string) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> """ if search.returnObjectType(locatorName) == 'locator': locatorMode = search.returnTagInfo(locatorName,'cgmLocMode') if locatorMode == 'fromObject': obj = search.returnTagInfo(locatorName,'cgmName') if mc.objExists(obj) == True: """get stuff to transfer""" locInfo = returnInfoForLoc(obj,forceBBCenter) doPositionLocator(locatorName,locInfo) return True else: guiFactory.warning ("The stored object doesn't exist") return False else: sourceObjects = search.returnTagInfo(locatorName,'cgmSource') targetObjectsBuffer = sourceObjects.split(',') targetObjects = [] for obj in targetObjectsBuffer: if mc.objExists(obj): targetObjects.append(obj) else: guiFactory.warning ('%s%s' % (obj, " not found, using any that are... ")) if locatorMode == 'selectCenter': locBuffer = locMeCenter(targetObjects,forceBBCenter) position.moveParentSnap(locatorName,locBuffer) mc.delete(locBuffer) if locatorMode == 'closestPoint': locBuffer = locClosest(targetObjects[:-1],targetObjects[-1]) position.moveParentSnap(locatorName,locBuffer) mc.delete(locBuffer) else: return False return locatorName
def doUpdateLocator(locatorName, forceBBCenter=False): """ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION: Update a locator created with our nifty tool. ARGUMENTS: obj(string) RETURNS: name(string) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> """ if search.returnObjectType(locatorName) == 'locator': locatorMode = search.returnTagInfo(locatorName, 'cgmLocMode') if locatorMode == 'fromObject': obj = search.returnTagInfo(locatorName, 'cgmName') if mc.objExists(obj) == True: """get stuff to transfer""" locInfo = returnInfoForLoc(obj, forceBBCenter) doPositionLocator(locatorName, locInfo) return True else: guiFactory.warning("The stored object doesn't exist") return False else: sourceObjects = search.returnTagInfo(locatorName, 'cgmSource') targetObjectsBuffer = sourceObjects.split(',') targetObjects = [] for obj in targetObjectsBuffer: if mc.objExists(obj): targetObjects.append(obj) else: guiFactory.warning( '%s%s' % (obj, " not found, using any that are... ")) if locatorMode == 'selectCenter': locBuffer = locMeCenter(targetObjects, forceBBCenter) position.moveParentSnap(locatorName, locBuffer) mc.delete(locBuffer) if locatorMode == 'closestPoint': locBuffer = locClosest(targetObjects[:-1], targetObjects[-1]) position.moveParentSnap(locatorName, locBuffer) mc.delete(locBuffer) else: return False return locatorName
def doCreateOrientationHelpers(self): """ """ log.debug(">>> addOrientationHelpers") assert self.cls == 'TemplateFactory.go',"Not a TemlateFactory.go instance!" assert mc.objExists(self.m.mNode),"module no longer exists" #Gather limb specific data and check #=================================== #'orientHelpers':'messageSimple',#Orientation helper controls #'orientRootHelper':'messageSimple',#Root orienation helper helperObjects = [] helperObjectGroups = [] returnBuffer = [] root = self.i_templateNull.getMessage('root')[0] objects = self.i_templateNull.getMessage('controlObjects') log.debug(root) log.debug(objects) log.debug(self.foundDirections) #>> Create orient root control #============================= orientRootSize = (distance.returnBoundingBoxSizeToAverage(root,True)*2.5) i_orientRootControl = cgmMeta.cgmObject( curves.createControlCurve('circleArrow1',orientRootSize) ) i_orientRootControl.addAttr('mClass','cgmObject',lock=True) curves.setCurveColorByName(i_orientRootControl.mNode,self.moduleColors[0]) i_orientRootControl.addAttr('cgmName',value = str(self.m.getShortName()), attrType = 'string', lock=True)#<<<<<<<<<<<FIX THIS str(call) when Mark fixes bug i_orientRootControl.addAttr('cgmType',value = 'templateOrientRoot', attrType = 'string', lock=True) i_orientRootControl.doName() #>>> Store it i_orientRootControl.connectParent(self.templateNull,'orientRootHelper','owner')#Connect it to it's object #>>> Position and set up follow groups position.moveParentSnap(i_orientRootControl.mNode,root) i_orientRootControl.parent = root #parent it to the root i_orientRootControl.doGroup(maintain = True)#group while maintainting position mc.pointConstraint(objects[0],i_orientRootControl.parent,maintainOffset = False)#Point contraint orient control to the first helper object mc.aimConstraint(objects[-1],i_orientRootControl.parent,maintainOffset = True, weight = 1, aimVector = [1,0,0], upVector = [0,1,0], worldUpObject = root, worldUpType = 'objectRotation' ) attributes.doSetLockHideKeyableAttr(i_orientRootControl.mNode,True,False,False,['tx','ty','tz','rx','ry','sx','sy','sz','v']) self.i_orientHelpers = []#we're gonna store the instances so we can get them all after parenting and what not #>> Sub controls #============================= if len(objects) == 1:#If a single handle module i_obj = cgmMeta.cgmObject(objects[0]) position.moveOrientSnap(objects[0],root) else: for i,obj in enumerate(objects): log.debug("on %s"%(mc.ls(obj,shortNames=True)[0])) #>>> Create and color size = (distance.returnBoundingBoxSizeToAverage(obj,True)*2) # Get size i_obj = cgmMeta.cgmObject(curves.createControlCurve('circleArrow2Axis',size))#make the curve i_obj.addAttr('mClass','cgmObject',lock=True) curves.setCurveColorByName(i_obj.mNode,self.moduleColors[1]) #>>> Tag and name i_obj.doCopyNameTagsFromObject(obj) i_obj.doStore('cgmType','templateOrientHelper',True) i_obj.doName() #>>> Link it to it's object and append list for full store i_obj.connectParent(obj,'helper','owner')#Connect it to it's object self.i_orientHelpers.append(i_obj) log.debug(i_obj.owner) #>>> initial snapping """ position.movePointSnap(i_obj.mNode,obj) if i < len(objects)-1:#If we have a pair for it, aim at that pairs aim, otherwise, aim at the second to last object constBuffer = mc.aimConstraint(objects[i+1],i_obj.mNode,maintainOffset = False, weight = 1, aimVector = [0,0,1], upVector = [0,1,0], worldUpVector = self.foundDirections[1], worldUpType = 'vector' ) else: constBuffer = mc.aimConstraint(objects[-2],i_obj.mNode,maintainOffset = False, weight = 1, aimVector = [0,0,-1], upVector = [0,1,0], worldUpVector = self.foundDirections[1], worldUpType = 'vector' ) if constBuffer:mc.delete(constBuffer) #>>> follow groups i_obj.parent = obj i_obj.doGroup(maintain = True) if i < len(objects)-1:#If we have a pair for it, aim at that pairs aim, otherwise, aim at the second to last object mc.aimConstraint(objects[i+1],i_obj.parent,maintainOffset = False, weight = 1, aimVector = [0,0,1], upVector = [0,1,0], worldUpVector = [0,1,0], worldUpObject = i_orientRootControl.mNode, worldUpType = 'objectrotation' ) else: constBuffer = mc.aimConstraint(objects[-2],i_obj.parent,maintainOffset = False, weight = 1, aimVector = [0,0,-1], upVector = [0,1,0], worldUpObject = i_orientRootControl.mNode, worldUpType = 'objectrotation' ) #>>> ConnectVis, lock and hide #mc.connectAttr((visAttr),(helperObj+'.v')) if obj == objects[-1]: attributes.doSetLockHideKeyableAttr(i_obj.mNode,True,False,False,['tx','ty','tz','ry','sx','sy','sz','v']) else: attributes.doSetLockHideKeyableAttr(i_obj.mNode,True,False,False,['tx','ty','tz','rx','ry','sx','sy','sz','v']) #>>> Get data ready to go forward bufferList = [] for o in self.i_orientHelpers: bufferList.append(o.mNode) self.i_templateNull.orientHelpers = bufferList self.i_orientRootHelper = i_orientRootControl log.debug("orientRootHelper: [%s]"%self.i_templateNull.orientRootHelper.getShortName()) log.debug("orientHelpers: %s"%self.i_templateNull.getMessage('orientHelpers')) return True
def placerLocsToCubey(): import random from cgm.lib import position selection = mc.ls(sl=True) or [] mStable = [ 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male1.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male2.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male3.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male4.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male5.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male6.ma' ] fStable = [ 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/female1.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/female2.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/female3.ma' ] maleFileCnt = 0 femaleFileCnt = 0 maleCnt = 0 femCnt = 0 length = len(selection) for i, loc in enumerate(selection): guiFactory.report("On %s of %s" % (i, length)) #Pick a sex sexInt = random.randint(0, 10) sex = 'male' if sexInt in [2, 3]: sex = 'female' guiFactory.report("sex is '%s'" % sex) #Pick a file if sex is 'male': locFile = mStable[maleFileCnt] maleFileCnt += 1 maleCnt += 1 if not maleFileCnt < len(mStable): maleFileCnt = 0 locNameSpace = 'male_%s' % maleCnt else: locFile = fStable[femaleFileCnt] femaleFileCnt += 1 femCnt += 1 if not femaleFileCnt < len(fStable): femaleFileCnt = 0 locNameSpace = 'female_%s' % femCnt guiFactory.report("File is '%s'" % locFile) #Import the file mc.file(locFile, i=True, namespace=locNameSpace, pr=True, force=True, prompt=False) # prompt means no error message buffer = mc.ls('%s:*' % locNameSpace) if not 'RN' in buffer[0]: return guiFactory.warning('Failed to find name space') splitBuffer = buffer[0].split('RN') realLocNameSpace = splitBuffer[0] #Snap Master constraint group and constrain to loc nestedNameSpace = 'male' if sex == 'female': nestedNameSpace = 'female' snappingObject = ('%s:%s:Cubey_masterAnim_constraint_grp' % (locNameSpace, nestedNameSpace)) if not mc.objExists(snappingObject): return "Snapping object doesn't exist = '%s'" % snappingObject position.moveParentSnap(snappingObject, loc) masterObject = ('%s:%s:Cubey_masterAnim' % (locNameSpace, nestedNameSpace)) if not mc.objExists(masterObject): return "Master object doesn't exist = '%s'" % masterObject mc.parentConstraint(loc, snappingObject, maintainOffset=False) if sex == 'male': attributes.doSetAttr(masterObject, 'tz', .606) attributes.doSetAttr(masterObject, 'rz', -90) #Randomize if sex == 'male': randomizeCubey('%s:%s' % (locNameSpace, nestedNameSpace)) if sex == 'female': randomizeCubette('%s:%s' % (locNameSpace, nestedNameSpace))
def placerLocsToCubey(): import random from cgm.lib import position selection = mc.ls(sl=True) or [] mStable = ['J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male1.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male2.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male3.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male4.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male5.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/male6.ma'] fStable = ['J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/female1.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/female2.ma', 'J:/Dropbox/MasterCard/Sequences/mc/mc0010/Anim/maya/scenes/cycles/female3.ma'] maleFileCnt = 0 femaleFileCnt = 0 maleCnt = 0 femCnt = 0 length = len(selection) for i,loc in enumerate(selection): guiFactory.report("On %s of %s"%(i,length)) #Pick a sex sexInt = random.randint(0,10) sex = 'male' if sexInt in [2,3]: sex = 'female' guiFactory.report("sex is '%s'"%sex) #Pick a file if sex is 'male': locFile = mStable[maleFileCnt] maleFileCnt +=1 maleCnt +=1 if not maleFileCnt < len(mStable): maleFileCnt = 0 locNameSpace = 'male_%s'%maleCnt else: locFile = fStable[femaleFileCnt] femaleFileCnt +=1 femCnt +=1 if not femaleFileCnt < len(fStable): femaleFileCnt = 0 locNameSpace = 'female_%s'%femCnt guiFactory.report("File is '%s'"%locFile) #Import the file mc.file(locFile, i = True,namespace = locNameSpace,pr = True, force = True,prompt = False) # prompt means no error message buffer = mc.ls('%s:*'%locNameSpace) if not 'RN' in buffer[0]: return guiFactory.warning('Failed to find name space') splitBuffer = buffer[0].split('RN') realLocNameSpace = splitBuffer[0] #Snap Master constraint group and constrain to loc nestedNameSpace = 'male' if sex == 'female': nestedNameSpace = 'female' snappingObject = ('%s:%s:Cubey_masterAnim_constraint_grp'%(locNameSpace,nestedNameSpace)) if not mc.objExists(snappingObject): return "Snapping object doesn't exist = '%s'"%snappingObject position.moveParentSnap(snappingObject,loc) masterObject = ('%s:%s:Cubey_masterAnim'%(locNameSpace,nestedNameSpace)) if not mc.objExists(masterObject): return "Master object doesn't exist = '%s'"%masterObject mc.parentConstraint(loc,snappingObject, maintainOffset=False) if sex == 'male': attributes.doSetAttr(masterObject,'tz',.606) attributes.doSetAttr(masterObject,'rz',-90) #Randomize if sex == 'male': randomizeCubey('%s:%s'%(locNameSpace,nestedNameSpace)) if sex == 'female': randomizeCubette('%s:%s'%(locNameSpace,nestedNameSpace))