Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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))
Esempio n. 5
0
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))