Esempio n. 1
0
def bakeLocatorsToAnimControls(controlsToBake):
	print "\nBaking Locators to Controls..."

	selBckp = cmds.ls(selection=True)

	start = int(cmds.playbackOptions(q=True, minTime=True))
	end = int(cmds.playbackOptions(q=True, maxTime=True))
	
	currentViewport = cmds.getPanel(wf=True)

	isolateState = cmds.isolateSelect(currentViewport, q=True, state=True)

	cmds.select(clear=True)
	cmds.isolateSelect(currentViewport, state=1)

	cmds.select(controlsToBake, replace=True)
	cmds.isolateSelect(currentViewport, addSelected=True )

	if len(controlsToBake) > 0:
		cmds.waitCursor(state=True)

		for i in range(start, end + 1):
			print ("\nCurrent Frame -> " + str(i))
			cmds.currentTime(i, update=True)

			for ctrl in controlsToBake:
				print ("\nControl -> " + ctrl)

				# gets the bake locator for this control or creates if not exists
				bakeLocator = getControlBakeLocator(ctrl)
				print ("Baking into Locator -> " + bakeLocator)

				# now this locator must be keyed and aligned along the timeline to the anim control creating keys by frame		

				#get the transform values of the control
				cmds.select(ctrl, replace=True)
				position = cmds.xform(query=True, translation=True, worldSpace=True)
				rotation = cmds.xform(query=True, rotation=True, worldSpace=True)
		
				# locates the locator
				cmds.setAttr((bakeLocator + ".translateX"), position[0])
				cmds.setAttr((bakeLocator + ".translateY"), position[1])
				cmds.setAttr((bakeLocator + ".translateZ"), position[2])
				cmds.setAttr((bakeLocator + ".rotateX"), rotation[0])
				cmds.setAttr((bakeLocator + ".rotateY"), rotation[1])
				cmds.setAttr((bakeLocator + ".rotateZ"), rotation[2])

				# creates the key for that frame
				cmds.select(bakeLocator, replace=True)
				cmds.setKeyframe()

		cmds.waitCursor(state=False)

	cmds.isolateSelect(currentViewport, state=isolateState)
	cmds.currentTime(start, update=True)

	cmds.select(clear=True)
	cmds.select(selBckp, replace=True)

	print "\n...Locators Baked to Controls\n"
Esempio n. 2
0
    def importSets(self, *args):
        cmds.waitCursor(state=True)

        setsData = aToolsMod.loadInfoWithUser("selectSets", "setsData")
        self.createSetsFromData(setsData)

        cmds.waitCursor(state=False)
Esempio n. 3
0
def setDivision(_level):
    obj = checkSel()
    allNode = []
    del allNode[:]

    if obj == None:
        obj = mc.ls(type='mesh')

    mc.waitCursor(state=True)
    for eachObj in obj:
        try:
            smoothNode = mc.listConnections(eachObj + '.inMesh', d=True)
        except RuntimeError:
            om.MGlobal.displayWarning(u'%s节点没有inMesh属性,跳过操作...\n' % eachObj)
        else:
            if not smoothNode == None:
                if mc.nodeType(smoothNode[0]) == 'polySmoothFace':
                    mc.setAttr(smoothNode[0] + '.divisions', _level)

        del smoothNode

    mc.waitCursor(state=False)


##########################################################
Esempio n. 4
0
    def redraw(self, *args, **kwargs):
        """
        NOTE: depends on the LIST_CLASS being set in the actual class!
        """
        try:
            cmds.waitCursor(st=1)

            self.clear()

            cmds.setParent(self)
            with self:
                with layouts.ScrollLayout('mgScroll#', childResizable=True) as inner_scroll:
                    with self.LIST_CLASS('mgList#', **self.redraw_options) as inner_list:
                        for item in self.collection:
                            w = self.template.widget(item)
                            self.widget_added(w)

            cmds.setParent(self)
            cmds.setParent("..")

            # controls only includes 'inner_scroll' for layout
            self.named_children['inner_scroll'] = inner_scroll
            self.named_children['inner_list'] = inner_list
            self.controls = [inner_scroll]


        finally:
            self.layout()
            cmds.waitCursor(st=0)
Esempio n. 5
0
def nmpExtractWeights(cluster, joint, skinCluster, geoName):
    ''' Calculates the Weighting of Every Joint on Inderectly Connected Wrapped Geometry.
        Weight is Determined By Translating the Master Object and Calculating the Distance
        Changed in 3D Space on Every Vert. Returns list of list of [transform, value]'''
    verts = cmds.ls(geoName + '.vtx[*]', flatten=True)
    values = []
    cmds.waitCursor(state=True)
    start = cmds.timerX()
    originalPos = [cmds.xform(vert, q=True, ws=True, t=True) for vert in verts]
    cmds.setAttr(cluster + '.tz', 1)
    deformPos = [cmds.xform(vert, q=True, ws=True, t=True) for vert in verts]
    cmds.setAttr(cluster + '.tz', 0)

    for i in range(0, len(deformPos)):
        difference = [
            deformPos[i][0] - originalPos[i][0],
            deformPos[i][1] - originalPos[i][1],
            deformPos[i][2] - originalPos[i][2]
        ]
        distance = math.sqrt(
            pow(difference[0], 2) + pow(difference[1], 2) +
            pow(difference[2], 2))
        values.append([joint, distance])

    cmds.waitCursor(state=False)
    return values
Esempio n. 6
0
def wait_cursor():
    """Provide a waiting cursor"""
    try:
        cmds.waitCursor(state=True)
        yield
    finally:
        cmds.waitCursor(state=False)
Esempio n. 7
0
    def redraw(self, *args, **kwargs):
        """
        NOTE: depends on the LIST_CLASS being set in the actual class!
        """

        try:
            cmds.waitCursor(st=1)
            if self._scroll != 'not initialized':
                cmds.deleteUI(self._scroll)
                self._scroll = 'not initialized'
                self._list = 'not initialized'

            cmds.setParent(self)
            with layouts.ScrollLayout('_scroll', childResizable=True) as self._scroll:
                with self.LIST_CLASS('_list', **self.Redraw_Opts) as self._list:
                    for item in self.Collection:
                        w = self.Template.widget(item)
                        self.widget_added(w)
            cmds.setParent(self.parent)

            # unhook the delete handlers from these guys, they are closed
            # so they arent part of the ACTIVE_LAYOUT

            self._scroll.Deleted._handlers = set()
            self._list.Deleted._handlers = set()
            self._scroll.Deleted.kill()
            self._list.Deleted.kill()

            # remove them so they fall out of scope, but keep the new _scroll
            self.Controls = [self._scroll]
            self.layout()

        finally:
            cmds.waitCursor(st=0)
Esempio n. 8
0
def pythonScripts():

    if (cmds.menu ('pythonScripts_menu', exists=True)):
	
        print ("Removing old pythonScripts menu...")
	cmds.deleteUI ('pythonScripts_menu')
	
    gMainWindow = maya.mel.eval('$temp1=$gMainWindow')
    gMainProgressBar = maya.mel.eval('$temp=$gMainProgressBar')

    mainDir = findFile('pythonScripts.py')

    timer = cmds.timerX()
    cmds.waitCursor (state=True)
    print ""
    
    cmds.progressBar (gMainProgressBar, edit=True,
    		beginProgress=True,
    		isInterruptable=True,
    		status="Creating pythonScripts...",
    		maxValue=100)

    pMenu = (cmds.menu ('pythonScripts_menu', parent=gMainWindow, tearOff=True, aob=True, label="pythonScripts"))

    gen_pythonScripts(mainDir, pMenu)
    		
    cmds.waitCursor (state=False)

    endTime = cmds.timerX(startTime=timer)

    cmds.progressBar (gMainProgressBar, edit=True,
    		endProgress=True,)
             
    print ("pythonTools has now been updated in: " + str(endTime) + " seconds...!")
Esempio n. 9
0
 def loadData(self, onlySelectedNodes=False, crashFolder=None, *args):  
     
     cmds.waitCursor(state=True)
     cmds.refresh(suspend=True)
     cmds.undoInfo(openChunk=True)
     utilMod.startProgressBar("aTools Animation Crash Recovery - Loading data...")                
     
     self.pause      = True
     savedData       = self.getSavedData(crashFolder, onlySelectedNodes)
             
     if savedData:
     
         animData    = savedData["animData"]["data"]
         attrData    = savedData["attrData"]["data"] 
     
         self.applyAttrData(attrData)
         self.applyAnimData(animData)
         if not crashFolder: self.loadInfoData()
     
     utilMod.setProgressBar(endProgress=True)
     
     self.pause = False
     
     cmds.undoInfo(closeChunk=True)
     cmds.refresh(suspend=False)    
     cmds.waitCursor(state=False)
Esempio n. 10
0
def pythonScripts():

    if cmds.menu("pythonScripts_menu", exists=True):

        # print ("Removing old pythonScripts menu...")
        cmds.deleteUI("pythonScripts_menu")

    gMainWindow = maya.mel.eval("$gMainWindow=$gMainWindow")
    gMainProgressBar = maya.mel.eval("$gMainProgressBar=$gMainProgressBar")

    mainDir = findFile("pythonScripts.py")

    timer = maya.mel.eval("timerX")
    cmds.waitCursor(state=True)
    # print ""

    cmds.progressBar(
        gMainProgressBar,
        edit=True,
        beginProgress=True,
        isInterruptable=True,
        status="Creating pythonScripts...",
        maxValue=100,
    )

    pMenu = cmds.menu("pythonScripts_menu", parent=gMainWindow, tearOff=True, aob=True, label="pythonScripts")

    gen_pythonScripts(mainDir, pMenu)

    cmds.waitCursor(state=False)

    endTime = maya.mel.eval("timerX -st %(timer)s" % vars())

    cmds.progressBar(gMainProgressBar, edit=True, endProgress=True)
Esempio n. 11
0
    def load(self, context, name, namespace, options):

        _title = "Warning: Copying texture files"
        _message = ("This will copy textures to current workspace, may "
                    "take a while to complete.\n"
                    "Are you sure ?")
        _copy = "Copy"
        _stop = "Cancel"
        result = cmds.confirmDialog(title=_title,
                                    message=_message,
                                    button=[_copy, _stop],
                                    defaultButton=_stop,
                                    cancelButton=_stop,
                                    dismissString=_stop)

        if result == _copy:
            workspace = cmds.workspace(query=True, rootDirectory=True)
            entry = "textures"
            asset = context["asset"]["name"]
            subset = context["subset"]["name"]
            version = "v{:0>3}".format(context["version"]["name"])

            texture_dir = os.path.join(workspace, entry, asset, subset,
                                       version)

            cmds.waitCursor(state=True)
            try:
                copy_tree(self.package_path, texture_dir)
            except Exception:
                pass
            finally:
                cmds.waitCursor(state=False)
Esempio n. 12
0
    def redraw(self, *args, **kwargs):
        """
        NOTE: depends on the LIST_CLASS being set in the actual class!
        """
        try:
            cmds.waitCursor(st=1)

            self.clear()

            cmds.setParent(self)
            with self:
                with layouts.ScrollLayout('mgScroll#', childResizable=True) as inner_scroll:
                    with self.LIST_CLASS('mgList#', **self.redraw_options) as inner_list:
                        for item in self.collection:
                            w = self.template.widget(item)
                            self.widget_added(w)

            cmds.setParent(self)
            cmds.setParent("..")

            # controls only includes 'inner_scroll' for layout
            self.named_children['inner_scroll'] = inner_scroll
            self.named_children['inner_list'] = inner_list
            self.controls = [inner_scroll]


        finally:
            self.layout()
            cmds.waitCursor(st=0)
Esempio n. 13
0
 def duplicateSet(self, selSets, outputNameSpace, newColor):  
                   
     cmds.waitCursor(state=True)   
 
     selSetsData            = self.getSetsData(selSets) 
     selSets                = selSetsData[0]
     contents            = selSetsData[1]
     inputNameSpaces     = []
     newSelSets             = []
     
     separator = ":"
             
     for loopContents in contents:
         nameSpaces = utilMod.getNameSpace(loopContents)[0]
         for loopNameSpace in nameSpaces:
             if loopNameSpace[:-1] not in inputNameSpaces:
                 inputNameSpaces.append(loopNameSpace[:-1])        
     
     for inputNameSpace in inputNameSpaces:
                                                                                     
         selSetsStr     = str(selSetsData)
         selSetsData    = eval(selSetsStr.replace("%s%s"%(inputNameSpace, separator), "%s%s"%(outputNameSpace, separator)))            
     
     for loopSet in selSets: 
         newSelSets.append(self.getRenamedColor(loopSet, newColor))
         
     selSetsData[0] = newSelSets        
     
     self.createSetsFromData(selSetsData)        
     cmds.waitCursor(state=False)    
Esempio n. 14
0
    def duplicateSet(self, selSets, outputNameSpace, newColor):

        cmds.waitCursor(state=True)

        selSetsData = self.getSetsData(selSets)
        selSets = selSetsData[0]
        contents = selSetsData[1]
        inputNameSpaces = []
        newSelSets = []

        separator = ":"

        for loopContents in contents:
            nameSpaces = utilMod.getNameSpace(loopContents)[0]
            for loopNameSpace in nameSpaces:
                if loopNameSpace[:-1] not in inputNameSpaces:
                    inputNameSpaces.append(loopNameSpace[:-1])

        for inputNameSpace in inputNameSpaces:

            selSetsStr = str(selSetsData)
            selSetsData = eval(
                selSetsStr.replace("%s%s" % (inputNameSpace, separator),
                                   "%s%s" % (outputNameSpace, separator)))

        for loopSet in selSets:
            newSelSets.append(self.getRenamedColor(loopSet, newColor))

        selSetsData[0] = newSelSets

        self.createSetsFromData(selSetsData)
        cmds.waitCursor(state=False)
Esempio n. 15
0
 def importSets(self, *args):
     cmds.waitCursor(state=True)   
 
     setsData = aToolsMod.loadInfoWithUser("selectSets", "setsData")    
     self.createSetsFromData(setsData)
     
     cmds.waitCursor(state=False)    
Esempio n. 16
0
    def redraw(self, *args, **kwargs):
        '''
        redraw the GUI for this item when the collection changes
        '''
        try:
            cmds.waitCursor(st=1)
            _collection = self.Collection.Contents
            delenda = [i for i in self.Controls if i not in _collection]
            for item in delenda:
                item.visible = False
            self.Controls = [i for i in self.Collection]

            an = []
            for item in self.Controls:
                item.visible = True
                an.append((item, 'right'))
                an.append((item, 'bottom'))
            self.attachNone = an
            fudge = 16

            if kwargs.get('horizontal', False):
                if len(self.controls):
                    fudge = (self.Controls[0].width or 1) * (len(self.Controls) + 1)
                self.width = fudge
            else:
                if len(self.Controls):
                    fudge = self.Controls[0].height * (len(self.Controls) + 1)
                self.height = fudge

            self.layout()
        finally:
            cmds.waitCursor(st=0)
Esempio n. 17
0
def _doIt( imageFile, outputDir, baseName, frameRange, framePadding ):
    cmds.waitCursor( state=True )
    
    src = _getTextFieldValue( imageFile + 'TF' )
    fileName, fileExtension = os.path.splitext( src )
    dir = _getTextFieldValue( outputDir + 'TF' )
    baseName = _getTextFieldValue( baseName + 'TF' )
    frames = _getFrames( frameRange + 'TF' )
    padding = len( _getOptionMenuValue(framePadding + 'DD') )

    if not re.search('^[a-zA-Z0-9_-]+$', baseName):
        _cursorError( 'Invalid base name.' )

    if int(max(frames)) > int('9'*padding):
        _cursorError( '1 or more frames in the frame range are longer than the frame padding.' )
    
    for frame in frames:
        frameNumPadded = (('0'*padding) + str(frame))[(-1*padding):]
        newFileName = baseName + '.' + frameNumPadded + fileExtension
        dst = dir + '/' + newFileName
        
        try:
            shutil.copy2(src, dst)
        except IOError:
            _cursorError( 'Invalid Hold Frame source file or output directory.' )
        
    cmds.waitCursor( state=False )
Esempio n. 18
0
 def pasteAnimation(self, animData=None, pasteInPlace=True, onlySelectedNodes=None, *args):  
     cmds.waitCursor(state=True)   
     
     if not onlySelectedNodes:   onlySelectedNodes = cmds.menuItem("onlySelectedNodesMenu", query=True, checkBox=True)
     if not animData:            animData = aToolsMod.loadInfoWithUser("copyPasteAnim", "animData")    
     animMod.applyAnimData(animData, pasteInPlace, onlySelectedNodes, showProgress=True)
     
     cmds.waitCursor(state=False)
Esempio n. 19
0
def bakeAnimControlsToLocators(bakedLocators):
	print "\nBaking Controls to Locators..."

	selBckp = cmds.ls(selection=True)

	start = int(cmds.playbackOptions(q=True, minTime=True))
	end = int(cmds.playbackOptions(q=True, maxTime=True))
	
	currentViewport = cmds.getPanel(wf=True)

	isolateState = cmds.isolateSelect(currentViewport, q=True, state=True)

	cmds.select(clear=True)
	cmds.isolateSelect(currentViewport, state=1)

	cmds.select(bakedLocators, replace=True)
	cmds.isolateSelect(currentViewport, addSelected=True )

	if len(bakedLocators) > 0:
		cmds.waitCursor(state=True)

		for i in range(start, end + 1):
			print ("\nCurrent Frame -> " + str(i))
			cmds.currentTime(i, update=True)

			for loc in bakedLocators:
				print ("\nLocator -> " + loc)

				# gets the anim control for this bake locator
				animControl = getBakeLocatorControl(loc)

				if animControl is not None:
					print ("Baking into Locator -> " + animControl)
					# now this anim control must be keyed and aligned along the timeline to the bake locator creating keys by frame		

					#get the transform values of the locator
					cmds.select(loc, replace=True)
					bakedPosition = cmds.xform(query=True, translation=True, worldSpace=True)
					bakedRotation = cmds.xform(query=True, rotation=True, worldSpace=True)
			
					# locates the anim control					
					cmds.select(animControl, replace=True)
					cmds.xform(absolute=True, worldSpace=True, rotation=bakedRotation)
					cmds.xform(absolute=True, worldSpace=True, translation=bakedPosition)

					# creates the key for that frame
					cmds.select(animControl, replace=True)
					cmds.setKeyframe()
					
		cmds.waitCursor(state=False)

	cmds.isolateSelect(currentViewport, state=isolateState)
	cmds.currentTime(start, update=True)

	cmds.select(clear=True)
	cmds.select(selBckp, replace=True)

	print "\n...Controls Baked to Locators\n"
Esempio n. 20
0
    def createMotionTrail(self, ctrls):

        cmds.waitCursor(state=True)
        self.saveTwistObjsInfo()
        self.createMainGroup()

        for loopCtrl in ctrls:
            ctrlName = self.getCtrlName(loopCtrl)
            groupNode = self.createCtrlGroup(ctrlName)

            if not groupNode: continue

            motionTrail = "%s_aTools_motionTrail" % ctrlName
            offsetNode = "%s_aTools_offset" % ctrlName
            currentLocators = [motionTrail, offsetNode]

            for loopLocator in currentLocators:
                animMod.createNull(loopLocator)
            cmds.hide(currentLocators)

            motionTrailList = self.createMotionTrailNode(offsetNode)
            motionTrailTransform = motionTrailList[0]
            motionTrailAttr = motionTrailList[1]
            motionTrailNode = motionTrailList[2]
            self.nodeInfo[ctrlName] = {
                "ctrlNode": loopCtrl,
                "offsetNode": offsetNode,
                "groupNode": groupNode,
                "motionTrailTransform": motionTrailTransform,
                "motionTrailAttr": motionTrailAttr,
                "motionTrailNode": motionTrailNode,
                "lineColor": self.lineColorCycle.next()
            }

            with G.aToolsBar.createAToolsNode:

                cmds.parent(offsetNode, motionTrail)
                cmds.parent(motionTrail, groupNode)
                cmds.parent(motionTrailTransform, groupNode)
                cmds.parent(groupNode, self.mainGroupNode)
                cmds.parentConstraint(loopCtrl, motionTrail)

            if self.offsetCtrlsPosition.has_key(ctrlName):
                offsetNodePosition = self.offsetCtrlsPosition[ctrlName][0]
                if offsetNodePosition != (0, 0, 0):
                    cmds.setAttr("%s.translate" % offsetNode,
                                 offsetNodePosition[0], offsetNodePosition[1],
                                 offsetNodePosition[2])

            self.makeDirty(ctrlName)

        cmds.select(ctrls)
        self.updateMotionTrail(lightningMode=True)
        self.updateKeysTimes()
        self.updateSortedRange()
        cmds.waitCursor(state=False)
def check_for_dupe_positions(found_assets):
    '''
    test world space position of each asset against positions of scene assets
    :param found_assets:
    :return:
    '''
    print "Checking assets for similar world space positions or at origin..."
    # initialize list for duplicate position assets
    found_positions = {'ws_dupes': [], 'origin': []}
    ws_dupes = []

    mc.waitCursor(state=True)

    # check each asset
    for asset in found_assets:
        apivots = mc.xform(asset,
                           query=True,
                           worldSpace=True,
                           absolute=True,
                           pivots=True)

        # check if pivot exists at origin
        if is_at_origin(apivots):
            found_positions['origin'].append(asset)
            continue

        # iterate over scene assets for comparisons
        for test_asset in found_assets:
            # skip testing if both assets are the same
            if test_asset == asset:
                continue

            # collect test asset world positions
            tpivots = mc.xform(test_asset,
                               query=True,
                               worldSpace=True,
                               absolute=True,
                               pivots=True)

            # check if position elements match
            ps_found = 0
            for attr in range(len(apivots)):
                if apivots[attr] == tpivots[attr]:
                    ps_found += 1

            # add test asset if all transform information matched
            if ps_found == len(apivots):
                found_positions['ws_dupes'].append(test_asset)
                ws_dupes.append(test_asset)

    # clean up list of found assets to eliminate duplicate assets in lists
    found_positions['origin'] = list(set(found_positions['origin']))
    found_positions['ws_dupes'] = list(set(found_positions['ws_dupes']))
    mc.waitCursor(state=False)

    return found_positions
Esempio n. 22
0
	def func(*args, **kwargs):
		cmd.waitCursor(state=True)
		try:
			retVal = f(*args, **kwargs)
		except:
			raise
		finally:
			cmd.waitCursor(state=False)

		return retVal
Esempio n. 23
0
	def pointall(self):
		cmds.waitCursor(state='on')

		# get population from leader message
		population = herd.getPopulation()		

		for agent in population:
			self.point(agent)

		cmds.waitCursor(state='off')
Esempio n. 24
0
    def func(*args, **kwargs):
        cmd.waitCursor(state=True)
        try:
            retVal = f(*args, **kwargs)
        except:
            raise
        finally:
            cmd.waitCursor(state=False)

        return retVal
Esempio n. 25
0
 def start(self):
     """Start progress"""
     mc.waitCursor(state=True)
     mc.progressBar(self.mMainProgressBar,
                    edit=True,
                    beginProgress=True,
                    isInterruptable=self.mInterruptable,
                    status=self.mStatus,
                    minValue=self.mStartValue,
                    maxValue=self.mEndValue)
     mc.refresh()
Esempio n. 26
0
	def __exit__(self, exc_type, exc_val, exc_tb):
		""" Turn refresh on again and raise errors if asked """
		cmds.refresh(suspend =False)
		cmds.refresh()
		cmds.waitCursor(state=False)
		cmds.undoInfo(closeChunk=True)
		if exc_type is not None:
			if self.raise_error:
				import traceback
				traceback.print_tb(exc_tb)
				raise exc_type, exc_val
			else:
				sys.stderr.write("%s" % exc_val)
Esempio n. 27
0
 def exportSets(self, *args):
     cmds.waitCursor(state=True)
     
     #currSel         = cmds.ls(selection=True) 
     self.aToolsSets = self.getaToolsSets()
     
     setsData = self.getSetsData(self.aToolsSets)
     aToolsMod.saveInfoWithUser("selectSets", "setsData", setsData)  
     
     #if len(currSel) > 0: cmds.select(currSel)
     
     cmds.waitCursor(state=False)
     cmds.warning("Select sets export done. Hit 'Import Select Sets' to import them to another scene.")
Esempio n. 28
0
 def selectServer(self, *args):
     mc.waitCursor(state=True)
     selectOption = mc.radioCollection(self._assetRadio, q=True, sl=True)
     if selectOption == 'one':
         self._deadlineSereveIp = r'//192.168.80.211'
     elif selectOption == 'two':
         self._deadlineSereveIp = r'//192.168.80.222'
     elif selectOption == 'three':
         self._deadlineSereveIp = r'//192.168.80.223'
     elif selectOption == 'four':
         self._deadlineSereveIp = r'//192.168.80.224'
     elif selectOption == 'five':
         self._deadlineSereveIp = r'//192.168.6.73'
     path = os.getenv('PATH').split(';')
     addr = ''
     for eachPath in path:
         if 'Deadline/bin' in eachPath:
             addr = eachPath
             if os.path.isfile('%s/deadlinecommand.exe' % addr):
                 break
     if addr == '':
         mc.confirmDialog(title=u'温馨提示:',
                          message=u'找不到Deadline客户端安装目录,请安装Deadline客户端.',
                          button=['OK'],
                          defaultButton='Yes',
                          dismissString='No')
         sys.stderr.write(u'找不到Deadline客户端安装目录,请安装Deadline客户端.')
     else:
         try:
             str = os.popen(
                 r'"%s/deadlinecommand.exe" -ChangeRepository %s/DeadlineRepository'
                 % (addr, self._deadlineSereveIp)).read()
         except:
             sys.stderr.write(u'设定Deadline服务器时出错,请检查网络连接或权限.')
         else:
             try:
                 str = os.popen(
                     r'"%s/deadlinecommand.exe" -executescript //octvision.com/cg/td/APP/RenderFarm/getServerInfo.py'
                     % addr).read()
             except:
                 mc.confirmDialog(title=u'温馨提示:',
                                  message=u'获取Deadline的信息失败,请联系技术管理员!',
                                  button=['OK'],
                                  defaultButton='Yes',
                                  dismissString='No')
                 sys.stderr.write('Error getting Server Info')
             else:
                 mc.scrollField(self._outputFiled, e=True, tx=str)
                 mc.button(self._okButton, e=True, en=True)
     mc.waitCursor(state=False)
Esempio n. 29
0
    def exportSets(self, *args):
        cmds.waitCursor(state=True)

        #currSel         = cmds.ls(selection=True)
        self.aToolsSets = self.getaToolsSets()

        setsData = self.getSetsData(self.aToolsSets)
        aToolsMod.saveInfoWithUser("selectSets", "setsData", setsData)

        #if len(currSel) > 0: cmds.select(currSel)

        cmds.waitCursor(state=False)
        cmds.warning(
            "Select sets export done. Hit 'Import Select Sets' to import them to another scene."
        )
Esempio n. 30
0
    def startUpFunctions(self):
        #wait cursor state
        n = 0
        while True:
            if not cmds.waitCursor(query=True, state=True) or n > 100: break
            cmds.waitCursor(state=False)
            n += 1

        #refresh state
        cmds.refresh(suspend=False)
        #undo state
        if not cmds.undoInfo(query=True, stateWithoutFlush=True):
            cmds.undoInfo(stateWithoutFlush=True)
        #progress bar state
        utilMod.setProgressBar(status=None, progress=None, endProgress=True)
Esempio n. 31
0
def check_for_dupe_positions(found_assets):
    """
    test world space position of each asset against positions of scene assets
    :param found_assets:
    :return:
    """
    print "Checking assets for similar world space positions or at origin..."
    # initialize list for duplicate position assets
    found_positions = {"ws_dupes": [], "origin": []}
    ws_dupes = []

    mc.waitCursor(state=True)

    # check each asset
    for asset in found_assets:
        apivots = mc.xform(asset, query=True, worldSpace=True, absolute=True, pivots=True)

        # check if pivot exists at origin
        if is_at_origin(apivots):
            found_positions["origin"].append(asset)
            continue

        # iterate over scene assets for comparisons
        for test_asset in found_assets:
            # skip testing if both assets are the same
            if test_asset == asset:
                continue

            # collect test asset world positions
            tpivots = mc.xform(test_asset, query=True, worldSpace=True, absolute=True, pivots=True)

            # check if position elements match
            ps_found = 0
            for attr in range(len(apivots)):
                if apivots[attr] == tpivots[attr]:
                    ps_found += 1

            # add test asset if all transform information matched
            if ps_found == len(apivots):
                found_positions["ws_dupes"].append(test_asset)
                ws_dupes.append(test_asset)

    # clean up list of found assets to eliminate duplicate assets in lists
    found_positions["origin"] = list(set(found_positions["origin"]))
    found_positions["ws_dupes"] = list(set(found_positions["ws_dupes"]))
    mc.waitCursor(state=False)

    return found_positions
Esempio n. 32
0
    def copyAnimation(self, range="selected", *args):    
        cmds.waitCursor(state=True)
        
        if range == "all":
                        
            getCurves    = animMod.getAnimCurves()
            animCurves   = getCurves[0]
            animData = animMod.getAnimData(animCurves, showProgress=True)
        else:
            animData = animMod.getAnimData(showProgress=True)
            
        aToolsMod.saveInfoWithUser("copyPasteAnim", "animData", animData)  

        if cmds.window("remapNamespacesWindow", query=True, exists=True): self.remapNamespaces()
        
        cmds.waitCursor(state=False)  
Esempio n. 33
0
    def startUpFunctions(self):
        # wait cursor state
        n = 0
        while True:
            if not cmds.waitCursor(query=True, state=True) or n > 100:
                break
            cmds.waitCursor(state=False)
            n += 1

        # refresh state
        cmds.refresh(suspend=False)
        # undo state
        if not cmds.undoInfo(query=True, stateWithoutFlush=True):
            cmds.undoInfo(stateWithoutFlush=True)
        # progress bar state
        utilMod.setProgressBar(status=None, progress=None, endProgress=True)
Esempio n. 34
0
 def createMotionTrail(self, ctrls):
     
     cmds.waitCursor(state=True)
     self.saveTwistObjsInfo()        
     self.createMainGroup()
     
     for loopCtrl in ctrls: 
         ctrlName                    = self.getCtrlName(loopCtrl)
         groupNode                   = self.createCtrlGroup(ctrlName)
         
         if not groupNode: continue
         
         motionTrail                 = "%s_aTools_motionTrail"%ctrlName
         offsetNode                  = "%s_aTools_offset"%ctrlName
         currentLocators             = [motionTrail, offsetNode]
         
         for loopLocator in currentLocators: animMod.createNull(loopLocator)
         cmds.hide(currentLocators)
         
         motionTrailList             = self.createMotionTrailNode(offsetNode)
         motionTrailTransform        = motionTrailList[0]
         motionTrailAttr             = motionTrailList[1]
         motionTrailNode             = motionTrailList[2]
         self.nodeInfo[ctrlName]     = {"ctrlNode":loopCtrl, "offsetNode":offsetNode, "groupNode":groupNode, "motionTrailTransform":motionTrailTransform, "motionTrailAttr":motionTrailAttr, "motionTrailNode":motionTrailNode, "lineColor":self.lineColorCycle.next()}            
         
         
         with G.aToolsBar.createAToolsNode: 
             
             cmds.parent(offsetNode, motionTrail) 
             cmds.parent(motionTrail, groupNode)
             cmds.parent(motionTrailTransform, groupNode)
             cmds.parent(groupNode, self.mainGroupNode)
             cmds.parentConstraint(loopCtrl, motionTrail)
             
         
         if self.offsetCtrlsPosition.has_key(ctrlName): 
             offsetNodePosition = self.offsetCtrlsPosition[ctrlName][0]
             if offsetNodePosition != (0,0,0): cmds.setAttr("%s.translate"%offsetNode, offsetNodePosition[0], offsetNodePosition[1], offsetNodePosition[2])
        
         self.makeDirty(ctrlName)
         
     cmds.select(ctrls)
     self.updateMotionTrail(lightningMode=True)
     self.updateKeysTimes() 
     self.updateSortedRange() 
     cmds.waitCursor(state=False)
Esempio n. 35
0
    def execRelax(self,*args):
        '''
            relax button click handler. this is where it actually 
            executes skin relax, whoop-tee-doo.
        '''
        try:

            args = {}
            args['numSteps']=self.controls.numSteps.getValue()
            args['stepSize']=self.controls.stepSize.getValue()
            
            # do we need soft selection?
            self.controls.softSelection.addToArgs(args)
            
                
            # do we need volume association?
            if self.controls.useVolumeAssociation.getValue():
                args['abv']=1
                args['avr']=self.controls.volumeAssociationRadius.getValue()

            # add selection+highlight as arguments
            # we need highlight as second argument because
            # other meshes for simulation might be included only through highlight.
            #
            # This will never be an empty list as we tested for vertex selection available earlier
            def makeList(listOrNull):
                if listOrNull is None:
                    return []
                return listOrNull
            
            objects = makeList(cmds.ls(sl=True))+makeList(cmds.ls(hl=True))
            
            if len(objects)==0:
                raise MessageException("Nothing is selected")
            
            # execute stuff  
            try:
                cmds.waitCursor(state=True)
                cmds.ngSkinRelax(objects,**args)
            finally:
                cmds.waitCursor(state=False)
                
            Utils.refreshPaintWeightsTool()
            
        except MessageException,err:
            raise err
Esempio n. 36
0
def filterNonAnimatedCurves():
    
    curvesShown = cmds.animCurveEditor( 'graphEditor1GraphEd', query=True, curvesShown=True)
    
    if curvesShown:
        objsAttrs = getTarget("", curvesShown)
        cmds.selectionConnection( 'graphEditor1FromOutliner', e=True, clear=True)        
        
        cmds.waitCursor(state=True)
        
        for n, loopCurve in enumerate(curvesShown):
            keyValues    = cmds.keyframe(loopCurve, query=True, valueChange=True)
            if max(keyValues) != min(keyValues):
                cmds.selectionConnection('graphEditor1FromOutliner', edit=True, select="%s.%s"%(objsAttrs[0][n], objsAttrs[1][n]))
            
        #framePlaybackRange.framePlaybackRangeFn()    
        cmds.waitCursor(state=False)
Esempio n. 37
0
    def execRelax(self, *args):
        '''
            relax button click handler. this is where it actually 
            executes skin relax, whoop-tee-doo.
        '''
        try:

            args = {}
            args['numSteps'] = self.controls.numSteps.getValue()
            args['stepSize'] = self.controls.stepSize.getValue()
            
            # do we need soft selection?
            self.controls.softSelection.addToArgs(args)
            
                
            # do we need volume association?
            if self.controls.useVolumeAssociation.getValue():
                args['abv'] = 1
                args['avr'] = self.controls.volumeAssociationRadius.getValue()

            # add selection+highlight as arguments
            # we need highlight as second argument because
            # other meshes for simulation might be included only through highlight.
            #
            # This will never be an empty list as we tested for vertex selection available earlier
            def makeList(listOrNull):
                if listOrNull is None:
                    return []
                return listOrNull
            
            objects = makeList(cmds.ls(sl=True)) + makeList(cmds.ls(hl=True))
            
            if len(objects) == 0:
                raise MessageException("Nothing is selected")
            
            # execute stuff  
            try:
                cmds.waitCursor(state=True)
                cmds.ngSkinRelax(objects, **args)
            finally:
                cmds.waitCursor(state=False)
                
            Utils.refreshPaintWeightsTool()
            
        except MessageException, err:
            raise err
Esempio n. 38
0
	def installToolCage(self):
		# only if the user text field is not empty
		if (self.ui.le_userNames.text() != ""):
			# this is a delicate operation and needs confirmation
			answer = cmds.confirmDialog(t="Alert", message="The install operation has no undo, do you want to continue?", button=["Cancel", "Yes"], icon="warning")

			# if we choose to continue
			if answer == "Yes":
				# gets the password
				currPassword = self.ui.le_password.text()
				if currPassword == "":
					currPassword = None

				# lists for the success or error install users
				successUsers = []
				errorUsers = []

				# loops the users installing
				userNames = self.ui.le_userNames.text().split(" ")

				cmds.waitCursor(state=True)
				for usr in userNames:
					success = (deploy.installModToUser(usr, password=currPassword))
					
					if success: successUsers.append(usr)
					else: errorUsers.append(usr)
				cmds.waitCursor(state=False)

				message = ""

				if len(successUsers) > 0:
					message += "Installed successfully to:"
					for usr in successUsers:
						message += "\n" + usr
					if len(errorUsers) > 0: message += "\n\n"

				if len(errorUsers) > 0:
					message += "Error installing to:"
					for usr in errorUsers:
						message += "\n" + usr

				cmds.confirmDialog(t="Finished", message=message, button=["OK"], icon="information")

				self.ui.le_userNames.setText("")
				self.ui.le_password.setText("")
Esempio n. 39
0
def filterNonAnimatedCurves():

    curvesShown = cmds.animCurveEditor("graphEditor1GraphEd", query=True, curvesShown=True)

    if curvesShown:
        objsAttrs = getTarget("", curvesShown)
        cmds.selectionConnection("graphEditor1FromOutliner", e=True, clear=True)

        cmds.waitCursor(state=True)

        for n, loopCurve in enumerate(curvesShown):
            keyValues = cmds.keyframe(loopCurve, query=True, valueChange=True)
            if max(keyValues) != min(keyValues):
                cmds.selectionConnection(
                    "graphEditor1FromOutliner", edit=True, select="%s.%s" % (objsAttrs[0][n], objsAttrs[1][n])
                )

        # framePlaybackRange.framePlaybackRangeFn()
        cmds.waitCursor(state=False)
Esempio n. 40
0
def pythonScripts():

    if (cmds.menu('pythonScripts_menu', exists=True)):

        print("Removing old pythonScripts menu...")
        cmds.deleteUI('pythonScripts_menu')

    gMainWindow = maya.mel.eval('$temp1=$gMainWindow')
    gMainProgressBar = maya.mel.eval('$temp=$gMainProgressBar')

    mainDir = findFile('pythonScripts.py')

    timer = cmds.timerX()
    cmds.waitCursor(state=True)
    print ""

    cmds.progressBar(gMainProgressBar,
                     edit=True,
                     beginProgress=True,
                     isInterruptable=True,
                     status="Creating pythonScripts...",
                     maxValue=100)

    pMenu = (cmds.menu('pythonScripts_menu',
                       parent=gMainWindow,
                       tearOff=True,
                       aob=True,
                       label="pythonScripts"))

    gen_pythonScripts(mainDir, pMenu)

    cmds.waitCursor(state=False)

    endTime = cmds.timerX(startTime=timer)

    cmds.progressBar(
        gMainProgressBar,
        edit=True,
        endProgress=True,
    )

    print("pythonTools has now been updated in: " + str(endTime) +
          " seconds...!")
Esempio n. 41
0
	def createGIF(self):
		# builds the path
		playblastPath = "/jobs/" + self.ui.cb_job.currentText() + "/" + self.ui.cb_scene.currentText() + "/" + self.ui.cb_shot.currentText() + "/maya/playblasts/" + self.ui.cb_playblast.currentText()

		# open at end mode
		openAtEnd = None
		if self.ui.rb_firefox.isChecked(): openAtEnd = "firefox"
		elif self.ui.rb_folder.isChecked(): openAtEnd = "folder"

		answer = cmds.confirmDialog(t="Alert", message="This process could take a long depending on the number of frames, the background changing and the area of animation. Do you want to continue?", button=["Cancel", "Yes"], icon="warning")

		# if we choose to continue
		if answer == "Yes":
			# creates the gif
			cmds.waitCursor(state=True)
			gif.createGIFanimFromPlayblast(playblastPath, scale=(self.ui.sp_scale.value()/100.0), colors=(int(self.ui.cb_colors.currentText())), openAtEndMode=openAtEnd)
			cmds.waitCursor(state=False)

			# launches a finish message
			cmds.confirmDialog(t="msg", message="GIF animation finished.", button=["OK"])
Esempio n. 42
0
def nmpExtractWeights(cluster, joint, skinCluster, geoName):
    ''' Calculates the Weighting of Every Joint on Inderectly Connected Wrapped Geometry.
        Weight is Determined By Translating the Master Object and Calculating the Distance
        Changed in 3D Space on Every Vert. Returns list of list of [transform, value]'''
    verts = cmds.ls(geoName + '.vtx[*]', flatten=True)
    values      = []
    cmds.waitCursor( state=True )
    start = cmds.timerX()
    originalPos = [ cmds.xform(vert, q=True, ws=True, t=True) for vert in verts ]
    cmds.setAttr(cluster + '.tz', 1)
    deformPos   = [ cmds.xform(vert, q=True, ws=True, t=True) for vert in verts ]
    cmds.setAttr(cluster + '.tz', 0)
       
    for i in range(0,len(deformPos)):
        difference = [ deformPos[i][0]-originalPos[i][0], deformPos[i][1]-originalPos[i][1], deformPos[i][2]-originalPos[i][2] ]
        distance   = math.sqrt( pow(difference[0],2) + pow(difference[1],2) + pow(difference[2],2) )
        values.append([joint, distance])

    cmds.waitCursor( state=False )
    return values
Esempio n. 43
0
    def redraw(self, *args, **kwargs):
        """
        NOTE: depends on the LIST_CLASS being set in the actual class!
        """

        try:
            cmds.waitCursor(st=1)
            if self._scroll != 'not initialized':
                cmds.deleteUI(self._scroll)
                self._scroll = 'not initialized'
                self._list = 'not initialized'

            cmds.setParent(self)
            with layouts.ScrollLayout('_scroll',
                                      childResizable=True) as self._scroll:
                with self.LIST_CLASS('_list',
                                     **self.Redraw_Opts) as self._list:
                    for item in self.Collection:
                        w = self.Template.widget(item)
                        self.widget_added(w)
            cmds.setParent(self.parent)

            # unhook the delete handlers from these guys, they are closed
            # so they arent part of the ACTIVE_LAYOUT

            self._scroll.Deleted._handlers = set()
            self._list.Deleted._handlers = set()
            self._scroll.Deleted.kill()
            self._list.Deleted.kill()

            # remove them so they fall out of scope, but keep the new _scroll
            self.Controls = [self._scroll]
            self.layout()

        finally:
            cmds.waitCursor(st=0)
Esempio n. 44
0
def _cursorError( errorMessage ):
    cmds.waitCursor( state=False )
    cmds.error( errorMessage )
 def func(*args, **kwargs):
     cmd.waitCursor(state=True)
     try:
         return f(*args, **kwargs)
     finally:
         cmd.waitCursor(state=False)
Esempio n. 46
0
def tween(bias, nodes=None):
    """
    Create the in-between key(s) on the specified nodes
    """
    if isinstance(nodes, list) and not nodes:
        nodes = None
    # Find the current frame, where the new key will be added
    currenttime = mc.timeControl("timeControl1", q=True, ra=True)[0]
    # Figure out which nodes to pull from
    if nodes is not None:
        pullfrom = nodes
    else:
        pullfrom = mc.ls(sl=True)
        if not pullfrom:
            return
    # If attributes are selected, use them to build curve node list
    attributes = mc.channelBox("mainChannelBox", q=True, sma=True)
    if attributes:
        curves = []
        for attr in attributes:
            for node in pullfrom:
                fullnode = "%s.%s" % (node, attr)
                if not mc.objExists(fullnode):
                    continue
                tmp = mc.keyframe(fullnode, q=True, name=True)
                if not tmp:
                    continue
                curves += tmp
    # Otherwise get curves for all nodes
    else:
        curves = mc.keyframe(pullfrom, q=True, name=True)
    mc.waitCursor(state=True)
    # Wrap the main operation in a try/except to prevent the waitcursor from
    # sticking if something should fail
    try:
        # If we have no curves, force a list
        if curves is None:
            curves = []
        # Process all curves
        for curve in curves:
            # Find time for next and previous keys...
            time_prev = mc.findKeyframe(curve, which="previous")
            time_next = mc.findKeyframe(curve, which="next")
            # Find previous and next tangent types
            try:
                in_tan_prev = mc.keyTangent(curve,
                                            time=(time_prev, ),
                                            q=True,
                                            itt=True)[0]
                out_tan_prev = mc.keyTangent(curve,
                                             time=(time_prev, ),
                                             q=True,
                                             ott=True)[0]
                in_tan_next = mc.keyTangent(curve,
                                            time=(time_next, ),
                                            q=True,
                                            itt=True)[0]
                out_tan_next = mc.keyTangent(curve,
                                             time=(time_next, ),
                                             q=True,
                                             ott=True)[0]
            # Workaround for keyTangent error in Maya 2016 Extension 2
            except RuntimeError:
                in_tan_prev = mel.eval("keyTangent -time %s -q -itt %s" %
                                       (time_prev, curve))[0]
                out_tan_prev = mel.eval("keyTangent -time %s -q -ott %s" %
                                        (time_prev, curve))[0]
                in_tan_next = mel.eval("keyTangent -time %s -q -itt %s" %
                                       (time_next, curve))[0]
                out_tan_next = mel.eval("keyTangent -time %s -q -ott %s" %
                                        (time_next, curve))[0]
            # Set new in and out tangent types
            in_tan_new = out_tan_prev
            out_tan_new = in_tan_next
            # However, if any of the types (previous or next) is "fixed",
            # use the global (default) tangent instead
            if "fixed" in [
                    in_tan_prev, out_tan_prev, in_tan_next, out_tan_next
            ]:
                in_tan_new = mc.keyTangent(q=True, g=True, itt=True)[0]
                out_tan_new = mc.keyTangent(q=True, g=True, ott=True)[0]
            elif out_tan_next == "step":
                out_tan_new = out_tan_next
            # Find previous and next key values
            value_prev = mc.keyframe(curve,
                                     time=(time_prev, ),
                                     q=True,
                                     valueChange=True)[0]
            value_next = mc.keyframe(curve,
                                     time=(time_next, ),
                                     q=True,
                                     valueChange=True)[0]
            value_new = value_prev + ((value_next - value_prev) * bias)
            # Set new keyframe and tangents
            mc.setKeyframe(curve,
                           t=(currenttime, ),
                           v=value_new,
                           ott=out_tan_new)
            if in_tan_new != "step":
                mc.keyTangent(curve, t=(currenttime, ), itt=in_tan_new)
            # If we're using the special tick, set that appropriately
            if SETTINGS["use_special_tick"]:
                mc.keyframe(curve, tds=True, t=(currenttime, ))
    except:
        raise
    finally:
        mc.waitCursor(state=False)
        mc.currentTime(currenttime)
        mel.eval("global string $gMainWindow;")
        windowname = mel.eval("$temp = $gMainWindow")
        mc.setFocus(windowname)
Esempio n. 47
0
    def setTween(self, percent, *args):

        #utilMod.timer("s")

        G.TM_lastTweenCommand = "self.setTween(%s)" % percent

        getCurves = animMod.getAnimCurves()
        animCurves = getCurves[0]
        getFrom = getCurves[1]

        if animCurves:
            status = "aTools - Tween Machine..."
            utilMod.startProgressBar(status)
            totalSteps = len(animCurves)
            firstStep = 0
            thisStep = 0
            estimatedTime = None
            startChrono = None

            cmds.waitCursor(state=True)
            cmds.refresh(suspend=True)

            keysSel = animMod.getTarget("keysSel", animCurves, getFrom)
            keyTimes = animMod.getTarget("keyTimes", animCurves)
            timelineTime = None
            #keysSelMerged   = utilMod.mergeLists(keysSel)

            # reverse order to get ease in and out smoothly
            if 0 < percent <= 50 or percent == 100:
                for loopVal in keysSel:
                    loopVal.reverse()

            #utilMod.timer()
            """
            if len(keysSelMerged) == 0: 
                if not timelineTime: timelineTime = [animMod.getTimelineTime()]
                cmds.setKeyframe(animCurves, time=timelineTime[0])
            elif len(keysSelMerged) == 1: 
                cmds.setKeyframe(animCurves, time=keysSelMerged[0])
            """

            for thisStep, loopCurve in enumerate(animCurves):

                if cmds.progressBar(G.progBar, query=True, isCancelled=True):
                    utilMod.setProgressBar(endProgress=True)
                    break

                startChrono = utilMod.chronoStart(startChrono, firstStep,
                                                  thisStep, totalSteps,
                                                  estimatedTime, status)

                if not keysSel[thisStep]:
                    if not timelineTime:
                        timelineTime = [animMod.getTimelineTime()]
                    time = timelineTime
                else:
                    time = [(loopTime, loopTime)
                            for loopTime in keysSel[thisStep]]
                    # if all keys selected, use timeline time instead
                    if len(time) == len(keyTimes[thisStep]):
                        if not timelineTime:
                            timelineTime = [animMod.getTimelineTime()]
                        time = timelineTime

                for loopTime in time:

                    prevKeyTime = cmds.findKeyframe(loopCurve,
                                                    time=loopTime,
                                                    which="previous")
                    nextKeyTime = cmds.findKeyframe(loopCurve,
                                                    time=loopTime,
                                                    which="next")

                    if prevKeyTime == nextKeyTime and prevKeyTime != loopTime[
                            0] and percent != "linear_next" and percent != "linear_prev":  # if there is no previous or next key and at least one key
                        cmds.setKeyframe(loopCurve, time=loopTime)

                    elif prevKeyTime != time[0]:

                        if percent == "linear_prev":

                            prevKeyTime = nextKeyTime
                            nextKeyTime = cmds.findKeyframe(loopCurve,
                                                            time=(prevKeyTime,
                                                                  prevKeyTime),
                                                            which="next")
                            prevKeyVal = cmds.keyframe(loopCurve,
                                                       query=True,
                                                       time=(prevKeyTime,
                                                             prevKeyTime),
                                                       valueChange=True)[0]
                            nextKeyVal = cmds.keyframe(loopCurve,
                                                       query=True,
                                                       time=(nextKeyTime,
                                                             nextKeyTime),
                                                       valueChange=True)[0]

                            if nextKeyTime == prevKeyTime:
                                value = prevKeyVal
                            else:
                                value = prevKeyVal + (
                                    (nextKeyVal - prevKeyVal) /
                                    (nextKeyTime - prevKeyTime) *
                                    (loopTime[0] - prevKeyTime))

                        elif percent == "linear_next":

                            nextKeyTime = prevKeyTime
                            prevKeyTime = cmds.findKeyframe(loopCurve,
                                                            time=(nextKeyTime,
                                                                  nextKeyTime),
                                                            which="previous")
                            prevKeyVal = cmds.keyframe(loopCurve,
                                                       query=True,
                                                       time=(prevKeyTime,
                                                             prevKeyTime),
                                                       valueChange=True)[0]
                            nextKeyVal = cmds.keyframe(loopCurve,
                                                       query=True,
                                                       time=(nextKeyTime,
                                                             nextKeyTime),
                                                       valueChange=True)[0]

                            if nextKeyTime == prevKeyTime:
                                value = prevKeyVal
                            else:
                                value = prevKeyVal + (
                                    (nextKeyVal - prevKeyVal) /
                                    (nextKeyTime - prevKeyTime) *
                                    (loopTime[0] - prevKeyTime))

                        else:

                            animMod.eulerFilterCurve([loopCurve])

                            prevKeyVal = cmds.keyframe(loopCurve,
                                                       query=True,
                                                       time=(prevKeyTime,
                                                             prevKeyTime),
                                                       valueChange=True)[0]
                            nextKeyVal = cmds.keyframe(loopCurve,
                                                       query=True,
                                                       time=(nextKeyTime,
                                                             nextKeyTime),
                                                       valueChange=True)[0]

                            #print "prevKeyVal", prevKeyVal, nextKeyVal

                            #if prevKeyVal == nextKeyVal:
                            #if not time[0] in keysSel[thisStep]: cmds.setKeyframe(loopCurve, time=loopTime)
                            #continue

                            if percent == "linear":
                                value = prevKeyVal + (
                                    (nextKeyVal - prevKeyVal) /
                                    (nextKeyTime - prevKeyTime) *
                                    (loopTime[0] - prevKeyTime))
                            else:
                                value = ((nextKeyVal - prevKeyVal) / 100. *
                                         percent) + prevKeyVal

                        tangentType = cmds.keyTangent(loopCurve,
                                                      query=True,
                                                      outTangentType=True,
                                                      time=(prevKeyTime,
                                                            prevKeyTime))[0]
                        inTangentType = tangentType.replace("fixed",
                                                            "auto").replace(
                                                                "step", "auto")
                        outTangentType = tangentType.replace("fixed", "auto")

                        if not time[0] in keysSel[thisStep]:
                            cmds.setKeyframe(loopCurve, time=loopTime)

                        cmds.keyframe(loopCurve,
                                      edit=True,
                                      time=loopTime,
                                      valueChange=value)
                        cmds.keyTangent(loopCurve,
                                        edit=True,
                                        time=loopTime,
                                        inTangentType=inTangentType,
                                        outTangentType=outTangentType)
                        #keycolor
                        if 1 <= percent <= 99 or percent == "linear":
                            cmds.keyframe(
                                loopCurve,
                                edit=True,
                                time=loopTime,
                                tickDrawSpecial=self.getColoredKeys())

                    if getFrom == "graphEditor":
                        #curvesToSelect.append([loopCurve, loopTime])
                        cmds.selectKey(loopCurve, addTo=True, time=loopTime)

                estimatedTime = utilMod.chronoEnd(startChrono, firstStep,
                                                  thisStep, totalSteps)

            #utilMod.timer()
            """
            #APPLY        
            if len(curvesToKey) > 0: cmds.setKeyframe(curvesToKey)
            
            for loopVar in curvesToValue: 
                cmds.keyframe(loopVar[0], edit=True, time=loopVar[1], valueChange=loopVar[2])
                cmds.keyTangent(loopVar[0], edit=True, time=loopVar[1], inTangentType=loopVar[3], outTangentType=loopVar[4])
                      
            for loopVar in curvesToColor:  cmds.keyframe(loopVar[0], edit=True, time=loopVar[1], tickDrawSpecial=self.getColoredKeys())        
            for loopVar in curvesToSelect: cmds.selectKey(loopVar[0], addTo=True, time=loopVar[1])
            """

            cmds.refresh(suspend=False)
            cmds.waitCursor(state=False)
            utilMod.setProgressBar(endProgress=True)
Esempio n. 48
0
	def __enter__(self):
		cmds.undoInfo(openChunk=True, chunkName=self.name)
		cmds.waitCursor(state=True)
		cmds.refresh(suspend =True)
Esempio n. 49
0
 def applyMirror(self, pasteAndCycle=False):
 
     cmds.waitCursor(state=True) 
     
     range       = animMod.getTimelineRange()
     range[1]    = int(range[1])
     total       = range[1]-range[0]
     
     getCurves   = animMod.getAnimCurves()
     animCurves  = getCurves[0]
     getFrom     = getCurves[1] 
     
     invertRules = self.getInvertRules()
     
     if animCurves:
         status          = "aTools - Applying mirror..."
         utilMod.startProgressBar(status)
         totalSteps      = len(animCurves)           
         firstStep       = 0
         thisStep        = 0
         estimatedTime   = None
         startChrono     = None
         
         mirrorCurves        = animMod.getMirrorObjs(animCurves)
         keyValues           = animMod.getTarget("keyValues", animCurves, getFrom)
         keyTimes            = animMod.getTarget("keyTimes", animCurves, getFrom)
         currValues          = animMod.getTarget("currValues", animCurves, getFrom)
         keysIndexSel        = animMod.getTarget("keysIndexSel", animCurves, getFrom)
         keyTangentsAngle    = animMod.getTarget("keyTangentsAngle", animCurves, getFrom)
         keyTangentsType     = animMod.getTarget("keyTangentsType", animCurves, getFrom)
         currTime            = cmds.currentTime(query=True)
         
         
         
         if keysIndexSel:
             
             #create dummy key
             #objects     = animMod.getObjsSel()
             #mirrorObjs  = animMod.getMirrorObjs(objects)
             #animMod.createDummyKey(mirrorObjs)
                             
             for thisStep, aCurve in enumerate(animCurves):
                 
                 startChrono     = utilMod.chronoStart(startChrono, firstStep, thisStep, totalSteps, estimatedTime, status)
                 
                 mCurve              = mirrorCurves[thisStep]
                 isCenterCurve       = (mCurve == None)                
                 mirrorInvertValue   = self.mirrorInvert(aCurve, isCenterCurve, invertRules)
                 if mCurve and cmds.objExists(mCurve):
                     tCurve = mCurve
                 else:
                     tCurve = aCurve
                     
                 if not cmds.objExists(tCurve): continue
                        
                 
                 animMod.createDummyKey([tCurve])
                 
                 if len(keysIndexSel[thisStep]) > 0:
                     #delete keys
                     cmds.cutKey(tCurve, time=(keyTimes[thisStep][keysIndexSel[thisStep][0]],keyTimes[thisStep][keysIndexSel[thisStep][-1]]), clear=True) 
                 
                     for key in keysIndexSel[thisStep]:
                         keyValue            = keyValues[thisStep][key] * mirrorInvertValue
                         inTangAngleValue    = keyTangentsAngle[thisStep][key][0] * mirrorInvertValue
                         outTangAngleValue   = keyTangentsAngle[thisStep][key][1] * mirrorInvertValue
                            
                         
                         #apply keys
                         if pasteAndCycle:
                             t = keyTimes[thisStep][key] + (total/2.)
                             
                             if t == range[1]:
                                 #repeat key at first frame
                                 t1 = t-total
                                 time = (t1,t1)
                                 cmds.setKeyframe(tCurve, time=time, value=keyValue)
                                 cmds.keyTangent(tCurve,  time=time, inAngle=inTangAngleValue, outAngle=outTangAngleValue)
                                 cmds.keyTangent(tCurve,  time=time, inTangentType=keyTangentsType[thisStep][key][0], outTangentType=keyTangentsType[thisStep][key][1])
                                            
                             elif t > range[1]:
                                 #fist half
                                 t -= total
                             
                             time        = (t,t)
                             
                             
                             
                         else:
                             time        = (keyTimes[thisStep][key],keyTimes[thisStep][key])
                             
                         
                             
                         cmds.setKeyframe(tCurve, time=time, value=keyValue)
                         cmds.keyTangent(tCurve,  time=time, inAngle=inTangAngleValue, outAngle=outTangAngleValue)
                         cmds.keyTangent(tCurve,  time=time, inTangentType=keyTangentsType[thisStep][key][0], outTangentType=keyTangentsType[thisStep][key][1])
                 else: #no keys#invert translate x
                     keyValue = currValues[thisStep] * mirrorInvertValue
                        
                     
                     #apply keys
                     cmds.setKeyframe(tCurve, time=(currTime,currTime), value=keyValue)
                     
                 animMod.deleteDummyKey([tCurve]) 
                 
                 estimatedTime = utilMod.chronoEnd(startChrono, firstStep, thisStep, totalSteps)        
                 
                     
             #delete dummy key
             #animMod.deleteDummyKey(mirrorObjs)
         
         self.selectMirrorObjs(False)
         utilMod.setProgressBar(endProgress=True)
                        
     animMod.refresh()
     cmds.waitCursor(state=False) 
Esempio n. 50
0
 def allCharacterName(self, *args):
     nowCharacter = self.whatCharacter()
     preffixTextNow = self.prexText()
     if nowCharacter == 'Peony_1':
         mc.waitCursor(state=1)
         self.allControlsZero()
         self._angle60(preffixTextNow)
         self.browOnly(preffixTextNow)
         self.ikOrFk(preffixTextNow)
         mc.waitCursor(state=0)
     elif nowCharacter == 'Poppymaster_2' or nowCharacter == 'Chen_1':
         mc.waitCursor(state=1)
         self.allControlsZero()
         self.only60Angle(preffixTextNow)
         self.browOnly(preffixTextNow)
         self.ikOrFk(preffixTextNow)
         mc.waitCursor(state=0)
     elif nowCharacter == 'King_3':
         mc.waitCursor(state=1)
         self.allControlsZero()
         self.king70Angle(preffixTextNow)
         self.browOnly(preffixTextNow)
         self.ikOrFk(preffixTextNow)
         mc.waitCursor(state=0)
     elif nowCharacter == 'Queen_4' or nowCharacter == 'ChenMother_2':
         mc.waitCursor(state=1)
         self.allControlsZero()
         self.queen60Angle(preffixTextNow)
         self.browOnly(preffixTextNow)
         self.ikOrFk(preffixTextNow)
         mc.waitCursor(state=0)
     elif nowCharacter == 'Solider_5':
         mc.waitCursor(state=1)
         self.allControlsZero()
         self.solider60Angle(preffixTextNow)
         self.browOnly(preffixTextNow)
         self.ikOrFk(preffixTextNow)
         mc.waitCursor(state=0)
     elif nowCharacter == 'Lpeony_6' or nowCharacter == 'ChenFather_3':
         mc.waitCursor(state=1)
         self.allControlsZero()
         self.browOnly(preffixTextNow)
         self.ikOrFk(preffixTextNow)
         mc.waitCursor(state=0)
     elif nowCharacter == 'Plum_7':
         mc.waitCursor(state=1)
         self.allControlsZero()
         self.plum60Angle(preffixTextNow)
         self.browOnly(preffixTextNow)
         self.ikOrFk(preffixTextNow)
         mc.waitCursor(state=0)
Esempio n. 51
0
 def __enter__(self):
     cmds.waitCursor(state=True)
Esempio n. 52
0
 def end(self):
     """Mark the progress as ended"""
     mc.progressBar(self.mMainProgressBar, edit=True, endProgress=True)
     mc.waitCursor(state=False)
Esempio n. 53
0
 def __exit__(self, exc_type, exc_val, exc_tb):
     if cmds.waitCursor(q=True, state=True): cmds.waitCursor(state=False)
Esempio n. 54
0
	def func( *args, **kwargs ):
		cmd.waitCursor( state=True )
		try:
			return f( *args, **kwargs )
		finally:
			cmd.waitCursor( state=False )
Esempio n. 55
0
def wait(value) :
    m.waitCursor(state=value)
Esempio n. 56
0
    def applyMirror(self, pasteAndCycle=False):

        cmds.waitCursor(state=True)

        range = animMod.getTimelineRange()
        range[1] = int(range[1])
        total = range[1] - range[0]

        getCurves = animMod.getAnimCurves()
        animCurves = getCurves[0]
        getFrom = getCurves[1]

        invertRules = self.getInvertRules()

        if animCurves:
            status = "aTools - Applying mirror..."
            utilMod.startProgressBar(status)
            totalSteps = len(animCurves)
            firstStep = 0
            thisStep = 0
            estimatedTime = None
            startChrono = None

            mirrorCurves = animMod.getMirrorObjs(animCurves)
            keyValues = animMod.getTarget("keyValues", animCurves, getFrom)
            keyTimes = animMod.getTarget("keyTimes", animCurves, getFrom)
            currValues = animMod.getTarget("currValues", animCurves, getFrom)
            keysIndexSel = animMod.getTarget("keysIndexSel", animCurves,
                                             getFrom)
            keyTangentsAngle = animMod.getTarget("keyTangentsAngle",
                                                 animCurves, getFrom)
            keyTangentsType = animMod.getTarget("keyTangentsType", animCurves,
                                                getFrom)
            currTime = cmds.currentTime(query=True)

            if keysIndexSel:

                #create dummy key
                #objects     = animMod.getObjsSel()
                #mirrorObjs  = animMod.getMirrorObjs(objects)
                #animMod.createDummyKey(mirrorObjs)

                for thisStep, aCurve in enumerate(animCurves):

                    startChrono = utilMod.chronoStart(startChrono, firstStep,
                                                      thisStep, totalSteps,
                                                      estimatedTime, status)

                    mCurve = mirrorCurves[thisStep]
                    isCenterCurve = (mCurve == None)
                    mirrorInvertValue = self.mirrorInvert(
                        aCurve, isCenterCurve, invertRules)
                    if mCurve and cmds.objExists(mCurve):
                        tCurve = mCurve
                    else:
                        tCurve = aCurve

                    if not cmds.objExists(tCurve): continue

                    animMod.createDummyKey([tCurve])

                    if len(keysIndexSel[thisStep]) > 0:
                        #delete keys
                        cmds.cutKey(
                            tCurve,
                            time=(
                                keyTimes[thisStep][keysIndexSel[thisStep][0]],
                                keyTimes[thisStep][keysIndexSel[thisStep][-1]]
                            ),
                            clear=True)

                        for key in keysIndexSel[thisStep]:
                            keyValue = keyValues[thisStep][
                                key] * mirrorInvertValue
                            inTangAngleValue = keyTangentsAngle[thisStep][key][
                                0] * mirrorInvertValue
                            outTangAngleValue = keyTangentsAngle[thisStep][
                                key][1] * mirrorInvertValue

                            #apply keys
                            if pasteAndCycle:
                                t = keyTimes[thisStep][key] + (total / 2.)

                                if t == range[1]:
                                    #repeat key at first frame
                                    t1 = t - total
                                    time = (t1, t1)
                                    cmds.setKeyframe(tCurve,
                                                     time=time,
                                                     value=keyValue)
                                    cmds.keyTangent(tCurve,
                                                    time=time,
                                                    inAngle=inTangAngleValue,
                                                    outAngle=outTangAngleValue)
                                    cmds.keyTangent(
                                        tCurve,
                                        time=time,
                                        inTangentType=keyTangentsType[thisStep]
                                        [key][0],
                                        outTangentType=keyTangentsType[
                                            thisStep][key][1])

                                elif t > range[1]:
                                    #fist half
                                    t -= total

                                time = (t, t)

                            else:
                                time = (keyTimes[thisStep][key],
                                        keyTimes[thisStep][key])

                            cmds.setKeyframe(tCurve, time=time, value=keyValue)
                            cmds.keyTangent(tCurve,
                                            time=time,
                                            inAngle=inTangAngleValue,
                                            outAngle=outTangAngleValue)
                            cmds.keyTangent(
                                tCurve,
                                time=time,
                                inTangentType=keyTangentsType[thisStep][key]
                                [0],
                                outTangentType=keyTangentsType[thisStep][key]
                                [1])
                    else:  #no keys#invert translate x
                        keyValue = currValues[thisStep] * mirrorInvertValue

                        #apply keys
                        cmds.setKeyframe(tCurve,
                                         time=(currTime, currTime),
                                         value=keyValue)

                    animMod.deleteDummyKey([tCurve])

                    estimatedTime = utilMod.chronoEnd(startChrono, firstStep,
                                                      thisStep, totalSteps)

                #delete dummy key
                #animMod.deleteDummyKey(mirrorObjs)

            self.selectMirrorObjs(False)
            utilMod.setProgressBar(endProgress=True)

        animMod.refresh()
        cmds.waitCursor(state=False)
Esempio n. 57
0
    def setTween(self, percent, *args):

        #utilMod.timer("s")


        G.TM_lastTweenCommand = "self.setTween(%s)"%percent

        getCurves   = animMod.getAnimCurves()
        animCurves  = getCurves[0]
        getFrom     = getCurves[1]

        if animCurves:
            status          = "aTools - Tween Machine..."
            utilMod.startProgressBar(status)
            totalSteps      = len(animCurves)
            firstStep       = 0
            thisStep        = 0
            estimatedTime   = None
            startChrono     = None

            cmds.waitCursor(state=True)
            cmds.refresh(suspend=True)


            keysSel         = animMod.getTarget("keysSel", animCurves, getFrom)
            keyTimes        = animMod.getTarget("keyTimes", animCurves)
            timelineTime    = None
            #keysSelMerged   = utilMod.mergeLists(keysSel)



            # reverse order to get ease in and out smoothly
            if 0 < percent <= 50 or percent == 100:
                for loopVal in keysSel:
                    loopVal.reverse()

            #utilMod.timer()

            """
            if len(keysSelMerged) == 0:
                if not timelineTime: timelineTime = [animMod.getTimelineTime()]
                cmds.setKeyframe(animCurves, time=timelineTime[0])
            elif len(keysSelMerged) == 1:
                cmds.setKeyframe(animCurves, time=keysSelMerged[0])
            """


            for thisStep, loopCurve in enumerate(animCurves):

                if cmds.progressBar(G.progBar, query=True, isCancelled=True ):
                    utilMod.setProgressBar(endProgress=True)
                    break

                startChrono     = utilMod.chronoStart(startChrono, firstStep, thisStep, totalSteps, estimatedTime, status)

                if not keysSel[thisStep]:
                    if not timelineTime: timelineTime = [animMod.getTimelineTime()]
                    time = timelineTime
                else:
                    time = [(loopTime,loopTime) for loopTime in keysSel[thisStep]]
                    # if all keys selected, use timeline time instead
                    if len(time) == len(keyTimes[thisStep]):
                        if not timelineTime: timelineTime = [animMod.getTimelineTime()]
                        time = timelineTime



                for loopTime in time:


                    prevKeyTime    = cmds.findKeyframe(loopCurve, time=loopTime, which="previous")
                    nextKeyTime    = cmds.findKeyframe(loopCurve, time=loopTime, which="next")

                    if prevKeyTime == nextKeyTime and prevKeyTime != loopTime[0] and percent != "linear_next" and percent != "linear_prev": # if there is no previous or next key and at least one key
                        cmds.setKeyframe(loopCurve, time=loopTime)

                    elif prevKeyTime != time[0]:

                        if percent == "linear_prev":

                            prevKeyTime     = nextKeyTime
                            nextKeyTime     = cmds.findKeyframe(loopCurve, time=(prevKeyTime,prevKeyTime), which="next")
                            prevKeyVal      = cmds.keyframe(loopCurve, query=True, time=(prevKeyTime, prevKeyTime), valueChange=True)[0]
                            nextKeyVal      = cmds.keyframe(loopCurve, query=True, time=(nextKeyTime, nextKeyTime), valueChange=True)[0]

                            if nextKeyTime == prevKeyTime:
                                value       = prevKeyVal
                            else:
                                value       = prevKeyVal + ((nextKeyVal - prevKeyVal)/(nextKeyTime - prevKeyTime)*(loopTime[0] - prevKeyTime))

                        elif percent == "linear_next":

                            nextKeyTime     = prevKeyTime
                            prevKeyTime     = cmds.findKeyframe(loopCurve, time=(nextKeyTime,nextKeyTime), which="previous")
                            prevKeyVal      = cmds.keyframe(loopCurve, query=True, time=(prevKeyTime, prevKeyTime), valueChange=True)[0]
                            nextKeyVal      = cmds.keyframe(loopCurve, query=True, time=(nextKeyTime, nextKeyTime), valueChange=True)[0]

                            if nextKeyTime == prevKeyTime:
                                value       = prevKeyVal
                            else:
                                value       = prevKeyVal + ((nextKeyVal - prevKeyVal)/(nextKeyTime - prevKeyTime)*(loopTime[0] - prevKeyTime))

                        else:

                            animMod.eulerFilterCurve([loopCurve])

                            prevKeyVal = cmds.keyframe(loopCurve, query=True, time=(prevKeyTime, prevKeyTime), valueChange=True)[0]
                            nextKeyVal = cmds.keyframe(loopCurve, query=True, time=(nextKeyTime, nextKeyTime), valueChange=True)[0]

                            #print "prevKeyVal", prevKeyVal, nextKeyVal

                            #if prevKeyVal == nextKeyVal:
                                #if not time[0] in keysSel[thisStep]: cmds.setKeyframe(loopCurve, time=loopTime)
                                #continue


                            if percent == "linear": value  = prevKeyVal + ((nextKeyVal - prevKeyVal)/(nextKeyTime - prevKeyTime)*(loopTime[0] - prevKeyTime))
                            else:                   value  = ((nextKeyVal-prevKeyVal)/100.*percent)+prevKeyVal


                        tangentType     = cmds.keyTangent(loopCurve, query=True, outTangentType=True, time=(prevKeyTime,prevKeyTime))[0]
                        inTangentType   = tangentType.replace("fixed", "auto").replace("step", "auto")
                        outTangentType  = tangentType.replace("fixed", "auto")

                        if not time[0] in keysSel[thisStep]: cmds.setKeyframe(loopCurve, time=loopTime)

                        cmds.keyframe(loopCurve, edit=True, time=loopTime, valueChange=value)
                        cmds.keyTangent(loopCurve, edit=True, time=loopTime, inTangentType=inTangentType, outTangentType=outTangentType)
                        #keycolor
                        if 1 <= percent <= 99 or percent == "linear": cmds.keyframe(loopCurve ,edit=True,time=loopTime, tickDrawSpecial=self.getColoredKeys())



                    if getFrom == "graphEditor":
                        #curvesToSelect.append([loopCurve, loopTime])
                        cmds.selectKey(loopCurve, addTo=True, time=loopTime)


                estimatedTime = utilMod.chronoEnd(startChrono, firstStep, thisStep, totalSteps)

            #utilMod.timer()
            """
            #APPLY
            if len(curvesToKey) > 0: cmds.setKeyframe(curvesToKey)

            for loopVar in curvesToValue:
                cmds.keyframe(loopVar[0], edit=True, time=loopVar[1], valueChange=loopVar[2])
                cmds.keyTangent(loopVar[0], edit=True, time=loopVar[1], inTangentType=loopVar[3], outTangentType=loopVar[4])

            for loopVar in curvesToColor:  cmds.keyframe(loopVar[0], edit=True, time=loopVar[1], tickDrawSpecial=self.getColoredKeys())
            for loopVar in curvesToSelect: cmds.selectKey(loopVar[0], addTo=True, time=loopVar[1])
            """


            cmds.refresh(suspend=False)
            cmds.waitCursor(state=False)
            utilMod.setProgressBar(endProgress=True)