Esempio n. 1
0
	def setAnimationFPS(self, fps, changeType=constants.FPSChangeType.Seconds, callback=None):
		""" Updates the scene's fps to the provided value and scales existing keys as specified.
		StudioMax Note: If you have any code that you need to run after changing the fps and plan to use it in
			3dsMax you will need to pass that code into the callback argument.
		Maya Note: Maya only supports specific fps settings. If you provide it with a value it doesn't understand,
			it will be set to the closest matching value. See MayaScene._timeUnitToFPS for valid values.
		:param fps: The FPS value to set.
		:param changeType: <constants.FPSChangeType> Defaults to constants.FPSChangeType.Frames
		:param callback: <funciton> Code called after the fps is changed.
		:return: bool success
		"""
		# Maya doesn't appear to allow you to set the fps to a specific value,
		# so we attempt to find a exact match in our _timeUnitToConst dictonary
		name = self._timeUnitToConst.get(fps)
		if not name:
			# If there isn't a exact match, find the value closest to the requested fps.
			closest = min(self._timeUnitToConst, key=lambda x: abs(x - fps))
			name = self._timeUnitToConst[closest]
		# Only update the fps if the value is different
		if name != self._currentTimeUnit():
			# Only update animation if Seconds is specified
			updateAnimation = changeType == constants.FPSChangeType.Seconds
			cmds.currentUnit(time=name, updateAnimation=updateAnimation)
		if callback:
			callback()
		return True
Esempio n. 2
0
	def pressFunction(self):
		self.attribute = self.history[-1] + Cache.currentAttribute # re-init the attribute in case cached has been switched
		self.modifier = cmds.draggerContext( 'dragTool', query=True, modifier=True)
		self.button = cmds.draggerContext('dragTool', query = True, button=True)
		self.attributeValue = cmds.getAttr( self.attribute )
		if cmds.currentUnit( query=True, linear=True ) == 'cm':
			self.speed = .01 # modifier for speed traveled through values while dragging
		elif cmds.currentUnit( query=True, linear=True ) == 'm':
			self.speed = .001 # modifier for speed traveled through values while dragging
		else:
			self.speed = .0001
		self.space = 'screen' # initialize the variable
		if isinstance(self.attributeValue, list): # only edit the space based on button if the attribute is a list value
			# If left click is used, then the space is set to (X,Y,Z) world based
			# If middle click is used, space is set to (X, Y) screen based
			if self.button == 1: # left button
				self.space = 'world' # tracking space used
				cmds.draggerContext( 'dragTool', edit=True, space = 'world')
			elif self.button == 2: # middle button
				self.space = 'screen' # tracking space used
				cmds.draggerContext( 'dragTool', edit=True, space = 'screen')
		else: # set to 'screen' as default if the attr isn't a list value
			cmds.draggerContext( 'dragTool', edit=True, space = 'screen')
		if self.modifier == 'ctrl':
			self.speed = self.speed * .01
		if self.modifier == 'shift':
			self.speed = self.speed * 10
		if len(self.dragDirection) > 0:
			self.dragDirection = []
Esempio n. 3
0
    def test_bwav_handler(self):
        '''
        test the bwav handler and formatting of the data
        '''
        assert self.audioNode.isBwav()
        # print self.audioNode.bwav_timecodeFormatted()
        cmds.currentUnit(time='ntscf')
        assert r9General.getCurrentFPS() == 60
        print 'ntscf' , self.audioNode.bwav_timecodeFormatted()
        assert self.audioNode.bwav_timecodeFormatted() == '01:26:04:11'
        cmds.currentUnit(time='pal')
        assert r9General.getCurrentFPS() == 25
        # print 'pal : ', self.audioNode.bwav_timecodeFormatted()
        assert self.audioNode.bwav_timecodeFormatted() == '01:26:04:05'
        # print self.audioNode.bwav_timecodeFormatted(smpte=False)
        assert self.audioNode.bwav_timecodeFormatted(smpte=False) == '01:26:04:172'
        assert self.audioNode.bwav_timecodeReference() == 227739993
        assert self.audioNode.bwav_timecodeMS() == 5164172.1768707484

        # need to get the bWav header to bind it to the var
        self.audioNode.bwav_getHeader()
        assert self.audioNode.bwav_HeaderData == {'AudioFormat': 0,
                                                 'BextVersion': 0,
                                                 'BitsPerSample': 0,
                                                 'ChunkSize': 732516,
                                                 'Description': 'This is a unitTest file for validating the Red9 broadcast wav extraction of metaData',
                                                 'Format': 'WAVE',
                                                 'InternalFormat': 'fmt ',
                                                 'OriginationDate': '2014-03-03',
                                                 'OriginationTime': '10:00:00',
                                                 'Originator': 'Pro Tools',
                                                 'OriginatorReference': 'ffgDDffdhgff',
                                                 'Subchunk1Size': 16,
                                                 'TimeReference': 227739993,
                                                 'TimeReferenceHigh': 0}
Esempio n. 4
0
    def restoreSettings(self):
        '''
        restore all UI settings
        '''
        cmds.autoKeyframe(state=self.dataStore['autoKey'])

        # timeline management
        cmds.currentTime(self.dataStore['currentTime'])
        cmds.playbackOptions(min=self.dataStore['minTime'])
        cmds.playbackOptions(max=self.dataStore['maxTime'])
        cmds.playbackOptions(ast=self.dataStore['startTime'])
        cmds.playbackOptions(aet=self.dataStore['endTime'])
        cmds.playbackOptions(ps=self.dataStore['playSpeed'])
        cmds.playbackOptions(loop=self.dataStore['playLoop'])

        # unit management
        cmds.currentUnit(time=self.dataStore['timeUnit'])
        cmds.currentUnit(linear=self.dataStore['sceneUnits'])
        if not cmds.upAxis(axis=True, q=True) == self.dataStore['upAxis']:
            cmds.upAxis(axis=self.dataStore['upAxis'])

        log.debug('Restored PlayBack / Timeline setup')

        # viewport colors
        cmds.displayPref(displayGradient=self.dataStore['displayGradient'])
        cmds.displayRGBColor(resetToSaved=True)

        # objects colors
        cmds.displayColor("curve", self.dataStore['curvecolor'], dormant=True)

        # panel management
        for panel, data in self.dataStore['panelStore'].items():
            try:
                cmdString = data['settings'].replace('$editorName', panel)
                mel.eval(cmdString)
                log.debug("Restored Panel Settings Data >> %s" % panel)
                mel.eval('lookThroughModelPanel("%s","%s")' % (data['activeCam'], panel))
                log.debug("Restored Panel Active Camera Data >> %s >> cam : %s" % (panel, data['activeCam']))
            except:
                log.debug("Failed to fully Restore ActiveCamera Data >> %s >> cam : %s" % (panel, data['activeCam']))

        # camera management
        for cam, settings in self.dataStore['cameraTransforms'].items():
            try:
                cmds.setAttr('%s.translate' % cam, settings[0][0][0], settings[0][0][1], settings[0][0][2])
                cmds.setAttr('%s.rotate' % cam, settings[1][0][0], settings[1][0][1], settings[1][0][2])
                cmds.setAttr('%s.scale' % cam, settings[2][0][0], settings[2][0][1], settings[2][0][2])
                log.debug('Restored Default Camera Transform Data : % s' % cam)
            except:
                log.debug("Failed to fully Restore Default Camera Transform Data : % s" % cam)

        # sound management
        if self.dataStore['displaySound']:
            cmds.timeControl(self.gPlayBackSlider, e=True, ds=1, sound=self.dataStore['activeSound'])
            log.debug('Restored Audio setup')
        else:
            cmds.timeControl(self.gPlayBackSlider, e=True, ds=0)
        log.debug('Scene Restored fully')
        return True
Esempio n. 5
0
def run(*args, **kwargs):
    """ prepare the scene for the tests
    converts scene to use centimeters
    set the grid to the default
    
    """
    valid_kwargs = ['verbose']
    for k, v in kwargs.iteritems():
        if k not in valid_kwargs:
            raise TypeError("Invalid keyword argument %s" % k)
    # verbose defaults to False if verbose option not set in menu or set 
    # as cmdline argument
     
    try:
        verbose = kwargs['verbose']
    except KeyError:
        verbose = False 
    	if cmds.optionVar(exists='checkmateVerbosity'):
    		verbose = cmds.optionVar(query='checkmateVerbosity')
    else:
        verbose = False       
    batch = cmds.about(batch=True)    
    # get the name of the script Editor's output control
    from maya import mel as mel
    # Turn off Echo All Commands in the Script Editor  
    # Disable Stack Tracevin the Script Editor  
    # Turn off Line Numbers in errors in the Script Editor  
    # Reset the grid
    # Set the background color
    # Turn off the heads-up displays
    # Switch to wrireframe mode
    # Close all windows (except main)
    # Close ChannelBox, Attribute Editor and Outliner ()
    
    if not batch:
        try:
            gCommandReporter = mel.eval("proc string f(string $g){return $g;}f($gCommandReporter);")
        except RuntimeError:
            gCommandReporter = ''
            pass
        try:
            cmds.cmdScrollFieldReporter(gCommandReporter, 
                edit=True, 
                echoAllCommands=False,
                lineNumbers=True,
                stackTrace=True,
                suppressResults=False,
                suppressInfo=False,
                suppressWarnings=False,
                suppressErrors=False,
                suppressStackTrace=False,
                )
        except RuntimeError:
            if verbose:
                print 'No Script Editor'
            pass
    
    # convert scene to cm to fix crashes in nearestnormal
    cmds.currentUnit(linear='cm')
Esempio n. 6
0
def currentUnits():
    # ex: {'angle': 'degree', 'linear': 'centimeter', 'time': 'pal'}
    currentUnitsDict = {
        'linear': MC.currentUnit(query=True, linear=True, fullName=True),
        'angle':  MC.currentUnit(query=True, angle=True, fullName=True),
        'time':   MC.currentUnit(query=True, time=True)
    }
    return currentUnitsDict
Esempio n. 7
0
    def importScene( evt=0 ):
        
        rootPath = cmds.textField( Window_global.txf_rootPath, q=1, tx=1 )
        abcPath  = rootPath + '/' + cmds.textField( Window_global.txf_abcPath, q=1, tx=1 )
        sceneInfoPath = rootPath + '/' + cmds.textField( Window_global.txf_sceneInfoPath, q=1, tx=1 )
        
        cmds.AbcImport( abcPath, mode='import' )
        
        def getBBCenter( targetTransform ):
            bbmin = cmds.getAttr( targetTransform + '.boundingBoxMin' )[0]
            bbmax = cmds.getAttr( targetTransform + '.boundingBoxMax' )[0]
            bbcenter = OpenMaya.MPoint( (bbmin[0] + bbmax[0])/2.0, (bbmin[1] + bbmax[1])/2.0, (bbmin[2] + bbmax[2])/2.0  )
            pmtx = cmds.getAttr( targetTransform + '.parentMatrix' )
            mtx = OpenMaya.MMatrix()
            OpenMaya.MScriptUtil.createMatrixFromList( pmtx, mtx )
            bbcenter *= mtx
            return [bbcenter.x, bbcenter.y,bbcenter.z]
        
        def addNamespaceToChildren( namespace, rootNode ):
            import pymel.core
            children = pymel.core.listRelatives( rootNode, c=1, ad=1, type='transform' )
            if not children: children = []
            for child in children:
                child.rename( namespace + ':' + child.name().split( '|' )[-1] )

        f = open( sceneInfoPath, 'r' )
        data = json.load( f )
        f.close()

        cmds.currentUnit( time=data['timeUnit'] )
        cmds.playbackOptions( min=data['minFrame'], max=data['maxFrame'] )
        cmds.currentTime( data['exportFrame'] )
        cmds.refresh()
        
        namespaceRoots = data['namespaceRoots']
        rootCenters = data['rootCenters']
        for i in range( len( namespaceRoots ) ):
            namespaceRoot = namespaceRoots[i]
            localName = namespaceRoot.split( '|' )[-1]
            namespace = ':'.join( localName.split( ':' )[:-1] )
            try:cmds.namespace( add=namespace )
            except:pass
            
            target = '|'.join( namespaceRoot.split( '|' )[:-1] ) + '|' + localName.replace( namespace+':', '' ) + '*'
            targets = cmds.ls( target, type='transform' )
            
            if len( targets ) == 1:
                target = targets[0]
                addNamespaceToChildren( namespace, target )
                cmds.rename( target, namespaceRoot.split( '|' )[-1] )
            else:
                for target in targets:
                    targetCenter = OpenMaya.MPoint( *getBBCenter( target ) )
                    rootCenter = OpenMaya.MPoint( *rootCenters[i] )
                    
                    if targetCenter.distanceTo( rootCenter ) < 0.0001:
                        addNamespaceToChildren( namespace, target )
                        cmds.rename( target, namespaceRoot.split( '|' )[-1] )
Esempio n. 8
0
def setLinearUnit(unit):
    validUnits = ["mm", "millimeter", "cm", "centimeter", "m", "meter", "km", "kilometer", "in", "inch", "ft", "foot", "yd", "yard", "mi", "mile"]

    if unit in validUnits:
        cmds.optionVar(sv = ["workingUnitLinear", unit])
        cmds.optionVar(sv = ["workingUnitLinearDefault", unit])
        cmds.currentUnit(linear=unit)
    else:
        cmds.warning('Please specify a valid unit.')
Esempio n. 9
0
def set_fps(fps = None):
    fps_string = "pal"
    if fps == 25:
        fps_string = "pal"
    if fps == 24:
        fps_string = "film"
    if fps == 30:
        fps_string = "ntsc"                
    cmds.currentUnit(t=fps_string)
	def	__init__(	self):
		self._saved				=	cmds.file(	query	=	True,	exists	=	True)
		
		if	self._saved:
			self._modified			=	cmds.file(	query	=	True,	anyModified	=	True)
			self._versionDigits		=	3
			self._fullName			=	cmds.file(	query	=	True,	expandName	=	True)
			self._fileName			=	cmds.file(	query	=	True,	sceneName	=	True,	shortName	=	True)
			self._fileType			=	cmds.file(	query	=	True,	type	=	True)[0]
			self._extension			=	'.'	+	mm.eval(	'fileExtension("'	+	self._fileName	+	'")')
			self._path				=	self._fullName[:self._fullName.rfind(self._fileName)]
			self._sceneName		=	self._fileName[:self._fileName.rfind(self._extension)]
			self._shotName			=	self._sceneName[:-(self._versionDigits+2)]
			self._sceneVersion		=	self._sceneName[-self._versionDigits:]
			self._resolutionWidth	=	cmds.getAttr(	'defaultResolution.width')
			self._resolutionHeight	=	cmds.getAttr(	'defaultResolution.height')
			self._format			=	str(	self._resolutionWidth)	+	' x '	+	str(	self._resolutionHeight)
			self._renderStartFrame	=	int(	cmds.getAttr(	'defaultRenderGlobals.startFrame'))
			self._renderEndFrame	=	int(	cmds.getAttr(	'defaultRenderGlobals.endFrame'))
			_rawDate				=	os.stat(	self._fullName)
			_rawDate				=	time.localtime(	_rawDate[8])
			self._lastModified		=	str(	_rawDate[0])	+	'. '	\
									+	str(	_rawDate[1])	+	'. '	\
									+	str(	_rawDate[2])	+	' - '	\
									+	str(	_rawDate[3])	+	':'		\
									+	str(	_rawDate[4])	+	':'		\
									+	str(	_rawDate[5])
			self._unitLinear		=	cmds.currentUnit(	query	=	True,	linear	=	True,	fullName	=	True)
			self._unitAngle			=	cmds.currentUnit(	query	=	True,	angle	=	True,	fullName	=	True)
			self._unitTime			=	cmds.currentUnit(	query	=	True,	time	=	True,	fullName	=	True)
			self._references		=	cmds.file	(query	=	True,	reference	=	True)
		
		else:
			_empty					=	'scene not saved'
			self._modified			=	_empty
			self._versionDigits		=	_empty
			self._fullName			=	_empty
			self._fileName			=	_empty
			self._fileType			=	_empty
			self._extension			=	_empty
			self._path				=	_empty
			self._sceneName			=	_empty
			self._shotName			=	_empty
			self._sceneVersion		=	_empty
			self._resolutionWidth	=	_empty
			self._resolutionHeight	=	_empty
			self._format			=	_empty
			self._renderStartFrame	=	_empty
			self._renderEndFrame	=	_empty
			_rawDate				=	_empty
			_rawDate				=	_empty
			self._lastModified		=	_empty
			self._unitLinear		=	_empty
			self._unitAngle			=	_empty
			self._unitTime			=	_empty
			self._references		=	_empty
Esempio n. 11
0
    def setup(self):
        cmds.file(os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'MetaRig_anim_jump.mb'), open=True, f=True)
        self.mRig = r9Meta.getMetaNodes(mTypes=r9Meta.MetaRig)[0]
        self.poseFolder = getPoseFolder()

        # make our PoseData object with the unitTest config loaded
        filterNode = r9Core.FilterNode_Settings()
        filterNode.read(red9MetaRigConfig)
        self.poseData = r9Pose.PoseData(filterNode)
        cmds.currentUnit(time='ntscf')
Esempio n. 12
0
	def copyTimeSettings(self):
		"""copy time settings from selected scene"""
		asset = self.getAssetFromTaks()
		if not asset:
			return
		tim = asset.time
		mc.currentUnit( time=tim['tim'], linear = tim['lin'], angle = tim[ 'angle' ] )
		mc.playbackOptions( min = tim[ 'min' ],
							ast = tim[ 'ast' ], 
							max = tim[ 'max' ], 
							aet = tim[ 'aet' ] )
Esempio n. 13
0
def import_transformsBake( fileName=None ):
    
    import sgBFunction_fileAndPath
    import sgFunctionDag
    import cPickle

    if not fileName:
        defaultExportTransformBakePath = sgBFunction_fileAndPath.getMayaDocPath() + '/defaultExportTransformsBake.txt'
        f = open( defaultExportTransformBakePath, 'r' )
        fileName = cPickle.load( f )
    
    f = open( fileName, 'r' )
    datas = cPickle.load( f )
    f.close()
    
    unit, minFrame, maxFrame = datas[:3]

    imTargets = datas[3:]

    cmds.currentUnit( time= unit )
    
    for imTarget, targetMtxs in imTargets:
        if not cmds.objExists( imTarget ):
            sgFunctionDag.makeTransform( imTarget )
    
    for imTarget, targetMtxs in imTargets:
        
        attrs = cmds.listAttr( imTarget, k=1 )
        animCurves = []
        for k in range( len( attrs ) ):
            targetAttr = imTarget + '.' + attrs[k]
            at = cmds.attributeQuery( attrs[k], node=imTarget, at=1 )
            animCurveType='animCurveTU'
            if at == 'doubleLinear':
                animCurveType = 'animCurveTL'
            elif at == 'doubleAngle':
                animCurveType = 'animCurveTA'
            animCurve = cmds.createNode( animCurveType, n=targetAttr.split( '|' )[-1].replace( '.', '_' ) )
            animCurves.append( animCurve )
        
        for time in range( int( minFrame ), int( maxFrame+1 ) ):
            i = time - int( minFrame )
            cmds.xform( imTarget, os=1, matrix= targetMtxs[i] )
            for k in range( len( attrs ) ):
                targetAttr = imTarget + '.' + attrs[k]
                targetAttrValue= cmds.getAttr( targetAttr )
                animCurve  = animCurves[k]
                cmds.setKeyframe( animCurves[k], t=i, v=targetAttrValue )
        
        for k in range( len( attrs ) ):
            targetAttr = imTarget + '.' + attrs[k]
            cmds.connectAttr( animCurves[k]+'.output', targetAttr )
    
    cmds.select( imTargets[-1][0] )
Esempio n. 14
0
    def setup(self):
        cmds.file(os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'MetaRig_anim_jump.mb'), open=True, f=True)
        self.rootNode = '|World_Ctrl'
        self.poseFolder = getPoseFolder()
        cmds.currentUnit(time='ntscf')

        # make our PoseData object with the unitTest config loaded
        filterNode = r9Core.FilterNode_Settings()
        filterNode.nodeTypes = 'nurbsCurve'
        filterNode.incRoots = False
        filterNode.filterPriority = ['COG__Ctrl', 'Hips_Ctrl', 'Chest_Ctrl', 'R_Wrist_Ctrl', 'L_Wrist_Ctrl', 'L_Foot_Ctrl', 'R_Foot_Ctrl', 'L_Knee_Ctrl', 'R_Knee_Ctrl']
        self.poseData = r9Pose.PoseData(filterNode)
Esempio n. 15
0
def simpleEmitter():
    cmds.file (force=True, newFile=True)
    cmds.currentUnit (linear='centimeter', angle='degree', time='film')

    # Load the plug-in emitter and create an emitter node
    cmds.loadPlugin ('simpleEmitter.py')
    cmds.createNode ('spSimpleEmitter', name='simpleEmitter')

    # Create particle object and connect to the plugin emitter node
    cmds.particle (name='particles')
    cmds.connectDynamic ('particles', em='simpleEmitter')

    cmds.setAttr ('simpleEmitter.rate', 200 )
    cmds.setAttr ('simpleEmitter.speed', 25 )

    cmds.playbackOptions (minTime=0.00, maxTime=60.0)
    cmds.currentTime (0)
    cmds.play (wait=True, forward=True)

    # make some keyframes on emitter
    cmds.currentTime (0)
    cmds.select ('simpleEmitter', replace=True)
    cmds.setKeyframe ('simpleEmitter.tx')
    cmds.setKeyframe ('simpleEmitter.ty')
    cmds.setKeyframe ('simpleEmitter.tz')
    cmds.setKeyframe ('simpleEmitter.rx')
    cmds.setKeyframe ('simpleEmitter.ry')
    cmds.setKeyframe ('simpleEmitter.rz')
    cmds.currentTime (30)
    cmds.move (-2.011944, 6.283524, -2.668834, relative=True)
    cmds.move (0, 0, 12.97635, relative=True, localSpace=True, worldSpaceDistance=True)
    cmds.rotate (0, -75.139762, 0, relative=True, objectSpace=True)
    cmds.setKeyframe ('simpleEmitter.tx')
    cmds.setKeyframe ('simpleEmitter.ty')
    cmds.setKeyframe ('simpleEmitter.tz')
    cmds.setKeyframe ('simpleEmitter.rx')
    cmds.setKeyframe ('simpleEmitter.ry')
    cmds.setKeyframe ('simpleEmitter.rz')
    cmds.currentTime (60)
    cmds.move (0, 0, -14.526107, relative=True)
    cmds.move (0, -8.130523, 0, relative=True)
    cmds.rotate (0, 0, 78.039751, relative=True, objectSpace=True)
    cmds.rotate (0, 0, 53.86918, relative=True, objectSpace=True)
    cmds.setKeyframe ('simpleEmitter.tx')
    cmds.setKeyframe ('simpleEmitter.ty')
    cmds.setKeyframe ('simpleEmitter.tz')
    cmds.setKeyframe ('simpleEmitter.rx')
    cmds.setKeyframe ('simpleEmitter.ry')
    cmds.setKeyframe ('simpleEmitter.rz')

    cmds.playbackOptions (minTime=0.00, maxTime=60.0)
    cmds.currentTime (0)
    cmds.play (wait=True, forward=True)
Esempio n. 16
0
    def storeSettings(self):
        '''
        main work function, store all UI settings
        '''
        self.dataStore['autoKey'] = cmds.autoKeyframe(query=True, state=True)

        # timeline management
        self.dataStore['currentTime'] = cmds.currentTime(q=True)
        self.dataStore['minTime'] = cmds.playbackOptions(q=True, min=True)
        self.dataStore['maxTime'] = cmds.playbackOptions(q=True, max=True)
        self.dataStore['startTime'] = cmds.playbackOptions(q=True, ast=True)
        self.dataStore['endTime'] = cmds.playbackOptions(q=True, aet=True)
        self.dataStore['playSpeed'] = cmds.playbackOptions(query=True, playbackSpeed=True)
        self.dataStore['playLoop'] = cmds.playbackOptions(query=True, loop=True)

        # unit management
        self.dataStore['timeUnit'] = cmds.currentUnit(q=True, fullName=True, time=True)
        self.dataStore['sceneUnits'] = cmds.currentUnit(q=True, fullName=True, linear=True)
        self.dataStore['upAxis'] = cmds.upAxis(q=True, axis=True)

        # viewport colors
        self.dataStore['displayGradient'] = cmds.displayPref(q=True, displayGradient=True)

        # objects colors
        self.dataStore['curvecolor'] = cmds.displayColor("curve", q=True, dormant=True)

        # panel management
        self.dataStore['panelStore'] = {}
        for panel in ['modelPanel1', 'modelPanel2', 'modelPanel3', 'modelPanel4']:
            if not cmds.modelPanel(panel, q=True, exists=True):
                continue
            self.dataStore['panelStore'][panel] = {}
            self.dataStore['panelStore'][panel]['settings'] = cmds.modelEditor(panel, q=True, sts=True)
            activeCam = cmds.modelPanel(panel, q=True, camera=True)
            if not cmds.nodeType(activeCam) == 'camera':
                activeCam = cmds.listRelatives(activeCam, f=True)[0]
            self.dataStore['panelStore'][panel]['activeCam'] = activeCam

        # camera management
        # TODO : store the camera field of view etc also
        self.dataStore['cameraTransforms'] = {}
        for cam in ['persp', 'top', 'side', 'front']:
            try:
                self.dataStore['cameraTransforms'][cam] = [cmds.getAttr('%s.translate' % cam),
                                                     cmds.getAttr('%s.rotate' % cam),
                                                     cmds.getAttr('%s.scale' % cam)]
            except:
                log.debug("Camera doesn't exists : %s" % cam)

        # sound management
        self.dataStore['activeSound'] = cmds.timeControl(self.gPlayBackSlider, q=True, s=1)
        self.dataStore['displaySound'] = cmds.timeControl(self.gPlayBackSlider, q=True, ds=1)
Esempio n. 17
0
        def checkUnit(self , assetRoot, *args, **kws):
                """
                # check maya working units:
                # Linear: centimeter
                # Angular: degrees
                # Time: Film(24fps)

                """

                if mc.currentUnit(q=True, l=True) != "cm" or mc.currentUnit(q=True, a=True) != "deg" or mc.currentUnit(q=True, t=True) != "film":
                        return self.checkResult(allowPublish=False, msg="Maya working unit should be: Linear: centimeter, Angular: degrees, Time: Film(24fps)", nodes=list())
                else:
                        return self.checkResult(allowPublish=True, msg="Everything is OK")
Esempio n. 18
0
def FrameratePrompt():

    framerate = cmds.currentUnit(q=True, time=True)

    if framerate != 'pal':
        message = 'Maya session is not working with 25 fps.\n'
        message += 'Do you want to switch to 25 fps?'
        result = cmds.confirmDialog(title='FRAMERATE', message=message,
                                  icon='warning', backgroundColor=(0.5, 0, 0))

        if result == 'Confirm':

            cmds.currentUnit(time='pal')
def setupScene(*args):
    
    cmds.currentUnit(time = 'ntsc')
    cmds.playbackOptions(min = 0, max = 100, animationStartTime = 0, animationEndTime = 100)
    cmds.currentTime(0)
    
    
    #check for skeleton builder or animation UIs
    if cmds.dockControl("skeletonBuilder_dock", exists = True):
	print "Custom Maya Menu: SetupScene"
	channelBox = cmds.formLayout("SkelBuilder_channelBoxFormLayout", q = True, childArray = True)
	if channelBox != None:
	    channelBox = channelBox[0]
	
	    #reparent the channelBox Layout back to maya's window
	    cmds.control(channelBox, e = True, p = "MainChannelsLayersLayout")
	    channelBoxLayout = mel.eval('$temp1=$gChannelsLayersForm')
	    channelBoxForm = mel.eval('$temp1 = $gChannelButtonForm')
	
	    #edit the channel box pane's attachment to the formLayout
	    cmds.formLayout(channelBoxLayout, edit = True, af = [(channelBox, "left", 0),(channelBox, "right", 0), (channelBox, "bottom", 0)], attachControl = (channelBox, "top", 0, channelBoxForm))
	    
	    
	#print "deleting dock and window and shit"
	cmds.deleteUI("skeletonBuilder_dock")
	if cmds.window("SkelBuilder_window", exists = True):
	    cmds.deleteUI("SkelBuilder_window")	




	
    if cmds.dockControl("artAnimUIDock", exists = True):
	
	channelBox = cmds.formLayout("ART_cbFormLayout", q = True, childArray = True)
	if channelBox != None:
	    channelBox = channelBox[0]
	
	    #reparent the channelBox Layout back to maya's window
	    cmds.control(channelBox, e = True, p = "MainChannelsLayersLayout")
	    channelBoxLayout = mel.eval('$temp1=$gChannelsLayersForm')
	    channelBoxForm = mel.eval('$temp1 = $gChannelButtonForm')
	
	    #edit the channel box pane's attachment to the formLayout
	    cmds.formLayout(channelBoxLayout, edit = True, af = [(channelBox, "left", 0),(channelBox, "right", 0), (channelBox, "bottom", 0)], attachControl = (channelBox, "top", 0, channelBoxForm))
	    
	    
	#print "deleting dock and window and shit"
	cmds.deleteUI("artAnimUIDock")
	if cmds.window("artAnimUI", exists = True):
	    cmds.deleteUI("artAnimUI")
Esempio n. 20
0
def setSceneFromSceneBakeInfo( sceneBakeInfoPath, importCachebody = False ):
    
    import os
    import cPickle
    import sgBFunction_mesh
    import sgBFunction_shader
    import sgBModel_fileAndPath
    
    f = open( sceneBakeInfoPath, 'r' )
    shaderInfo = cPickle.load( f )
    f.close()
    
    unit, minFrame, maxFrame, namespaces, filePaths = shaderInfo
    
    cmds.currentUnit( time= unit )
    cmds.playbackOptions( min=minFrame, max=maxFrame )
    
    """
    buildShadingInfoData( filePaths )
    
    for i in range( len( filePaths ) ):
        folderPath = '/'.join( filePaths[i].split( '/' )[:-1] ) + '/' + sgBModel_fileAndPath.cacheBodyUvFolderName
        namespace = namespaces[i]
        if not namespace:
            sgBFunction_mesh.assignUvFiles( folderPath , '' )
        else:
            sgBFunction_mesh.assignUvFiles( folderPath, namespace +'_' )

    for i in range( len( namespaces ) ):
        filePath = filePaths[i]
        folderPath = '/'.join( filePath.split( '/' )[:-1] )
        fileName   = filePath.split( '/' )[-1]
        onlyFileName = fileName.split( '.' )[0]
        if onlyFileName.lower().find( 'cachebody' ) == -1: onlyFileName += '_cachebody'
        shadingInfoFile = folderPath + '/' + onlyFileName + '.shadingInfo'
        if not os.path.exists( shadingInfoFile ): continue
        sgBFunction_shader.assignReferenceShader( shadingInfoFile, namespaces[i] )
    """
    if importCachebody:
        for i in range( len( namespaces ) ):
            namespace = namespaces[i]
            filePath = filePaths[i]
            folderPath = '/'.join( filePath.split( '/' )[:-1] )
            fileName   = filePath.split( '/' )[-1]
            onlyFileNameAndExtension = fileName.split( '.' )
            if onlyFileNameAndExtension[0].lower().find( 'cachebody' ) == -1: onlyFileNameAndExtension[0] += '_cachebody'
            cachebodyPath = folderPath + '/' + '.'.join( onlyFileNameAndExtension )
            print "cachebodyPath : ", cachebodyPath
            if not os.path.exists( cachebodyPath ): continue
            cmds.file( cachebodyPath, i=1, ignoreVersion=True, ra=True, mergeNamespacesOnClash = False, rpr=namespace, options="v=0;", pr=1 )
Esempio n. 21
0
def mImportTimeInfo(timeInfoFile):
	"""
	"""
	with open(timeInfoFile, 'r') as timeInfoTxt:
		timeInfo = timeInfoTxt.read().split('\n')
		cmds.currentUnit(t= timeInfo[0])
		logger.info('TimeInfo   [Unit] ' + timeInfo[0])
		cmds.playbackOptions(min= float(timeInfo[1].split(':')[0]))
		cmds.playbackOptions(max= float(timeInfo[1].split(':')[1]))
		logger.info('TimeInfo  [Range] ' + timeInfo[1])
		exec(timeInfo[2])
		logger.info('TimeInfo [Static] ' + str(isStatic))
		
		return [isStatic, float(timeInfo[1].split(':')[1])]
Esempio n. 22
0
	def copyTimeSettings(self):
		"""copy time settings from selected scene"""
		tab = self._getCurrentTab()
		item = tab.currentItem()
		if uiH.USEPYQT:
			asset = item.data(32).toPyObject()
		else:
			asset = item.data(32)
		tim = asset.time
		mc.currentUnit( time=tim['tim'], linear = tim['lin'], angle = tim[ 'angle' ] )
		mc.playbackOptions( min = tim[ 'min' ],
							ast = tim[ 'ast' ],
							max = tim[ 'max' ],
							aet = tim[ 'aet' ] )
Esempio n. 23
0
	def referenceCamera(self):
		"""docstring for reference"""
		sht = self._selectedShot
		if INMAYA:
			sht.poolCam.reference()
			tim = self._selectedShot.animPath.time
			mc.currentUnit( time=tim['tim'], linear = tim['lin'], angle = tim[ 'angle' ] )
			mc.playbackOptions( min = tim[ 'min' ],
								ast = tim[ 'ast' ],
								max = tim[ 'max' ],
								aet = tim[ 'aet' ] )
		elif INHOU:
			hu.loadCamera(sht.project.name, sht.sequence.name, sht.name, self.connectToGlobalScale_chb.isChecked() )
			hu.copyTimeSettings( sht.project.name, sht.sequence.name, sht.name )
    def process(self, context):

        # Get the current linear units
        units = cmds.currentUnit(q=1, linear=1)

        # Get the current angular units ('deg' or 'rad')
        units_angle = cmds.currentUnit(q=1, angle=1)

        # Get the current time units
        fps = mel.eval('currentTimeUnitToFPS()')

        context.set_data('linearUnits', units)
        context.set_data('angularUnits', units_angle)
        context.set_data('fps', fps)
Esempio n. 25
0
    def __init__(self, uioptions, transformoptions, sourcelist, targetlist):
        '''
        initial setup
        '''
        #create the tool context
        if (mc.draggerContext(spPaint3dContextID, exists=True)):
            mc.deleteUI(spPaint3dContextID);
        mc.draggerContext(spPaint3dContextID, pressCommand=self.onPress, dragCommand=self.onDrag, releaseCommand=self.onRelease, name=spPaint3dContextID, cursor='crossHair', undoMode='step')

        #create context local options
        self.runtimeUpdate(uioptions, transformoptions, sourcelist, targetlist)

        #debug purpose
        self.reentrance = 0

        #initialise world up vector
        if ( (mc.upAxis(q=True, axis=True)) == "y" ):
            self.worldUp = om.MVector (0,1,0);
        elif ( (mc.upAxis(q=True, axis=True)) == "z" ):
            self.worldUp = om.MVector (0,0,1);
        else:
            #can't figure out up vector
            mc.confirmDialog(title='Weird stuff happening', message='Not getting any proper info on what the current up vector is. Quitting...')
            sys.exit()

        #fetch current scene unit
        self.unit = mc.currentUnit(query=True, linear=True)
Esempio n. 26
0
def exportDeformAnimation(folder):
    '''Use MDD file to export defrom animation.'''
    minframe = int( mc.playbackOptions(q = True, min = True) )
    maxframe = int( mc.playbackOptions(q = True, max = True) )
    totalframes = maxframe - minframe + 1
    t = mc.currentUnit(q = True, t = True)
    fps = _mfps[t]
    
    parts = []
    selectionList = mo.MSelectionList()
    mo.MGlobal.getActiveSelectionList(selectionList)
    itList = mo.MItSelectionList(selectionList, mo.MFn.kTransform)
    while not itList.isDone():
        path = mo.MDagPath()
        itList.getDagPath(path)
        partialName = str(path.partialPathName())
        name = partialName.split(":")[-1]
        part = MDD(name, mo.MFnMesh(path), totalframes, fps)
        parts.append(part)
        itList.next()
    # add animation
    for frame in range(minframe, maxframe + 1):
        mc.currentTime(frame, edit = True)
        for p in parts:
            p.addFrame()
            
    # write files
    for p in parts:
        p.writeToFile(folder)
        print "write %s done." % p.name
    print "All is done."
    return True
Esempio n. 27
0
def getFps():
	'''
	returns the current fps as a number
	'''
	timebases = {'ntsc': 30, 'pal': 25, 'film': 24, 'game': 15, 'show': 48, 'palf': 50, 'ntscf': 60}
	base = cmd.currentUnit(q=True, time=True)
	return timebases[base]
Esempio n. 28
0
def check_units(expected="cm"):
    """
    check to make sure scene working units are in expected units
    """
    current_units = mc.currentUnit(query=True, linear=True)
    if current_units != expected:
        notify_wrong_units(expected, current_units)
Esempio n. 29
0
 def getCurrent(self):
     self.minframe = int( mc.playbackOptions(q = True, min = True) )
     self.maxframe = int( mc.playbackOptions(q = True, max = True) )
     self.totalframes = self.maxframe - self.minframe + 1
     t = mc.currentUnit(q = True, t = True)
     self.fps = self._mfps[t]
     return True
Esempio n. 30
0
	def __init__(self):

		''' os '''
		self.sep = self.pathSep()

		''' maya basic '''
		# project root
		self.workspaceRoot = cmds.workspace(q= 1, rd= 1)
		# project folder path dict
		self.dirRule = self.getDirRules()
		# scene full path
		self.sceneFullPath = mGeneral.sceneName(shn= 0, ext= 1)
		# scene name with ext
		self.sceneFullName = mGeneral.sceneName(ext= 1)
		# scene name without ext
		self.sceneSplitExt = mGeneral.sceneName()

		''' scene data '''
		# project abbreviation
		self.prjAbbr = ''
		# scene file version
		self.ver = self.getVerSN(self.sceneSplitExt)
		# the one who last saved this scene
		self.artist = ''
		# shot number
		self.shotNum = self.getShotNum(self.sceneSplitExt)
		# camera list
		self.cam = []
		# palybackRange
		self.palybackStart = cmds.playbackOptions(q= 1, min= 1)
		self.palybackEnd = cmds.playbackOptions(q= 1, max= 1)
		# frameRate
		self.fps = mel.eval('currentTimeUnitToFPS')
		self.timeUnit = cmds.currentUnit(q= 1, t= 1)
Esempio n. 31
0
def getFPSValue():
    """Get time units title.

    Returns:
        str
    """
    fps = dict(game=15, film=24, pal=25, ntsc=30, show=48, palf=50,
               ntscf=60)[cmds.currentUnit(query=True, time=True)]

    return '{0} FPS'.format(fps)
def frameRate_set(arg, fixFractionalSlider=True):
    _str_func = 'frameRate_set'
    log.debug(cgmGEN.logString_start(_str_func))

    if VALID.valueArg(arg):
        _arg = '{0}fps'.format(arg)

    else:
        d_validArgs = {
            'ntsc': ['n', 'ntsc'],
            'pal': ['p', 'pal'],
            'film': ['f', 'film'],
            'game': ['g', 'game'],
            'ntscf': ['ntscf']
        }

        _arg = VALID.kw_fromDict(arg,
                                 d_validArgs,
                                 calledFrom=_str_func,
                                 noneValid=True)

    if not _arg:
        _arg = arg

    log.debug(
        cgmGEN.logString_msg(_str_func,
                             "| arg: {0} | validated: {1}".format(arg, _arg)))

    mc.currentUnit(time=_arg)

    if fixFractionalSlider:
        log.debug(cgmGEN.logString_msg(_str_func, 'fixFractionalSlider...'))
        _current = mc.currentTime(q=True)
        mc.playbackOptions(
            animationStartTime=int(
                mc.playbackOptions(q=True, animationStartTime=True)),
            animationEndTime=int(
                mc.playbackOptions(q=True, animationEndTime=True)),
            max=int(mc.playbackOptions(q=True, max=True)),
            min=int(mc.playbackOptions(q=True, min=True)),
        )
        mc.currentTime(int(_current))
Esempio n. 33
0
def updateUI(command, *args):
    if command == 'units_text':
        #'Maya Units' text in settings.
        mc.text('unitText',
                edit=True,
                label='Working Units: %s' % mc.currentUnit(q=True, f=True))
        mc.text('ratio_unit',
                edit=True,
                label='Pixels per %s:' % mc.currentUnit(q=True))
        command = 'ratio_value'
    elif 'angle' in command:
        # Straighten Edges Angle dials
        if command.split(':')[1] == 'field':
            aValue = mc.floatField('angleField', q=True, value=True)
            mc.floatSlider('angleSlider', edit=True, value=aValue)
        if command.split(':')[1] == 'slider':
            aValue = mc.floatSlider('angleSlider', q=True, value=True)
            mc.floatField('angleField', edit=True, value=aValue)
    elif 'match' in command:
        aValue = mc.floatSlider('matchSlider', q=True, value=True)
        mc.floatField('MatchUVDistance', edit=True, value=aValue)
    elif command == 'scale_pivot':
        #Check if scaling pivot is based on selection
        if mc.radioButton('PivSel', q=True, sl=True):
            mc.floatField('scalePivotFieldU', edit=True, enable=False)
            mc.floatField('scalePivotFieldV', edit=True, enable=False)
            mc.text('spu', edit=True, enable=False)
            mc.text('spv', edit=True, enable=False)
            mc.button('samplePivotButton', edit=True, enable=False)
        else:
            mc.floatField('scalePivotFieldU', edit=True, enable=True)
            mc.floatField('scalePivotFieldV', edit=True, enable=True)
            mc.text('spu', edit=True, enable=True)
            mc.text('spv', edit=True, enable=True)
            mc.button('samplePivotButton', edit=True, enable=True)
    if 'ratio_value' in command:
        #Updates the floatField containing the value that gets queried by unfold.
        mult = setRatioMultiplier()
        unfold = 0.0009765625 * (mc.intField(
            'densityField', q=True, value=True))
        mc.floatField('ratioField', edit=True, v=unfold * mult)
    return
def distanceUnit_set(arg):
    _str_func = 'distanceUnit_set'
    log.debug(cgmGEN.logString_start(_str_func))

    d_validArgs = {
        'm': ['meter', 'metre'],
        'cm': ['centimeter', 'centi'],
        'mm': ['milimeter', 'mili'],
        'yd': ['yard'],
        'in': ['inch', 'inches'],
        'ft': ['feet', 'foot']
    }

    _arg = VALID.kw_fromDict(arg, d_validArgs, calledFrom=_str_func)

    log.debug(
        cgmGEN.logString_msg(_str_func,
                             "| arg: {0} | validated: {1}".format(arg, _arg)))

    mc.currentUnit(linear=_arg)
Esempio n. 35
0
    def test_fps(self):
        fps_map = {
            "ntsc": 30,
            "game": 15,
            "film": 24,
            "pal": 25,
            "show": 48,
            "palf": 50,
            "ntscf": 60
        }

        for name, fps in fps_map.items():
            cmds.currentUnit(time=name)
            temp_file = os.path.join(self.temp_dir,
                                     'test_{}.usda'.format(name))
            cmds.mayaUSDExport(f=temp_file, frameRange=(1, 5))

            stage = Usd.Stage.Open(temp_file)
            self.assertEqual(stage.GetTimeCodesPerSecond(), fps)
            self.assertEqual(stage.GetFramesPerSecond(), fps)
def RetimeHelper(*args):
    cur = cmds.currentTime(query=True)
    TimeSet = cmds.currentUnit(q=True, time=True)

    if TimeSet == "ntscf":
        No = 60.0
    else:
        No = 30.0

    Set = cur / No
    cmds.retimeHelper(edit=True, frame=Set)
Esempio n. 37
0
def setupSceneFromCam():
    #set attributes from camera
    perspCameras = cmds.listCameras(p=True)
    if (cmds.attributeQuery('frameRate', node=item, exists=True)):
        cameraframeRate = cmds.getAttr(item + '.frameRate')
        cmds.currentUnit(time=cameraframeRate)
    if (cmds.attributeQuery('width', node=item, exists=True)):
        cameraWidth = cmds.getAttr(item + '.width')
        cmds.setAttr('defaultResolution.width', cameraWidth)
    if (cmds.attributeQuery('height', node=item, exists=True)):
        cameraHeight = cmds.getAttr(item + '.height')
        cmds.setAttr('defaultResolution.height', cameraHeight)
    if (cmds.attributeQuery('startFrame', node=item, exists=True)):
        cameraStart = cmds.getAttr(item + '.startFrame')
        cmds.setAttr('defaultRenderGlobals.startFrame', cameraStart)
        cmds.playbackOptions(min=cameraStart, ast=cameraStart)
    if (cmds.attributeQuery('endFrame', node=item, exists=True)):
        cameraEnd = cmds.getAttr(item + '.endFrame')
        cmds.setAttr('defaultRenderGlobals.endFrame', cameraEnd)
        cmds.playbackOptions(max=cameraEnd, aet=cameraEnd)
Esempio n. 38
0
def torusField():
    cmds.file(force=True, new=True)
    cmds.currentUnit(linear="centimeter", angle="degree", time="film")

    # Create the new field node
    cmds.createNode("spTorusField", name="torus")

    # create particle object.
    #
    cmds.particle(jbp=(0.0, 0.0, 0.0), nj=250, jr=5, c=1, name="particles")

    # connect torus field node with the particle object.
    #
    cmds.connectDynamic("particles", f="torus")
    cmds.setAttr("torus.attractDistance", 10)
    cmds.setAttr("torus.repelDistance", 5)

    cmds.playbackOptions(e=True, min=0.00, max=600.0)
    cmds.currentTime(0, e=True)
    cmds.play(wait=True, forward=True)
Esempio n. 39
0
    def set_project_settings(self, data, **kwargs):

        import ast
        data = ast.literal_eval(data)


        ####################
        "      FPS         "
        ####################
        current_fps = cmds.currentUnit( query=True, linear=True )
        fps = data["sg_fps"]
        if 15 in fps:
            fps = "game"
        if 23.9 in fps:
            fps = "film"
        if 24 in fps:
            fps = "film"
        if 25 in fps:
            fps = "pal"
        if 29.9 in fps:
            fps = "ntsc"
        if 30 in fps:
            fps = "ntsc"
        if 48 in fps:
            fps = "show"
        if 50 in fps:
            fps = "palf"
        if 59 in fps:
            fps = "ntscf"
        if 60 in fps:
            fps = "ntscf"


        msg = """
        The Following settings have been fetched from Shotgun and will be applied:\n
        FPS\n
        {} --> {}
        \n
        Framerange\n
        First frame: {} --> {}\n
        Last frame: {} --> {}\n
        Head handles: {} -- Tail handles: {}
        \n
        Apply?
        """.format(current_fps, fps, current_framerange[0], str(in_frame), current_framerange[1], str(out_frame), head_handles, tail_handles)


        confirm = confirmDialog("Should I copy shaders?")
        if confirm == "Yes":
            for tgt in tgts:
                shp = cmds.listRelatives(src, s=True)[0]
                sg = cmds.listConnections(shp, t="shadingEngine")[0]
                tshp = cmds.listRelatives(tgt, s=True)[0]
                cmds.sets(tshp, e=True, forceElement=sg)
Esempio n. 40
0
def setUpMdlShot():
	'''
	Set up modeling environment.
	'''

	# Start new shot
	confirmSaveCurScene()

	# Working unit
	cmds.currentUnit(linear = 'centimeter')
	cmds.currentUnit(time = 'ntsc')

	# set time slider and current frame to 1
	cmds.playbackOptions(min = 1)
	cmds.currentTime(1)

	# Make group hierarchy
	pipeHier()

	cmds.select(cl = True)
Esempio n. 41
0
 def _get_frame_rate(self):
     '''获取帧数率
     '''
     _dict = {
         'film':24,
         "pal":25,
         "ntsc":30
     }
     _mode = cmds.currentUnit(q=1, t=1)
     _frame_rate = _dict[_mode]
     return u"帧率: %s"%str(_frame_rate)
Esempio n. 42
0
 def getFPS(self):
     data = {
         'game': 15,
         'film': 24,
         'pal': 25,
         'ntsc': 30,
         'show': 48,
         'palf': 50,
         'ntscf': 60
     }
     qFPS = cmds.currentUnit(query=True, t=True)
     self.curFPS = data[qFPS] if qFPS in data else 0
Esempio n. 43
0
def applyConfig(weak=True):
    cmds.currentUnit(time=config.getConfig('time'), updateAnimation=False)
    cmds.setAttr("%s.width" % cmds.ls(renderResolutions=True)[0],
                 config.getConfig('camResX'))
    cmds.setAttr("%s.height" % cmds.ls(renderResolutions=True)[0],
                 config.getConfig('camResY'))

    if cmds.file(q=1, sn=1, shn=1) and weak: return

    ast = int(cmds.playbackOptions(q=1, ast=1))
    aet = int(cmds.playbackOptions(q=1, aet=1))
    mint = int(cmds.playbackOptions(q=1, min=1))
    maxt = int(cmds.playbackOptions(q=1, max=1))
    configAST = config.getConfig('startFrame')
    offset = configAST - ast
    cmdKeyframe(offset)
    cmds.currentTime(configAST)
    cmds.playbackOptions(min=mint + offset,
                         max=maxt + offset,
                         ast=ast + offset,
                         aet=aet + offset)
Esempio n. 44
0
    def _checkFrameRates(self, elem, elem_info):
        """
		Check that the frame rate for the given element matches the sequence (i.e Maya) frame rate.
		If it does not, log an error.
		"""
        fps = cmds.currentUnit(q=1, time=1)
        fps = [k for k, v in mayaFrameRates.iteritems() if v == fps][0]
        elemFPS = elem_info.get("framerate", None)
        if elemFPS is not None and elemFPS != fps:
            self.translator.logger.error(
                "Frame rate for %s does not not match sequence frame rate" %
                self.translator.formatErrorElement(elem))
Esempio n. 45
0
    def setTimeSlider(*args):
        mode = cmds.radioButtonGrp(UI.widgets['timeSldrRadBtn'],
                                   q=True,
                                   select=True)

        if mode == 1:
            nModeStart = cmds.textField(UI.widgets['timeSldrNrmStartTxtFld'],
                                        q=True,
                                        text=True)
            nModeEnd = cmds.textField(UI.widgets['timeSldrNrmEndTxtFld'],
                                      q=True,
                                      text=True)
            cmds.playbackOptions(minTime=nModeStart)
            cmds.playbackOptions(maxTime=nModeEnd)
            cmds.currentTime(nModeStart)
        elif mode == 2:
            tModeDur = float(
                cmds.textField(UI.widgets['timeSldrTimeDurTxtFld'],
                               q=True,
                               text=True))
            tModeStart = float(
                cmds.textField(UI.widgets['timeSldrTimeStartTxtFld'],
                               q=True,
                               text=True))
            curTime = cmds.currentUnit(q=True, time=True)
            if curTime == 'film':
                fps = 24
            elif curTime == 'pal':
                fps = 25
            elif curTime == 'ntsc':
                fps = 30
            durFrameLen = tModeDur * fps
            tModeEnd = (tModeStart + durFrameLen) - 1
            cmds.playbackOptions(minTime=tModeStart)
            cmds.playbackOptions(maxTime=tModeEnd)
            cmds.currentTime(tModeStart)
        elif mode == 3:
            mel.eval('source "updateSoundMenu.mel";')
            sModeSndPath = cmds.textField(
                UI.widgets['timeSldrSoundPathTxtFld'], q=True, text=True)
            sModeStart = int(
                cmds.textField(UI.widgets['timeSldrSoundStartTxtFld'],
                               q=True,
                               text=True))
            sndNode = cmds.sound(offset=sModeStart, file=sModeSndPath)
            soundLength = round(cmds.sound(sndNode, q=True, length=True)) - 1
            sModeEnd = sModeStart + soundLength
            cmds.playbackOptions(minTime=sModeStart)
            cmds.playbackOptions(maxTime=sModeEnd)
            cmds.currentTime(sModeStart)
            gPlayBackSlider = mel.eval('$tmpVar=$gPlayBackSlider')
            cmds.timeControl(gPlayBackSlider, edit=True, sound=sndNode)
            mel.eval('setSoundDisplay %s 1;' % (sndNode))
Esempio n. 46
0
    def __init__(self):
        self.bo = [[-1] * h for i in range(w)]  #screen borad
        self.preBo = [[-2] * h for i in range(w)]  #off screen borad
        self.playerPos = list(spownPos)
        self.playerMino = [[None, None]] * 3
        self.playerMinoNum = 0
        self.minoRand = self.createMinoRand()
        self.timer = 0
        self.timerLevel = 20
        self.isContact = False
        self.gameOverCount = 100
        self.rec = {}
        self.recLen = 0

        cmds.undoInfo(st=False)
        cmds.currentUnit(t='ntsc')
        cmds.playbackOptions(e=1, playbackSpeed=0, maxPlaybackSpeed=1)
        cmds.evaluationManager(mode='off')
        #cmds.evaluationManager(inv=True)
        cmds.playbackOptions(min=1, max=5000)
        self.createObjs()
Esempio n. 47
0
    def CheackWorkUnits(self, *args):
        # 检查工作尺寸

        try:
            Export_type = cmds.radioButtonGrp("Export_type",
                                              q=True,
                                              select=True)

            if Export_type == 1:
                #设置场景帧率和尺寸 ntsc: 30 fps ; pal: 25 fps ; centimeter ; meter
                cmds.currentUnit(time='ntsc', linear='meter')
                # fbx导出设置,文件单位转化,FBXExportConvertUnitString [mm|dm|cm|m|km|In|ft|yd|mi];
                mel.eval('FBXExportConvertUnitString m;')
                # print("Unity 模式")
            elif Export_type == 2:
                #设置场景帧率和尺寸 ntsc: 30 fps ; pal: 25 fps ; centimeter ; meter
                cmds.currentUnit(time='pal', linear='centimeter')
                mel.eval('FBXExportConvertUnitString cm;')
                # print("UE4 模式")
        except Exception as e:
            raise e
Esempio n. 48
0
 def __exit__(self, *_):
     if self.oldlin is not None:
         mc.currentUnit(linear=self.oldlin)
     if self.oldang is not None:
         mc.currentUnit(angle=self.oldang)
     if self.oldtim is not None:
         mc.currentUnit(time=self.oldtim)
Esempio n. 49
0
    def setWorkUnits(self):

        #load path and config
        path_config = cfgl.configLoader()[99:101]

        if self.cboxSysUnits.currentIndex() == 0:
            cmds.currentUnit(linear='m')
            self.lblInfo_01.setText("Units changed to m")
            print "Units changed to m"
            cfgl.ConfigWriter('Units', 'Custom_System_type_units', 'm',
                              path_config[0], path_config[1])

        if self.cboxSysUnits.currentIndex() == 1:
            cmds.currentUnit(linear='cm')
            self.lblInfo_01.setText("Units changed to cm")
            print "Units changed to cm"
            cfgl.ConfigWriter('Units', 'Custom_System_type_units', 'cm',
                              path_config[0], path_config[1])

        if self.cboxSysUnits.currentIndex() == 2:
            cmds.currentUnit(linear='mm')
            self.lblInfo_01.setText("Units changed to mm")
            print "Units changed to mm"
            cfgl.ConfigWriter('Units', 'Custom_System_type_units', 'mm',
                              path_config[0], path_config[1])
Esempio n. 50
0
def reset_frame_range():
    """Set frame range to current asset"""
    shot = api.Session["AVALON_ASSET"]
    shot = io.find_one({"name": shot, "type": "asset"})

    try:

        frame_start = shot["data"].get(
            "frameStart",
            # backwards compatibility
            shot["data"].get("edit_in"))
        frame_end = shot["data"].get(
            "frameEnd",
            # backwards compatibility
            shot["data"].get("edit_out"))
    except KeyError:
        cmds.warning("No edit information found for %s" % shot["name"])
        return

    fps = {
        "12": "12fps",
        "15": "game",
        "16": "16fps",
        "24": "film",
        "25": "pal",
        "30": "ntsc",
        "48": "show",
        "50": "palf",
        "60": "ntscf"
    }.get(api.Session.get("AVALON_FPS"), "pal")  # Default to "pal"

    cmds.currentUnit(time=fps)

    cmds.playbackOptions(minTime=frame_start)
    cmds.playbackOptions(maxTime=frame_end)
    cmds.playbackOptions(animationStartTime=frame_start)
    cmds.playbackOptions(animationEndTime=frame_end)
    cmds.playbackOptions(minTime=frame_start)
    cmds.playbackOptions(maxTime=frame_end)
    cmds.currentTime(frame_start)
Esempio n. 51
0
    def prefFunction(self, pref, obj, *args):

        if pref == 'evaluation':
            cmds.evaluationManager(mode=obj)
            print 'Evaluation Mode: %s' % cmds.evaluationManager(q=True,
                                                                 mode=True)[0]

        elif pref == 'default tangent':
            cmds.keyTangent(g=True, itt=obj)
            cmds.keyTangent(g=True, ott=obj)
            print 'Default Tangents: %s, %s' % (cmds.keyTangent(
                q=True, g=True,
                itt=True)[0], cmds.keyTangent(q=True, g=True, ott=True)[0])

        elif pref == 'frames per second':
            # Keep Keys at Current Frames
            # cmds.currentUnit(time='', ua=True)

            cmds.currentUnit(t=obj)
            print 'Frames Per Second: %s' % cmds.currentUnit(
                q=True,
                t=True,
                ua=cmds.menuItem(self.keepFrames, q=True, checkBox=True))

        elif pref == 'playback speed':
            cmds.playbackOptions(ps=obj)
            print 'Playback Speed: %s' % cmds.playbackOptions(q=True, ps=True)

        elif pref == 'up axis':
            cmds.upAxis(ax=obj)
            print 'Up Axis: %s' % cmds.upAxis(q=True, ax=True)

        elif pref == 'working units':
            cmds.currentUnit(l=obj)
            print 'Working Units: %s' % cmds.currentUnit(q=True, l=True)
def _setHWRenderGlobals(width=1280, height=720, animation=False):
    cmds.currentUnit(time='pal')
    cmds.currentUnit(linear='cm')

    mel.eval('setAttr defaultResolution.width %s' % width)
    mel.eval('setAttr defaultResolution.height %s' % height)
    mel.eval('setAttr defaultResolution.deviceAspectRatio 1.777')
    mel.eval('setAttr defaultResolution.pixelAspect 1')

    cmds.setAttr('defaultRenderGlobals.currentRenderer',
                 'mayaHardware',
                 type='string')
    # mel.eval('unifiedRenderGlobalsWindow;')

    ## Default Render Globals
    cmds.setAttr('defaultRenderGlobals.imageFormat', 51)
    cmds.setAttr('defaultRenderGlobals.imfkey', 'exr', type='string')
    cmds.setAttr('defaultRenderGlobals.animation', 1)
    cmds.setAttr('defaultRenderGlobals.extensionPadding', 3)
    cmds.getAttr('defaultRenderGlobals.extensionPadding')
    cmds.setAttr('defaultRenderGlobals.periodInExt', 1)
    cmds.setAttr('defaultRenderGlobals.outFormatControl', 0)
    cmds.setAttr('defaultRenderGlobals.putFrameBeforeExt', 1)
    cmds.setAttr('defaultRenderGlobals.enableDefaultLight', 0)
    cmds.setAttr('defaultResolution.aspectLock', 0)

    ## Set Hardware render globals
    cmds.setAttr("hardwareRenderGlobals.colorTextureResolution", 512)
    cmds.setAttr("hardwareRenderGlobals.bumpTextureResolution", 1024)
    cmds.setAttr("hardwareRenderGlobals.enableNonPowerOfTwoTexture", 1)
    cmds.setAttr("hardwareRenderGlobals.culling", 0)
    cmds.setAttr("hardwareRenderGlobals.numberOfSamples", 9)
    cmds.setAttr("hardwareRenderGlobals.textureCompression", 0)
    cmds.setAttr("hardwareRenderGlobals.motionBlurByFrame", .5)
    cmds.setAttr("hardwareRenderGlobals.numberOfExposures", 3)
    cmds.setAttr("hardwareRenderGlobals.maximumGeometryCacheSize", 64)
    cmds.setAttr("hardwareRenderGlobals.enableGeometryMask", 1)
    cmds.setAttr("hardwareRenderGlobals.blendSpecularWithAlpha", 0)
    cmds.setAttr("hardwareRenderGlobals.enableHighQualityLighting", 1)
    cmds.setAttr("hardwareRenderGlobals.frameBufferFormat", 1)
Esempio n. 53
0
def export_transformsBake(targets, fileName=None):

    import sgBFunction_fileAndPath
    import sgBFunction_dag
    import cPickle

    if not fileName:
        scenePath = cmds.file(q=1, sceneName=1)
        if scenePath:
            sceneFolder = '/'.join(scenePath.split('/')[:-1])
            fileName = sceneFolder + '/transformsBake/bakeFile.txt'
        else:
            fileName = sgBFunction_fileAndPath.getMayaDocPath(
            ) + '/transformsBake/bakeFile.txt'
    defaultExportTransformBakePath = sgBFunction_fileAndPath.getMayaDocPath(
    ) + '/defaultExportTransformsBake.txt'

    exTargets = []
    for target in targets:
        if cmds.nodeType(target) != 'transform': continue
        cloneH = sgBFunction_dag.getParents(target)
        cloneH.append(cmds.ls(target, l=1)[0])
        exTargets += cloneH

    exTargets = list(set(exTargets))
    exTargets.sort()
    exTargetMtxs = [[] for i in range(len(exTargets))]

    minFrame = cmds.playbackOptions(q=1, min=1)
    maxFrame = cmds.playbackOptions(q=1, max=1)
    unit = cmds.currentUnit(q=1, time=1)

    for t in range(int(minFrame), int(maxFrame + 1)):
        cmds.currentTime(t)
        for i in range(len(exTargets)):
            exTargetMtx = cmds.getAttr(exTargets[i] + '.m')
            exTargetMtxs[i].append(exTargetMtx)

    fileName = sgBFunction_fileAndPath.makeFile(fileName)
    f = open(fileName, 'w')
    datas = [unit, minFrame, maxFrame]
    for i in range(len(exTargets)):
        extargetName = exTargets[i].replace(':', '_')
        datas.append([extargetName, exTargetMtxs[i]])
    cPickle.dump(datas, f)
    f.close()

    f = open(defaultExportTransformBakePath, 'w')
    cPickle.dump(fileName, f)
    f.close()

    print "Export Path : ", fileName
Esempio n. 54
0
def GetFPS():
    fps = 24
    tunit = cmds.currentUnit(time=True, q=True)
    fpsMap = {
        '2fps': 2,
        '3fps': 3,
        '4fps': 4,
        '5fps': 5,
        '6fps': 6,
        '8fps': 8,
        '10fps': 10,
        '12fps': 12,
        'game': 15,
        '16fps': 2,
        '20fps': 2,
        '23.976fps': 2,
        'film': 24,
        'pal': 25,
        '29.97fps': 2,
        'ntsc': 30,
        '40fps': 30,
        '47.952fps': 30,
        'show': 48,
        'palf': 50,
        '59.94fps': 50,
        'ntscf': 60,
        '75fps': 70,
        '80fps': 80,
        '100fps': 100,
        '120fps': 120,
        '125fps': 125,
        '150fps': 150,
        '200fps': 200,
        '240fps': 240,
        '250fps': 250,
        '300fps': 300,
        '375fps': 375,
        '400fps': 400,
        '500fps': 500,
        '600fps': 600,
        '750fps': 750,
        '1200fps': 1200,
        '1500fps': 1500,
        '2000fps': 2000,
        '3000fps': 3000,
        '6000fps': 6000,
        '44100fps': 44100,
        '48000fps': 48000,
    }
    if fpsMap.has_key(tunit):
        fps = fpsMap[tunit]
    return fps
Esempio n. 55
0
	def set_defaults(self):
		""" Automatically set some defaults from the shot settings for a new
			scene.
		"""
		unit = os.getenv('IC_LINEAR_UNIT', 'cm')
		angle = os.getenv('IC_ANGULAR_UNIT', 'deg')
		timeFormat = os.getenv('IC_TIME_UNIT', 'pal')
		startFrame = int(os.getenv('IC_STARTFRAME', '1001'))
		endFrame = int(os.getenv('IC_ENDFRAME', '1100'))
		inFrame = int(os.getenv('IC_INFRAME', startFrame))
		outFrame = int(os.getenv('IC_OUTFRAME', endFrame))
		psExecutable = os.getenv('IC_PS_EXECUTABLE', '')
		djvExecutable = os.getenv('IC_DJV_EXECUTABLE', '')

		# Set defaults for Maya startup
		# mc.currentUnit(l=unit, a=angle, t=timeFormat)
		try:
			mc.currentUnit(l=unit)
			mc.optionVar(sv=('workingUnitLinear', unit))
			mc.optionVar(sv=('workingUnitLinearDefault', unit))
		except RuntimeError:
			mc.warning("Unable to set linear unit.")

		try:
			mc.currentUnit(a=angle)
			mc.optionVar(sv=('workingUnitAngular', angle))
			mc.optionVar(sv=('workingUnitAngularDefault', angle))
		except RuntimeError:
			mc.warning("Unable to set angular unit.")

		try:
			mc.currentUnit(t=timeFormat)
			mc.optionVar(sv=('workingUnitTime', timeFormat))
			mc.optionVar(sv=('workingUnitTimeDefault', timeFormat))
		except RuntimeError:
			mc.warning('Unable to set time unit.')

		mc.optionVar(fv=('playbackMinRangeDefault', startFrame))
		mc.optionVar(fv=('playbackMinDefault', inFrame))
		mc.optionVar(fv=('playbackMaxRangeDefault', endFrame))
		mc.optionVar(fv=('playbackMaxDefault', outFrame))

		mc.optionVar(sv=('upAxisDirection', 'y'))

		mc.optionVar(sv=('EditImageDir', psExecutable))
		mc.optionVar(sv=('PhotoshopDir', psExecutable))

		mc.optionVar(sv=('PlayblastCmdAvi', djvExecutable))
		mc.optionVar(sv=('PlayblastCmdQuicktime', djvExecutable))
		mc.optionVar(sv=('ViewImageDir', djvExecutable))
		mc.optionVar(sv=('ViewSequenceDir', djvExecutable))

		mc.playbackOptions(
			animationStartTime=startFrame, 
			minTime=inFrame, 
			maxTime=outFrame, 
			animationEndTime=endFrame, 
			playbackSpeed=0, 
			maxPlaybackSpeed=1)
Esempio n. 56
0
def timeRange(*arg):
    # Set to normal mode for all display layers
    dpLayers = cmds.ls(type='displayLayer')
    for dpLay in dpLayers:
        if dpLay == 'defaultLayer':
            continue
        cmds.setAttr('%s.displayType' % dpLay, 0)

    # Set fps to PAL
    cmds.currentUnit(time='pal')

    setFrameRange()

    cmds.editRenderLayerGlobals(currentRenderLayer='defaultRenderLayer')

    # Turn off dummy
    allCtrls = cmds.ls(type='transform')
    for ctrl in allCtrls:
        if 'ROOT' in ctrl:
            if cmds.objExists('%s.Dummy' % ctrl):
                cmds.cutKey(ctrl, at='Dummy', cl=True)
                cmds.setAttr('%s.Dummy' % ctrl, 0)
Esempio n. 57
0
    def test_bwav_handler(self):
        '''
        test the bwav handler and formatting of the data
        '''
        assert self.audioNode.isBwav()
        #print self.audioNode.bwav_timecodeFormatted()
        cmds.currentUnit(time='ntscf')
        assert r9General.getCurrentFPS() == 60
        #print 'ntscf' ,  self.audioNode.bwav_timecodeFormatted()
        assert self.audioNode.bwav_timecodeFormatted() == '01:26:04:11'
        cmds.currentUnit(time='pal')
        assert r9General.getCurrentFPS() == 25
        #print 'pal : ', self.audioNode.bwav_timecodeFormatted()
        assert self.audioNode.bwav_timecodeFormatted() == '01:26:04:05'
        #print self.audioNode.bwav_timecodeFormatted(smpte=False)
        assert self.audioNode.bwav_timecodeFormatted(
            smpte=False) == '01:26:04:172'
        assert self.audioNode.bwav_timecodeReference() == 227739993
        assert self.audioNode.bwav_timecodeMS() == 5164172.1768707484

        #need to get the bWav header to bind it to the var
        self.audioNode.bwav_getHeader()
        assert self.audioNode.bwav_HeaderData == {
            'AudioFormat': 0,
            'BextVersion': 0,
            'BitsPerSample': 0,
            'ChunkSize': 732516,
            'Description':
            'This is a unitTest file for validating the Red9 broadcast wav extraction of metaData',
            'Format': 'WAVE',
            'InternalFormat': 'fmt ',
            'OriginationDate': '2014-03-03',
            'OriginationTime': '10:00:00',
            'Originator': 'Pro Tools',
            'OriginatorReference': 'ffgDDffdhgff',
            'Subchunk1Size': 16,
            'TimeReference': 227739993,
            'TimeReferenceHigh': 0
        }
Esempio n. 58
0
    def fSceneTidy(self):
        cmds.currentUnit(linear="m")
        geoList = cmds.ls(g=True)
        grp = cmds.group(geoList, absolute=1)
        scenePosition = cmds.xform(grp, q=1, ws=1, rp=1)
        scenePosition = [
            -1 * scenePosition[0], -1 * scenePosition[1], scenePosition[2]
        ]
        #
        bbox = cmds.exactWorldBoundingBox(geoList)
        constH = 23
        xValue = bbox[3] - bbox[0]
        yValue = bbox[4] - bbox[1]
        zValue = bbox[5] - bbox[2]
        tValue = 0
        if xValue > tValue: tValue = xValue
        if yValue > tValue: tValue = yValue
        if zValue > tValue: tValue = zValue
        sceneScale = constH / tValue
        cmds.ungroup(grp)

        return (scenePosition, sceneScale)
Esempio n. 59
0
    def checkUnits(self):

        #load custom units from cfg file cfgl.configLoader()[9]
        custom_sys_units = cfgl.configLoader()[9]

        cur_work_units = cmds.currentUnit(query=True)

        #check units change Job
        UnitsCheckerJob = cmds.scriptJob(
            runOnce=False, event=['linearUnitChanged', self.UnitChanger])

        if custom_sys_units != cur_work_units:
            cmds.currentUnit(linear=custom_sys_units)

            if custom_sys_units == 'm':
                self.cboxSysUnits.setCurrentIndex(0)

            if custom_sys_units == 'cm':
                self.cboxSysUnits.setCurrentIndex(1)

            if custom_sys_units == 'mm':
                self.cboxSysUnits.setCurrentIndex(2)

            print "PolygonTools: Units changed to ", custom_sys_units
            self.lblInfo_01.setText("Units changed to " + custom_sys_units)

        else:
            if custom_sys_units == 'm':
                self.cboxSysUnits.setCurrentIndex(0)

            if custom_sys_units == 'cm':
                self.cboxSysUnits.setCurrentIndex(1)

            if custom_sys_units == 'mm':
                self.cboxSysUnits.setCurrentIndex(2)

            print "PolygonTools: Units is ", custom_sys_units
            self.lblInfo_01.setText("Units is " + custom_sys_units)
Esempio n. 60
0
def setup():
    assert __import__("pyblish_maya").is_setup(), (
        "mindbender-core depends on pyblish_maya which has not "
        "yet been setup. Run pyblish_maya.setup()")

    from mindbender import api, maya
    api.install(maya)

    FPS = {
        "12": "12fps",
        "15": "game",
        "16": "16fps",
        "24": "film",
        "25": "pal",
        "30": "ntsc",
        "48": "show",
        "50": "palf",
        "60": "ntscf"
    }.get(os.getenv("MINDBENDER_FPS"), "pal")  # Default to "pal"

    # Load dependencies
    cmds.loadPlugin("AbcExport.mll", quiet=True)
    cmds.loadPlugin("AbcImport.mll", quiet=True)

    EDIT_IN = getenv("MINDBENDER_EDIT_IN", int) or 101
    EDIT_OUT = getenv("MINDBENDER_EDIT_OUT", int) or 201
    RESOLUTION_WIDTH = getenv("MINDBENDER_RESOLUTION_WIDTH", int) or 1920
    RESOLUTION_HEIGHT = getenv("MINDBENDER_RESOLUTION_HEIGHT", int) or 1080

    cmds.setAttr("defaultResolution.width", RESOLUTION_WIDTH)
    cmds.setAttr("defaultResolution.height", RESOLUTION_HEIGHT)
    cmds.currentUnit(time=FPS)
    cmds.playbackOptions(minTime=EDIT_IN)
    cmds.playbackOptions(maxTime=EDIT_OUT)
    cmds.playbackOptions(animationStartTime=EDIT_IN)
    cmds.playbackOptions(animationEndTime=EDIT_OUT)
    cmds.playbackOptions(minTime=EDIT_IN)
    cmds.playbackOptions(maxTime=EDIT_OUT)