Exemple #1
0
def getCurrentCamera():
    '''
    Returns the camera that you're currently looking through.
    If the current highlighted panel isn't a modelPanel, 
    '''
    
    panel = mc.getPanel(withFocus=True)
    
    if mc.getPanel(typeOf=panel) != 'modelPanel':
        #just get the first visible model panel we find, hopefully the correct one.
        for p in mc.getPanel(visiblePanels=True):
            if mc.getPanel(typeOf=p) == 'modelPanel':
                panel = p
                mc.setFocus(panel)
                break
    
    if mc.getPanel(typeOf=panel) != 'modelPanel':
        OpenMaya.MGlobal.displayWarning('Please highlight a camera viewport.')
        return False
    
    camShape = mc.modelEditor(panel, query=True, camera=True)

    if not camShape:
        return False
    
    if mc.nodeType(camShape) == 'transform':
        return camShape
    elif mc.nodeType(camShape) == 'camera':
        return mc.listRelatives(camShape, parent=True)[0]
    def takePictureProcess(self, *args):
        global screenShotPanelVar
        #get asset name from main textScrollList
        assetNameVar=cmds.textScrollList('assetTextScroll',q=True,si=True)
        if assetNameVar==None:
            cmds.confirmDialog(icn='warning', t='Error', m='No asset selected from asset list.', button=['Ok'])
            raise StandardError, 'error : no asset selected from asset list'
        assetNameVar=assetNameVar[0]

        #determin asset type based on assetName Var
        assetTypeVar=''
        for chk in veRegCore.listAssetTable():
            if chk[1]==str(assetNameVar):
                assetTypeVar=chk[2]
        if assetTypeVar=='':
            cmds.confirmDialog(icn='warning', t='Error', m='Cannot find record for '+str(assetNameVar)+'!',\
                               button=['Ok'])
            raise ValueError, 'error : database anomaly record non exists'

        #image exporting instruction
        cmds.select(cl=True)
        cmds.setFocus(screenShotPanelVar)
        modelsPanelVar=apiUI.M3dView.active3dView()
        imageVar=api.MImage()
        modelsPanelVar.readColorBuffer(imageVar, True)
        imageVar.writeToFile(assetRootVar+'/'+assetTypeVar+'/'+assetNameVar+'/preview.png','png')

        #clear preview taking window
        cmds.layoutDialog(dismiss='SET AS PREVIEW')

        #refresh
        self.listLegacyAndPicture()
        return
Exemple #3
0
def denyDrops(*args):
    try:
        from PySide import QtGui
        import shiboken
    except:
        cmds.warning('Cannot import PySide or shiboken, skipping...')
        return

    panels = args or cmds.lsUI(panels=True, l=True) or list()
    for p in panels:
        if not cmds.objectTypeUI(p) == 'modelEditor':
            continue

        cmds.setFocus(p)
        mp = cmds.playblast(activeEditor=True)
        mp = omui.MQtUtil.findControl(mp)

        try:
            mp = shiboken.wrapInstance(long(mp), QtGui.QWidget)
        except OverflowError:
            continue

        if mp.acceptDrops():
            mp.setAcceptDrops(False)
            om.MGlobal.displayInfo('Denied drops for editor: %s' % p)
 def UPDATECONTROLLERfn(self,*args):
     global NEWNAMEtxtfld, CONTROLLERtxtscr, CACHEsrvr, IMAGEimg, SCRSHTPANEL2var
     if cmds.textScrollList(CONTROLLERtxtscr,q=True,si=True)==None:
         cmds.confirmDialog(icon='warning',title='Message',message='Controller not selected', button=['Ok'])
         cmds.error('NO CONTROLLER SELECTED')  
         
     REPLYvar=cmds.confirmDialog(icon='question', title='Message',message='This will overwrite the selected file. Proceed?', button=['Yes','No'])    
     if REPLYvar=='Yes':
         cmds.select(cl=True)
         cmds.setFocus(SCRSHTPANEL2var)
         MODELPANELvar=apiUI.M3dView.active3dView()
         IMAGEvar=api.MImage()
         MODELPANELvar.readColorBuffer(IMAGEvar, True)            
         IMAGEvar.writeToFile(CACHEsrvr+'/library/'+'ctrlimg_'+cmds.textScrollList(CONTROLLERtxtscr,q=True,si=True)[0][8:]+'.png','png')
         
         cmds.file(rename=CACHEsrvr+'library/'+cmds.textScrollList(CONTROLLERtxtscr,q=True,si=True)[0]+'.ma')
         cmds.file( save=True, type='mayaAscii' )  
         
         if os.path.isdir('C:/workspace/library/')==False:
             os.mkdir('C:/workspace/library/')
         TIMEvar=cmds.date(f='YYYYYYMMDDhhmmss')  
         cmds.file(rename='C:/workspace/library/'+cmds.textScrollList(CONTROLLERtxtscr,q=True,si=True)[0]+'_'+TIMEvar+'.ma')
         cmds.file( save=True, type='mayaAscii' )  
     else:
         cmds.error('CANCELLED BY USER')
     return
 def cmdRename(self, *args):
     names = cmds.textScrollList(self.browseForm.scroll, q=True, si=True)
     if len(names) > 1:
         message('Too many sets selected', warning=True)
     else:
         name = names[0]
         new = cmds.textField(self.createSetForm.field, q=True, tx=True)
         if new:
             path = os.path.join(self.path, new + self.ext)
             if name != new:
                 if not os.path.isfile(path):
                     os.rename(os.path.join(self.path, name + self.ext), os.path.join(self.path, new + self.ext))
                     self.populateBrowse()
                     cmds.textScrollList(self.browseForm.scroll, e=True, si=new)
                     cmds.setFocus(self.browseForm.scroll)
                     self.renameUI()
                 else:
                     self.conflictName = new
                     self.rename = name
                     self.overwriteUI()
             else:
                 self.renameUI()
                 message('Cancelled', maya=True, warning=False)
         else:
             message('Enter a new name in the field.', maya=True, warning=True)
Exemple #6
0
    def delete_locators(self):
        try:
            cmds.setFocus("MayaWindow")
            selection = cmds.ls(sl=True)
            if selection:
                for i in selection:
                    maya_object = i
                    for item in [
                            self.listWidget.item(i)
                            for i in range(self.listWidget.count())
                    ]:
                        if item.text() == maya_object:
                            item.setHidden(True)
                    if maya_object in cmds.listRelatives('GSnap', c=True):
                        cmds.delete(maya_object)
                return

            msg = QMessageBox()
            msg.setWindowTitle("X")
            msg.setText("Delete all Locators?")
            msg.setWindowIcon(self.icon)
            msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
            text = msg.exec_()

            if text == msg.Yes:
                cmds.delete("GSnap")
                self.listWidget.clear()
                cmds.setFocus("MayaWindow")

        except Exception as e:
            print("GSnap Delete Error ::: " + str(e.message))
 def cmdOverwrite(self, *args):
     new = cmds.textField(self.createSetForm.field, q=True, tx=True)
     # ensure context hasn't changed
     if new == self.conflictName:
         # delete existing file with 'new' name
         os.remove(os.path.join(self.path, new + self.ext))
         #
         if not self.rename:
             # if overwriting from create set, need new selection, export
             selection = cmds.ls(sl=True, fl=True)
             if selection:
                 selection = ss.outputDict(selection)
             ss.exportFile(filePath=os.path.join(self.path, new + self.ext), sel=selection)
             self.conflictName = ''
         else:
             # if overwriting from rename set, rename (need current name)
             os.rename(os.path.join(self.path, self.rename + self.ext), os.path.join(self.path, new + self.ext))
             self.rename = False
         #
         self.populateBrowse()
         cmds.textScrollList(self.browseForm.scroll, e=True, si=new)
         self.renameUI()
         self.populatePreview()
         cmds.setFocus(self.browseForm.scroll)
         message('Select set has been overwritten:  ' + new, warning=False)
     else:
         self.renameUI()  # reset ui
         cmds.textField(self.createSetForm.field, e=True, tx=new)
         self.cmdCreate()
Exemple #8
0
def changeViewRendererToVP2():
    """
    change persp view port display renderer to viewport2
    """
    persp_panel = "modelPanel4"
    cmds.setFocus(persp_panel)

    cmds.modelEditor(persp_panel, rendererName="vp2Renderer", edit=True)
Exemple #9
0
 def turnOffCreateNewSetField(self):
     
     if not cmds.columnLayout(self.createNewSetLayout, query=True, visible=True): return
     
     cmds.iconTextButton (self.plusBtn, edit=True, visible=True, w=25)
     cmds.columnLayout(self.createNewSetLayout, edit=True, visible=False, w=1) 
     viewports = [view for view in cmds.getPanel(type='modelPanel') if view in cmds.getPanel(visiblePanels=True)]
     if len(viewports) > 0: cmds.setFocus(viewports[0])
     self.adjustButtonsWidth() 
def outliner_focus():
    outliner = [i for i in cmds.lsUI(editors=1) if 'outliner' in i]
    if outliner:
        outliner = outliner[0]
    else:
        return

    cmds.outlinerEditor(outliner, edit=1, showSelected=1)
    cmds.setFocus(outliner)
Exemple #11
0
 def turnOnCreateNewSetField(self):
     
     cmds.iconTextButton (self.plusBtn, edit=True, visible=False, w=1)
     cmds.columnLayout(self.createNewSetLayout, edit=True, visible=True, w=self.createRenameLayoutW) 
     self.turnOffRenameSetField()
     cmds.textField(self.createNewSetTextField, edit=True, text=self.guessNewSetName())
     self.highlightColorSelection()
     cmds.setFocus(self.createNewSetTextField)  
     self.adjustButtonsWidth() 
def changeTarget():
	target = cmds.textField(targetField, query=True, text=True)
	targEx = cmds.objExists(target)
	if (targEx == True):
		cmds.setFocus(startField)
		return target
	else:
		print "ERROR: target does not exist"
		cmds.textField(targetField, edit=True, text="joint, control, etc")
		return 0
Exemple #13
0
 def errorClicked(self, *args):
     if args[0] is None:
         return
     try:
         selectedItems = ["*" + i.text() for i in args[0].listWidget().selectedItems()]
         cmds.select(selectedItems, r=True)
         cmds.setFocus("MayaWindow")
     except ValueError:
         """ When channels/attributes/etc are selected, do not try to select """
         pass
Exemple #14
0
    def generate_python_curve():

        not_curve_error = "Please make sure you selected a Nurbs Curve or a Bezier Curve object before generating it"

        if len(cmds.ls(selection=True)) != 0:
            getcontext().prec = 5

            shape = cmds.listRelatives(cmds.ls(sl=1)[0], s=1, fullPath=True)[0]
            type_checker = str(cmds.objectType(shape))

            if "nurbsCurve" in type_checker or "bezierCurve" in type_checker:

                cvs = cmds.getAttr(shape + '.cv[*]')
                cvs_list = []

                for c in cvs:
                    cvs_list.append([
                        float(Decimal("%.3f" % c[0])),
                        float(Decimal("%.3f" % c[1])),
                        float(Decimal("%.3f" % c[2]))
                    ])

                if cmds.checkBoxGrp(settings, q=True, value1=True):
                    out = 'import maya.cmds as cmds\n\ncmds.curve(p='
                else:
                    out = 'cmds.curve(p='

                out += '[%s]' % ', '.join(map(str, cvs_list))
                out += ',d=' + str(cmds.getAttr(shape + '.degree')) + ')'

                if cmds.checkBoxGrp(settings, q=True, value2=True):
                    out += '\n\ncmds.closeCurve(ch=False, ps=False, rpo=True)'
                else:
                    pass

                print("#" * 100)
                print out
                print("#" * 100)

                cmds.scrollField(output_python,
                                 edit=True,
                                 wordWrap=True,
                                 text=out,
                                 sl=True)
                cmds.setFocus(output_python)
            else:
                cmds.warning(not_curve_error)
                cmds.scrollField(output_python,
                                 edit=True,
                                 wordWrap=True,
                                 text=not_curve_error,
                                 sl=True)
                cmds.setFocus(output_python)
        else:
            cmds.warning(not_curve_error)
Exemple #15
0
def test_parse_active_view():
    """Parse active view works"""

    # Set focus to modelPanel1 (assume it exists)
    # Otherwise the panel with focus (temporary panel from capture)
    # got deleted and there's no "active panel"
    import maya.cmds as cmds
    cmds.setFocus("modelPanel1")

    options = capture.parse_active_view()
    capture.capture(**options)
Exemple #16
0
    def update_filter(self, *args, **kwargs):
        sender = kwargs['sender']

        def filter_exp(x):
            return sender.text in x

        if sender.text:
            self.collection.update_filter(filter_exp)
        else:
            self.collection.update_filter(None)
        cmds.setFocus(self.window.main.flt.filter_text)
Exemple #17
0
 def set_outliner_persp(self):
     # set named panel layout
     self.set_named_panel_layout('Persp/Outliner')
     # get persp panel
     perspPanel = cmds.getPanel( withLabel='Persp View')
     # set foucs to persp panel
     cmds.setFocus(perspPanel)
     # set display mode to wireFrame
     mel.eval('DisplayWireframe')
     # set low quality display
     mel.eval('LowQualityDisplay')
    def wrapper_function(*args, **kwars):
        # runs decorated function
        function_exec = function(*args, **kwars)

        if not cmds.about(batch=True):

            logger.debug("Focusing Flex window: {}".format(FLEX_UI_NAME))
            # sets focus on Flex window
            cmds.setFocus(FLEX_UI_NAME)

        return function_exec
Exemple #19
0
 def set_outliner_persp(self):
     # set named panel layout
     self.set_named_panel_layout('Persp/Outliner')
     # get persp panel
     perspPanel = cmds.getPanel(withLabel='Persp View')
     # set foucs to persp panel
     cmds.setFocus(perspPanel)
     # set display mode to wireFrame
     mel.eval('DisplayWireframe')
     # set low quality display
     mel.eval('LowQualityDisplay')
	def __init__(self):

		# Collect Variables: Paths
		fullPath = str(cmds.file(sceneName=True, q=True))
		self.rootFolder = "/".join(fullPath.split("/")[:-1])

		# Collect Variables: SceneName-Parts
		try:
			sceneName = fullPath.split("/")[-1]
			self.assetName = sceneName.split("_")[0]
			self.taskName = sceneName.split("_")[1]
			self.artist = vuPipelineHelpers.getArtist()
			self.sceneType = sceneName.split(".")[-1]
		except:
			mayaUtils.errorWindow_NamingConvention()
			return

		self.version = "v" + ("000" + str(VersionControl.getLatest(self.rootFolder, up=1, getNum=True)))[-3:]

		self.window = cmds.window("klPipeline_SaveIncr", title="Krotenlied-Pipeline: SaveScene+1", sizeable=False)

		# Header
		cmds.columnLayout(parent=self.window)
		cmds.image(image = HEADER_PATH)
		cmds.separator(h=5, vis=True, st='none')

		cmds.rowColumnLayout(parent=self.window, numberOfColumns=6)

		# Labels
		cmds.text( al="left", w=75, label='Name')
		cmds.text( al="left", w=50, label='Task')
		cmds.text( al="left", w=50, label='Version' )
		cmds.text( al="left", w=40, label='Artist')
		cmds.text( al="left", w=200, label='Comment')
		cmds.text( al="left", w=25, label='')

		# TextFields
		cmds.textField(ed=False, w=75, tx=self.assetName)
		cmds.textField(ed=False, w=50, tx=self.taskName)
		cmds.textField(ed=False, w=50, tx=self.version)
		cmds.textField(ed=False, w=40, tx=self.artist)
		self.textComment = cmds.textField(w=200, enterCommand=self.btnSave)
		cmds.textField(ed=False, w=25, tx="." + self.sceneType)

		# Button
		cmds.rowColumnLayout(parent=self.window, numberOfColumns=2)

		cmds.separator(w=300, h=20, vis=True, st='none')
		cmds.separator(st='none')
		cmds.separator(st='none')
		cmds.button(h=30, w=100, label='Save+1', command=self.btnSave)

		cmds.showWindow()
		cmds.setFocus(self.textComment)
Exemple #21
0
 def cmd(self):
     mel.eval('setNamedPanelLayout "Single Perspective View"')
     cmds.modelEditor('modelPanel4', e=1, twoSidedLighting=0, udm=1)
     cmds.setFocus('modelPanel4')
     mel.eval('DisplayShaded')
     self.cont = u'单视图显示\n'
     self.cont += u'单个默认灯光\n'
     self.cont += u'使用默认材质显示\n'
     self.cont += u'实体显示\n'
     self.cont += u'\n请检查各物体的法线...\n'
     return .5
def changeSamples():
	samples = cmds.intField(samplesField, query=True, value=True)
	end = cmds.intField(endField, query=True, value=True)
	start = cmds.intField(startField, query=True, value=True)
	# can't be more samples than frame range
	if ((end-start)>=samples):
		cmds.setFocus(startField)
		return samples
	else:
		print "ERROR: too many samples for frame range"
		cmds.intField(samplesField, edit=True, value=end-start)
		return (end-start)
Exemple #23
0
    def turnOffRenameSetField(self):
        
        if not cmds.columnLayout(self.renameSetLayout, query=True, visible=True): return
        
        self.sortSelSetButtons()

        viewports           = [view for view in cmds.getPanel(type='modelPanel') if view in cmds.getPanel(visiblePanels=True)]            
        self.setToRename    = None   
        
        cmds.columnLayout   (self.renameSetLayout, edit=True, visible=False, w=1) 
        if len(viewports) > 0:  cmds.setFocus(viewports[0])   
        self.adjustButtonsWidth() 
Exemple #24
0
 def errorClicked(self, *args):
     if args[0] is None:
         return
     try:
         selectedItems = [
             "*" + i.text() for i in args[0].listWidget().selectedItems()
         ]
         cmds.select(selectedItems, r=True)
         cmds.setFocus("MayaWindow")
     except ValueError:
         """ When channels/attributes/etc are selected,
             do not try to select """
         pass
Exemple #25
0
 def doubleClickCmd(self, *args):
     if cmds.window(self.subWindow, exists=True):
         cmds.deleteUI(self.subWindow, window=True)
     self.subWindow = cmds.window(self.subWindow,
                                  title=self.subTitle,
                                  width=self.subSize[0],
                                  height=self.subSize[1])
     self.subLayout = cmds.rowColumnLayout(numberOfColumns=1)
     self.text = cmds.textField(self.focus,
                                width=280,
                                enterCommand=self.applyCmd)
     cmds.setFocus(self.focus)
     cmds.showWindow()
Exemple #26
0
def ref_menu_item(nsp, new_nsp):
    print ('Menu item update received: '+nsp+' - '+new_nsp)
    if new_nsp == 'Custom...':
        cmds.setFocus('animlib_ref_'+nsp+'_txt')
        return
    if new_nsp == 'Default':
        cmds.textField('animlib_ref_'+nsp+'_txt',
                       edit=True,
                       text = nsp)
    else:
        cmds.textField('animlib_ref_'+nsp+'_txt',
                       edit=True,
                       text = new_nsp)
    ref_update(None)
Exemple #27
0
 def _clearRenameMeshText(self, *args):
     """
     Changes the renameMeshText to the last selected object.
     """
     if not self._hasSelection():
         cmds.textField(self._renameMeshText,
                        e=True,
                        tx='                 Rename Mesh')
         cmds.setFocus(
             self._window)  #Prevents focus on textfield when no selection
         return
     lastSelected = cmds.ls(sl=True, tl=1)[0]
     renderMeshName = self._checkRenderMeshName(lastSelected)
     cmds.textField(self._renameMeshText, e=True, tx=renderMeshName)
def changeStart():
	start = cmds.intField(startField, query=True, value=True)
	end = cmds.intField(endField, query=True, value=True)
	# start must be less than end
	if (start < end):
		cmds.intField(samplesField, edit=True, value=end-start)
		cmds.setFocus(endField)
		return start
	else:
		print "WARNING: start must be less than end"
		cmds.intField(samplesField, edit=True, value=4)
		cmds.intField(endField, edit=True, value=start+1)
		cmds.setFocus(endField)
		return end-4
def changeEnd():
	end = cmds.intField(endField, query=True, value=True)
	start = cmds.intField(startField, query=True, value=True)
	# end must be greater than start
	if (end > start):
		cmds.intField(samplesField, edit=True, value=end-start)
		cmds.setFocus(colourField)
		return end
	else:
		print "WARNING: end must be greater than start"
		cmds.intField(samplesField, edit=True, value=4)
		cmds.intField(startField, edit=True, value=end-1)
		cmds.setFocus(colourField)
		return start+4
Exemple #30
0
    def turnOnCreateNewSetField(self):

        cmds.iconTextButton(self.plusBtn, edit=True, visible=False, w=1)
        cmds.columnLayout(self.createNewSetLayout,
                          edit=True,
                          visible=True,
                          w=self.createRenameLayoutW)
        self.turnOffRenameSetField()
        cmds.textField(self.createNewSetTextField,
                       edit=True,
                       text=self.guessNewSetName())
        self.highlightColorSelection()
        cmds.setFocus(self.createNewSetTextField)
        self.adjustButtonsWidth()
 def do_playblast(self,imageName=None):
     '''
     do plabyBlast 
     '''
     if not imageName:
         #set temp images name
         fd,imageName = tempfile.mkstemp(prefix='PlayBlast')
         fObj = os.fdopen(fd,'w')
         fObj.write( '' )
         fObj.close()
     self.Images = imageName
     
     print 'self.Images:%s' % self.Images
     cmds.setFocus(self.Panel_Current)
     self.evalDeferred_playblast(self.Images, self.Width, self.Height, 4)
def get_current_camera():
    # Find the first main panel --> "modelPanel4" first.
    active_panels = cmds.getPanel(visiblePanels=True)
    main_panel = 'modelPanel4'
    if main_panel in active_panels:
        index = active_panels.index(main_panel)
        panel = active_panels[index]
        cmds.setFocus(panel)
        return cmds.modelEditor(panel, query=True, camera=True)

    # Try to find the next best panel.
    for panel in active_panels:
        if 'modelPanel' in panel:
            cmds.setFocus(panel)
            return cmds.modelEditor(panel, query=True, camera=True)
    def endDrag(self):
        """
        :rtype: None
        """
        logger.debug('End Drag')
        self._buttonDown = None
        self._dragStartIndex = None
        if self._drag:
            del self._drag
            self._drag = None

        # Return the focus to Maya under any keypress/drag.
        # This allow the animators to create keyframes immediately afterward.
        from maya import cmds
        cmds.setFocus("MayaWindow")
Exemple #34
0
 def turnOnRenameSetField(self, renameSet):
             
     extracted           = self.extractInfoFromSelSet(renameSet)
     selSetName          = extracted["selSetName"]
     colorName           = extracted["colorName"]
     G.SS_lastColorUsed  = colorName
     self.setToRename    = renameSet
     
     cmds.columnLayout(self.renameSetLayout, edit=True, visible=True, w=self.createRenameLayoutW)
     self.turnOffCreateNewSetField()
     cmds.textField(self.renameSetTextField, edit=True, text=selSetName)
     self.sortSelSetButtons(renameSet=renameSet)
     cmds.setFocus(self.renameSetTextField)    
     self.adjustButtonsWidth() 
     self.highlightColorSelection()    
Exemple #35
0
    def do_playblast(self, imageName=None):
        '''
        do plabyBlast 
        '''
        if not imageName:
            #set temp images name
            fd, imageName = tempfile.mkstemp(prefix='PlayBlast')
            fObj = os.fdopen(fd, 'w')
            fObj.write('')
            fObj.close()
        self.Images = imageName

        print 'self.Images:%s' % self.Images
        cmds.setFocus(self.Panel_Current)
        self.evalDeferred_playblast(self.Images, self.Width, self.Height, 4)
Exemple #36
0
    def updateFilter(self, data):
        "Update the list based on the new filter"
        self.info('updateFilter')
        filterVal = cmds.textFieldGrp(self.wFilter, query=True, text=True)
        self.resList = cmds.resourceManager(nameFilter=filterVal + '*')
        if self.resList is None:
            self.resList = []

        # Populate the list with all icons from the resources
        cmds.textScrollList(self.wList, edit=True, removeAll=True)
        for name in self.resList:
            cmds.textScrollList(self.wList, edit=True, append=name)
        cmds.textScrollList(self.wList, edit=True, selectIndexedItem=1)
        self.updatePreview()
        cmds.setFocus(self.wList)
Exemple #37
0
def gridDropCallback(dragControl,dropControl,messages,x,y,dragTypes):
    print dragControl + '\n'
    print dropControl + '\n'
    print str(x) + ',' + str(y) + '\n'
    gridOrder = cmds.gridLayout('testGridLayout',q=True,go=True,fpn=True)
    dragName = dragControl.split('|')
    dropName = dropControl.split('|')
    dragOrder = gridOrder.index(dragName[-1])
    dropOrder = gridOrder.index(dropName[-1])
    cmds.gridLayout('testGridLayout',e=True,pos=[dragName[-1],dropOrder+1])
    cmds.gridLayout('testGridLayout',e=True,pos=[dropName[-1],dragOrder+1])
    cmds.setFocus('testGridLayout')
    
    print messages
    print dragTypes
def main(values):

    if (cmds.window("vpRenderWindow", exists=True)):
        cmds.deleteUI("vpRenderWindow")

    leftW = marLeft + values[0]
    topW = marTop + (formY - values[1])
    resoX = values[2] - values[0]
    resoY = values[1] - values[3]

    mk_view("vpRenderWindow", values).show()
    cmds.window("vpRenderWindow", e=1, bgc=(0, 0, 0))

    cmds.setFocus('renderView')

    return 0
Exemple #39
0
    def snap_values(self):
        """ Snaps selected object 1 to object 2.
        If a constraint exists on object 1, grab it's parent, and reapply it after value change. """

        selected = cmds.ls(sl=True)

        if len(selected) < 2:
            return

        for i in cmds.listRelatives(selected[0], c=True):
            if "parentConstraint" not in str(
                    cmds.listRelatives(selected[0], c=True)):
                constraint = None
                constraint_parent = None
                break
            elif "parentConstraint" in str(i):
                constraint = i
                constraint_parent = cmds.listConnections(constraint,
                                                         source=True,
                                                         destination=False,
                                                         et=True,
                                                         type="transform")
                for i in constraint_parent:
                    if str(i) != str(selected[0]):
                        constraint_parent = i
                        break
                break

        if constraint_parent:
            cmds.delete(constraint)

        try:
            cmds.matchTransform(selected[0],
                                selected[1],
                                piv=False,
                                position=True,
                                rotation=True,
                                scale=False)
        except:
            pass

        if constraint_parent:
            cmds.parentConstraint(constraint_parent, selected[0], mo=True)

        cmds.select(selected[0], replace=True)
        self.update_widgets()
        cmds.setFocus("MayaWindow")
Exemple #40
0
    def turnOffRenameSetField(self):

        if not cmds.columnLayout(
                self.renameSetLayout, query=True, visible=True):
            return

        self.sortSelSetButtons()

        viewports = [
            view for view in cmds.getPanel(type='modelPanel')
            if view in cmds.getPanel(visiblePanels=True)
        ]
        self.setToRename = None

        cmds.columnLayout(self.renameSetLayout, edit=True, visible=False, w=1)
        if len(viewports) > 0: cmds.setFocus(viewports[0])
        self.adjustButtonsWidth()
Exemple #41
0
    def turnOffCreateNewSetField(self):

        if not cmds.columnLayout(
                self.createNewSetLayout, query=True, visible=True):
            return

        cmds.iconTextButton(self.plusBtn, edit=True, visible=True, w=25)
        cmds.columnLayout(self.createNewSetLayout,
                          edit=True,
                          visible=False,
                          w=1)
        viewports = [
            view for view in cmds.getPanel(type='modelPanel')
            if view in cmds.getPanel(visiblePanels=True)
        ]
        if len(viewports) > 0: cmds.setFocus(viewports[0])
        self.adjustButtonsWidth()
Exemple #42
0
    def update(self, key):
        #key
        if key == 'b_up':
            if self.test(self.playerPos, self.spin(self.playerMino)):
                self.playerMino = self.spin(self.playerMino)
        if key == 'b_left':
            if self.test([self.playerPos[0] - 1, self.playerPos[1]],
                         self.playerMino):
                self.playerPos[0] -= 1
        if key == 'b_right':
            if self.test([self.playerPos[0] + 1, self.playerPos[1]],
                         self.playerMino):
                self.playerPos[0] += 1
        if key == 'b_down':
            for lev in range(h):
                if not self.test([self.playerPos[0], self.playerPos[1] - lev],
                                 self.playerMino):
                    self.playerPos[1] -= lev - 1
                    self.isContact = True
                    self.timer = 20
                    break
        #fall
        if self.gameOverCount < 0:
            if self.timer == 0:
                if self.test([self.playerPos[0], self.playerPos[1] - 1],
                             self.playerMino):
                    self.playerPos[1] -= 1

                else:
                    if self.isContact:
                        self.put()
                        self.isContact = False
                        self.breakLine()
                        if not self.spown():
                            self.gameOverCount = 0
                    else:
                        self.isContact = True
        else:
            if self.gameOverCount < h:
                for x in range(w):
                    self.bo[x][self.gameOverCount] = 1
                self.gameOverCount += 1

        self.draw()
        self.timer = (self.timer + 1) % self.timerLevel
        cmds.setFocus('MayaWindow')
Exemple #43
0
def saveCurve(curve):
    shapes = utility.getShapes(curve)
    name = curve.split("|")[-1]
    info = {}
    info['name'] = name
    info['icon'] = name+'.png'
    info['shape'] = []
    for shape in shapes:
        curveInfo = cmds.shadingNode("curveInfo", au=1)
        cmds.connectAttr(shape+'.worldSpace[0]', curveInfo+'.inputCurve', f=1)
        shapeinfo = {
            'points': cmds.getAttr(curveInfo+'.cp[:]'),
            'degree': cmds.getAttr(shape+'.degree'),
            'knot': cmds.getAttr(curveInfo+'.knots[:]')
        }
        # print(cmds.getAttr(curveInfo+'.cp[:]'))
        # print(cmds.getAttr(shape+'.degree'))
        # print(cmds.getAttr(curveInfo+'.knots[:]'))
        cmds.delete(curveInfo)
        info['shape'].append(shapeinfo)
    cmds.select(curve)
    json_path = CURVE_PATH + '%s.json' % name
    img_path = CURVE_PATH + '%s.png' % name

    with open(json_path, 'w') as f:
        json.dump(info, f)

    window = cmds.window(w=120, h=131)
    cmds.paneLayout()
    panel = cmds.modelPanel()
    editor = cmds.modelPanel(panel, me=1, q=1)
    cmds.modelEditor(editor, e=1)
    cmds.modelEditor(editor, e=1, grid=0, hud=0,
                     manipulators=0, selectionHiliteDisplay=1)
    cmds.isolateSelect(panel, state=1)
    cmds.isolateSelect(panel, loadSelected=True)

    cmds.showWindow(window)
    cmds.setFocus(panel)
    cmds.viewFit(curve)
    cmds.refresh(cv=True, fe="png", fn=img_path)
    cmds.isolateSelect(panel, state=0)
    cmds.deleteUI(window)

    return info
Exemple #44
0
    def turnOnRenameSetField(self, renameSet):

        extracted = self.extractInfoFromSelSet(renameSet)
        selSetName = extracted["selSetName"]
        colorName = extracted["colorName"]
        G.SS_lastColorUsed = colorName
        self.setToRename = renameSet

        cmds.columnLayout(self.renameSetLayout,
                          edit=True,
                          visible=True,
                          w=self.createRenameLayoutW)
        self.turnOffCreateNewSetField()
        cmds.textField(self.renameSetTextField, edit=True, text=selSetName)
        self.sortSelSetButtons(renameSet=renameSet)
        cmds.setFocus(self.renameSetTextField)
        self.adjustButtonsWidth()
        self.highlightColorSelection()
Exemple #45
0
def UI(processCall = 'NA'):
	refItem = cmds.ls(selection = True, flatten=True); sortedRef = sorted(refItem) #orderedSelection=True - this was in the ls, took it out
	if sortedRef == []:sortedRef.append('nothing selected') #Used if nothing is selected in scene but tool is called.
	if cmds.window('renameUI', exists = True):
		cmds.deleteUI('renameUI')
	window = cmds.window("renameUI", w = 200, h = 100, mnb = False, mxb = False, title = "Rename Selection", sizeable = False)
	mainLayout = cmds.columnLayout(w = 200, h=100)
	cmds.text(label = "Name", align = 'left')
	cmds.textField("inputField", w=200, text=sortedRef[0])
	cmds.textField("replaceField", w=200)
	cmds.text(label = "Replace Top with Bottom", align = 'right')
	cmds.textField("withField", w=200)
	# add functions
	cmds.textField('inputField', edit = True, alwaysInvokeEnterCommandOnReturn = True, enterCommand = partial (process, processCall) )
	cmds.textField("replaceField", edit = True, alwaysInvokeEnterCommandOnReturn = True, enterCommand = partial (process, processCall) )
	cmds.textField("withField", edit = True, alwaysInvokeEnterCommandOnReturn = True, enterCommand = partial (process, processCall) )
	cmds.setFocus('withField') # set focus to the with field so it's easier to just tab to the input field
	cmds.showWindow(window)
Exemple #46
0
 def updateFilter(self, data):
     """
     Update the list based on the new filter
     """
     self.iconsOffset = 0
     if not data:
         self.resList = list(self.resources)
     else:
         self.resList = [e for e in self.resources if data in e.lower()]
     
     cmds.textScrollList(self.wList, edit=True, removeAll=True)
     for name in self.resList:
         cmds.textScrollList(self.wList, edit=True, append=name)
     cmds.textScrollList(self.wList, edit=True, selectIndexedItem=1)
     
     self.updateIconList()
     cmds.setFocus(self.wList)
     self.updatePreview()
Exemple #47
0
 def renameUI(self):
     if not self.alternateUI:
         self.alternateUI = True
         name = cmds.textScrollList(self.browseForm.scroll, q=True, si=True)[0]
         cmds.textField(self.createSetForm.field, e=True, text=name, ec=self.cmdRename)
         cmds.button(self.createSet.name, e=True, l=self.renameLabel, c=self.cmdRename, bgc=self.clr.blue)
         cmds.formLayout(self.selectionForm.form, e=True, en=False)
         cmds.formLayout(self.previewForm.form, e=True, en=False)
         cmds.setFocus(self.createSetForm.field)
     else:
         # reset UI
         self.alternateUI = False
         cmds.textField(self.createSetForm.field, e=True, text='', ec=self.cmdCreate, aie=True)
         cmds.button(self.createSet.name, e=True, l=self.createLabel, c=self.cmdCreate, bgc=self.clr.grey)
         cmds.formLayout(self.selectionForm.form, e=True, en=True)
         cmds.formLayout(self.previewForm.form, e=True, en=True)
         cmds.textField(self.createSetForm.field, e=True, bgc=self.clr.darkbg)
         cmds.setFocus(self.browseForm.scroll)
    def create_model_panel(self,width,height):
        '''create one tear off model panel for playblast
        '''
        # create tear off model panel
        self.Panel_Current = cmds.modelPanel(tearOff=True)
        
        # max model panel
        windows = set( cmds.lsUI( windows=True ) ) - set(u'MayaWindow')
        for win in windows:
            cmds.window( win, edit=True, widthHeight=(width+100, height+100) )

        cmds.modelEditor(self.Panel_Current,e=1,udm=0)
        cmds.modelEditor(self.Panel_Current,e=1,allObjects=0)
        cmds.modelEditor(self.Panel_Current,e=1,polymeshes=1,nurbsSurfaces=1)
        cmds.modelEditor(self.Panel_Current,e=1,cameraName=self.Camera)
        #
        #cmds.setFocus(self.Panel_Current)
        cmds.setFocus(self.Panel_Current)
Exemple #49
0
	def playblastHUD(self):
		if cmds.window('pb', exists = True):
			cmds.deleteUI('pb')
		window = cmds.window('pb', titleBar = 0, sizeable = False)
		icon = cmds.internalVar(upd = True) + 'icons/JR_icons/folder.jpg' # FOLDER ICON
		mainLayout = cmds.columnLayout(w = 180, h = 80)
		# Row and Column Layout Setup
		cmds.rowColumnLayout(nc = 3, cw = [(1, 50), (2, 60), (3, 60)] , columnOffset = [(1, 'both', 5), (2, 'both', 5), (3, 'both', 5)]   ) # first section relates to 1 and 2 columb widths
		# Radio Button Collection For 1080 and 720
		cmds.radioCollection()
		frameSize = cmds.text( label='Frame:', align = 'left' )
		i1080 = cmds.radioButton( label='1080', onc = partial( self.playblastSize, '1080' ) )
		i720 = cmds.radioButton( label='720',  onc = partial( self.playblastSize, '720'  ) )
		if Cache.playblastSize == [1920, 1080]:
			cmds.radioButton ( i1080, edit = True, select = True )
		elif Cache.playblastSize == [1280, 720]:
			cmds.radioButton ( i720, edit = True, select = True )
		# Radio Button Collection For AVI and MOV
		formatType = cmds.radioCollection()
		cmds.text( label='Format:', align = 'left' )
		avi = cmds.radioButton( label='avi', onc = partial( self.playblastFormat, 'avi' ) )
		qt = cmds.radioButton( label='mov', onc = partial( self.playblastFormat, 'qt' ) )
		if Cache.playblastFormat == 'qt':
			cmds.radioButton ( qt, edit = True, select = True )
		elif Cache.playblastFormat == 'avi':
			cmds.radioButton ( avi, edit = True, select = True )
		# Codec Section
		codecOptionMenu = cmds.optionMenu ('codecOptionMenu', width = 160, label = 'Codec:    ' ); cmds.text( label=''); cmds.text( label='' )
		self.playblastFormat(Cache.playblastFormat)
		menuItems = cmds.optionMenu('codecOptionMenu', query = True, itemListLong = True)
		if Cache.playblastCodec in menuItems:
			cmds.optionMenu ('codecOptionMenu', e=True, v=Cache.playblastCodec)
		# Custom Width and Height Area
		#cmds.text( label='Custom:', align = 'left' ); customWidth = cmds.textField(text = 'W'); customHeight = cmds.textField(text = 'H')
		# Location of Playblasts
		inputField = cmds.textField( w =120, text = 'Change Location')
		cmds.text( label='')
		cmds.symbolButton(w=20, h=20, image = icon )
		# focus on input field so when enter is pressed it can just begin
		cmds.setFocus(inputField) 
		# Button to start the playblast
		cmds.button(w=180, h=30, label = 'PLAYBLAST', parent = mainLayout, c= partial( self.playblastExecute ) )
		#cmds.textField(inputField, edit = True, alwaysInvokeEnterCommandOnReturn = True, enterCommand = partial( self.playblastExecute ) )
		cmds.showWindow(window)
Exemple #50
0
 def cmdCreate(self, *args):
     #
     name = cmds.textField(self.createSetForm.field, q=True, tx=True)
     if name != '':
         path = os.path.join(self.path, name + self.ext)
         if not os.path.isfile(path):
             selSet = self.cmdSelectionDict()
             ss.exportFile(path, selSet)
             self.populateBrowse()
             cmds.textScrollList(self.browseForm.scroll, e=True, si=name)
             self.populatePreview()
             cmds.textField(self.createSetForm.field, e=True, tx='')
             cmds.setFocus(self.browseForm.scroll)
         else:
             message('File of same name exists.', warning=True)
             self.conflictName = name
             self.overwriteUI()
     else:
         message('Name field is empty', warning=True)
Exemple #51
0
def Animposecam(sel_obj):
#    if mc.objExists('poseLibCaptureCamera'):
#        mc.delete('poseLibCaptureCamera')
    if not mc.objExists('poseLibCaptureCamera'):
        CurrentPanel  = mc.getPanel(withFocus=True)
        #print CurrentPanel
        if mc.getPanel(to=CurrentPanel!= "modelPanel") :   
            visPanel  = mc.getPanel(vis=True)    
            for name in visPanel:
                modelPanels= mc.getPanel(type= 'modelPanel')    
                if mc.getPanel (to = name == "modelPanel"):
                    mc.setFocus(name)
                    CurrentPanel = name
                    break
        if mel.eval('catch(`modelPanel -q -cam %s`)'%CurrentPanel):
            CurrentCamera = "persp"
        else:
            CurrentCamera = mc.modelPanel(CurrentPanel,q=1,cam=1)
        
        campos= mc.camera(CurrentCamera,q=1,position=1)
        camrot= mc.camera(CurrentCamera,q=1,rotation=1) 
        camwup= mc.camera(CurrentCamera,q=1,worldUp =1)
        camcoi= mc.camera(CurrentCamera,q=1,coi=1)
        focal = mc.camera(CurrentCamera,q=1,fl=1) 
        camShapeNode = mc.createNode("camera")
        camTopNode   = mc.listRelatives(camShapeNode,p=1) 
        mc.rename (camTopNode[0] ,'poseLibCaptureCamera')
        mc.hide('poseLibCaptureCamera')
        focalLengthTmp = 200
        nearClipTmp = .1
        farClipTmp = 10000
        mc.camera('poseLibCaptureCamera',e=1,
                position =[campos[0],campos[1],campos[2]],
                rotation =[camrot[0],camrot[1],camrot[2]],                 
                worldUp  =[camwup[0],camwup[1],camwup[2]],
                fl = focalLengthTmp,
                nearClipPlane = nearClipTmp,
                farClipPlane = farClipTmp)
    AnimposeCreateWindow(sel_obj)
    def snap(self):
        """Write four viewports to disk

        Returns:
            (list) paths to resulting 4 files

        """

        images = list()

        for index in range(4):
            # Panels start at index 1
            index += 1

            cmds.setFocus("modelPanel%i" % index)

            # Force a refresh, otherwise the setting
            # of the focus might not have time to come
            # into effect, resulting in duplicate
            # captures from the below.
            cmds.refresh()

            view = apiUI.M3dView.active3dView()

            image = api.MImage()
            view.readColorBuffer(
                image,
                True  # BGRA -> RGBA
            )

            fname = os.path.join(self.tempdir, "temp_%i.jpg" % index)
            image.writeToFile(fname, "jpg")
    
            images.append(fname)

        return images
Exemple #53
0
def play_view(view):
    """Play with specified viewport."""
    cmds.setFocus(view)
    destroy_window()
    play_button()
Exemple #54
0
def capture(camera=None,
            width=None,
            height=None,
            filename=None,
            start_frame=None,
            end_frame=None,
            frame=None,
            format='qt',
            compression='h264',
            quality=100,
            off_screen=False,
            viewer=True,
            isolate=None,
            maintain_aspect_ratio=True,
            overwrite=False,
            raw_frame_numbers=False,
            camera_options=None,
            viewport_options=None,
            display_options=None,
            complete_filename=None):
    """Playblast in an independent panel

    Arguments:
        camera (str, optional): Name of camera, defaults to "persp"
        width (int, optional): Width of output in pixels
        height (int, optional): Height of output in pixels
        filename (str, optional): Name of output file. If
            none is specified, no files are saved.
        start_frame (float, optional): Defaults to current start frame.
        end_frame (float, optional): Defaults to current end frame.
        frame (float or tuple, optional): A single frame or list of frames.
            Use this to capture a single frame or an arbitrary sequence of
            frames.
        format (str, optional): Name of format, defaults to "qt".
        compression (str, optional): Name of compression, defaults to "h264"
        off_screen (bool, optional): Whether or not to playblast off screen
        viewer (bool, optional): Display results in native player
        isolate (list): List of nodes to isolate upon capturing
        maintain_aspect_ratio (bool, optional): Modify height in order to
            maintain aspect ratio.
        overwrite (bool, optional): Whether or not to overwrite if file
            already exists. If disabled and file exists and error will be
            raised.
        raw_frame_numbers (bool, optional): Whether or not to use the exact
            frame numbers from the scene or capture to a sequence starting at
            zero. Defaults to False. When set to True `viewer` can't be used
            and will be forced to False.
        camera_options (CameraOptions, optional): Supplied camera options,
            using :class:`CameraOptions`
        viewport_options (ViewportOptions, optional): Supplied viewport
            options, using :class:`ViewportOptions`
        display_options (DisplayOptions, optional): Supplied display
            options, using :class:`DisplayOptions`
        complete_filename (str, optional): Exact name of output file. Use this
            to override the output of `filename` so it excludes frame padding.

    Example:
        >>> # Launch default capture
        >>> capture()
        >>> # Launch capture with custom viewport settings
        >>> view_opts = ViewportOptions()
        >>> view_opts.grid = False
        >>> view_opts.polymeshes = True
        >>> view_opts.displayAppearance = "wireframe"
        >>> cam_opts = CameraOptions()
        >>> cam_opts.displayResolution = True
        >>> capture('myCamera', 800, 600,
        ...         viewport_options=view_opts,
        ...         camera_options=cam_opts)

    """

    camera = camera or "persp"

    # Ensure camera exists
    if not cmds.objExists(camera):
        raise RuntimeError("Camera does not exist: {0}".format(camera))

    width = width or cmds.getAttr("defaultResolution.width")
    height = height or cmds.getAttr("defaultResolution.height")
    if maintain_aspect_ratio:
        ratio = cmds.getAttr("defaultResolution.deviceAspectRatio")
        height = width / ratio

    start_frame = start_frame or cmds.playbackOptions(minTime=True, query=True)
    end_frame = end_frame or cmds.playbackOptions(maxTime=True, query=True)

    # We need to wrap `completeFilename`, otherwise even when None is provided
    # it will use filename as the exact name. Only when lacking as argument
    # does it function correctly.
    playblast_kwargs = dict()
    if complete_filename:
        playblast_kwargs['completeFilename'] = complete_filename
    if frame:
        playblast_kwargs['frame'] = frame

    # (#21) Bugfix: `maya.cmds.playblast` suffers from undo bug where it
    # always sets the currentTime to frame 1. By setting currentTime before
    # the playblast call it'll undo correctly.
    cmds.currentTime(cmds.currentTime(q=1))

    padding = 10  # Extend panel to accommodate for OS window manager
    with _independent_panel(width=width + padding,
                            height=height + padding) as panel:
        cmds.setFocus(panel)

        with contextlib.nested(
             _maintain_camera(panel, camera),
             _applied_viewport_options(viewport_options, panel),
             _applied_camera_options(camera_options, panel, camera),
             _applied_display_options(display_options),
             _isolated_nodes(isolate, panel),
             _maintained_time()):

                output = cmds.playblast(
                    compression=compression,
                    format=format,
                    percent=100,
                    quality=quality,
                    viewer=viewer,
                    startTime=start_frame,
                    endTime=end_frame,
                    offScreen=off_screen,
                    forceOverwrite=overwrite,
                    filename=filename,
                    widthHeight=[width, height],
                    rawFrameNumbers=raw_frame_numbers,
                    **playblast_kwargs)

        return output
Exemple #55
0
def takePlayblast(silent = True, custom = False, customPath = None):
    renWidth = mc.getAttr("defaultResolution.width")
    renHeight = mc.getAttr("defaultResolution.height")
    aspRatio = renWidth/float(renHeight)
    width = renWidth/2 if renWidth > 960 else renWidth
    height = renHeight/2 if renWidth > 960 else renHeight
    mayaShot = ppc.MayaShot()
    if not mayaShot.validShot:
        msgWin("Warning", "Invalid Shot or Project", True)
        if not custom:
            return False
        else:
            viewport = getActiveViewport(silent)
            if not viewport: return False
            mc.setFocus(viewport)
            scCam = mc.modelPanel(viewport, q = True, cam = True)
            scCamSshp = mc.listRelatives(scCam, c = 1, s = 1, ni = 1)
            stereo = True if mc.nodeType(scCamSshp == "stereoRigCamera") else False
            soundName = "NoIdea"
    else:
        if round(aspRatio, 2) ==  1.78:
            width = 960
            height = 540
        else:
            width = mayaShot.projInfo.resWidth/2 if mayaShot.projInfo.resWidth > 1280 else mayaShot.projInfo.resWidth
            height = mayaShot.projInfo.resHeight/2 if mayaShot.projInfo.resWidth > 1280 else mayaShot.projInfo.resHeight
        soundName = "%s%s_aud"%(mayaShot.epSqName, mayaShot.shName)
        scCam = mayaShot.getSceneCamera(False)
        stereo = mayaShot.projInfo.stereo
        sceneCleanup(True)
    if not scCam or not mc.objExists(scCam):
        msgWin('Error', "Couldn't find a valid camera in the scene", silent)
        return False
    if stereo and custom:
        getCam = mc.confirmDialog(title = 'Select Camera', message = 'Which Stereo Camera do you want to take Playblast from?', button = ['Left','Center','Right','Cancel'], cb = 'Cancel', ds = 'Cancel')
        if getCam == 'Left':
            scCam = scCam.replace("_camCt", "_camLt")
        elif getCam == 'Right':
            scCam = scCam.replace("_camCt", "_camRt")
        elif getCam == 'Cancel':
            return False
    if mc.window('playBlastWindow', exists = 1): mc.deleteUI('playBlastWindow')
    if mc.windowPref ('playBlastWindow', exists = 1): mc.windowPref ('playBlastWindow', remove = 1)
    pbTmp = mc.window("playBlastWindow", wh = (1000, 700), te = 50, le = 50)
    mc.paneLayout()
    modPane = mc.modelPanel()
    mc.showWindow(pbTmp)
    mc.lookThru(scCam, modPane)
    mc.modelEditor(modPane, e=True, allObjects=0)
    mc.modelEditor(modPane, e=True, nurbsSurfaces=1, polymeshes=1,fluids=1,strokes=1)
    mc.modelEditor(modPane, e=True, da='smoothShaded')
    mc.modelEditor(modPane, e=True, av = True)
    sounds = mc.ls('%s*'%soundName, typ='audio')
    if not sounds:
        sounds = mc.ls(typ='audio')
    sound = sounds[0]  if sounds else ''
    st = mc.playbackOptions(q = True, ast = True)
    en = mc.playbackOptions(q = True, aet = True)
    blastPath = os.path.join(os.environ['TMP'], 'tempPlayblast.avi')
    if custom:
#        Find the highlighted range on timeSlider (if any)..
        aPlayBackSlider = mel.eval('$tmpVar=$gPlayBackSlider')
        times = mc.timeControl(aPlayBackSlider, q=True, rng=1)
        times = times.replace('"', '').split(':')
        if int(times[1]) != int(times[0]) +1 :  # 'll be currentTime & currentTime+1 evenif no range selected ==> Exclude that case!
            st = int(times[0])
            en = int(times[1]) -1
        finalPath = None
    else:
        st = 101
        en = 100 + mayaShot.frames
        finalPath = customPath if customPath else mayaShot.shotPath.replace(".%s"%mayaShot.projInfo.mayaExt, ".avi")
        saveVersion(finalPath)
    width = width*2
    height = height*2
    mc.playblast(st = st, et = en, fmt = 'movie', f = blastPath, s = sound, c = 'Lagarith', fo = True, orn = True, p = 50, qlt = 100, w = width, h = height)
    if finalPath:
        try:
            shutil.copyfile(blastPath, finalPath)
        except:
            msgWin("Error", "Error copying %s to %s"%(blastPath, finalPath), False)
    mc.deleteUI(pbTmp)
    return True
Exemple #56
0
def capture(camera=None,
            width=None,
            height=None,
            filename=None,
            start_frame=None,
            end_frame=None,
            format='qt',
            compression='h264',
            off_screen=False,
            viewer=True,
            isolate=None,
            maintain_aspect_ratio=True,
            camera_options=None,
            viewport_options=None):
    """Playblast in an independent panel

    Arguments:
        camera (str, optional): Name of camera, defaults to "persp"
        width (int, optional): Width of output in pixels
        height (int, optional): Height of output in pixels
        filename (str, optional): Name of output file. If
            none is specified, no files are saved.
        start_frame (float, optional): Defaults to current start frame.
        end_frame (float, optional): Defaults to current end frame.
        format (str, optional): Name of format, defaults to "qt".
        compression (str, optional): Name of compression, defaults to "h264"
        off_screen (bool, optional): Whether or not to playblast off screen
        viewer (bool, optional): Display results in native player
        isolate (list): List of nodes to isolate upon capturing
        maintain_aspect_ratio (bool, optional): Modify height in order to
            maintain aspect ratio.
        camera_options (CameraOptions, optional): Supplied camera options,
            using :class:`CameraOptions`
        viewport_options (ViewportOptions, optional): Supplied viewport
            options, using :class:`ViewportOptions`

    Example:
        >> # Launch default capture
        >> capture()

        >> # Launch capture with custom viewport settings
        >> view_opts = ViewportOptions()
        >> view_opts.grid = False
        >> view_opts.polymeshes = True
        >> view_opts.displayAppearance = "wireframe"
        >> cam_opts = CameraOptions()
        >> cam_opts.displayResolution = True
        >> capture('myCamera', 800, 600,
        ..           viewport_options=view_opts,
        ..           camera_options=cam_opts)

    """

    camera = camera or "persp"
    width = width or cmds.getAttr("defaultResolution.width")
    height = height or cmds.getAttr("defaultResolution.height")
    start_frame = start_frame or cmds.playbackOptions(minTime=True, query=True)
    end_frame = end_frame or cmds.playbackOptions(maxTime=True, query=True)

    with independent_panel(
            width=width,
            height=height,
            maintain_aspect_ratio=maintain_aspect_ratio) as panel:

        cmds.lookThru(panel, camera)
        cmds.setFocus(panel)

        assert panel in cmds.playblast(activeEditor=True)

        with applied_viewport_options(viewport_options, panel):
            with applied_camera_options(camera_options, panel, camera):
                with isolated_nodes(isolate, panel):
                    output = cmds.playblast(
                        compression=compression,
                        format=format,
                        percent=100,
                        quality=100,
                        viewer=viewer,
                        startTime=start_frame,
                        endTime=end_frame,
                        filename=filename,
                        offScreen=off_screen)

        return output