예제 #1
0
    def initUI(self):
        pm.setUITemplate("DefaultTemplate", pushTemplate=True)
        form = pm.formLayout()

        binMeshExportPath = pm.optionVar.get('mtap_binMeshExportPath', pm.workspace.path + "/geo/export.binarymesh")
        prefix = pm.optionVar.get('mtap_binMeshExportPathPrefix', "prefix")
        createProxy = pm.optionVar.get('mtap_binMeshCreateProxy', True)
        percentage = pm.optionVar.get('mtap_binMeshPercentage', 0.1)
        createStandin = pm.optionVar.get('mtap_binMeshCreateStandin', True)
        oneFilePerMesh = pm.optionVar.get('mtap_binMeshOneFilePerMesh', False)
        useTransform = pm.optionVar.get('mtap_binMeshUseTransform', False)

        with pm.columnLayout('StandinLayout') as StandinLayout:
            with pm.frameLayout('StandinLayout', label="Standin export options", collapsable=False):
                with pm.columnLayout('StandinColumnLayout'):
                    self.pathUI = pm.textFieldButtonGrp(label="Standin directory", text=binMeshExportPath, buttonLabel="File", buttonCommand=self.fileBrowser)
                    self.prefixUI = pm.textFieldGrp(label="Prefix", text=prefix)
                    self.createProxyUI = pm.checkBoxGrp(label="Create proxy", value1=createProxy)
                    self.percentageUI = pm.floatFieldGrp(label="Percentage", value1=percentage)
                    self.createStdInUI = pm.checkBoxGrp(label="Create StandIn", value1=createStandin)
                    self.oneFilePerMeshUI = pm.checkBoxGrp(label="One File Per Mesh", value1=oneFilePerMesh)
                    self.doTransformUI = pm.checkBoxGrp(label="Use Transform", value1=useTransform)
            with pm.rowColumnLayout(numberOfColumns=2):
                pm.button(label="Create BinaryMesh", c=self.doit)
                pm.button(label="Cancel", c=self.cancel)

        pm.formLayout(form, edit=True, attachForm=[(StandinLayout, 'top', 5), (StandinLayout, 'bottom', 5), (StandinLayout, 'right', 5), (StandinLayout, 'left', 5)])
        pm.setUITemplate("DefaultTemplate", popTemplate=True)
예제 #2
0
 def updateCamerasUI(self):
     if self.rendererTabUiDict.has_key('common'):            
         uiDict = self.rendererTabUiDict['common']
         pm.deleteUI(uiDict['camerasCL'])
         with pm.columnLayout(adjustableColumn=True, width=400, parent=uiDict['camerasFrame']) as uiDict['camerasCL']:
             for cam in pm.ls(type="camera"):
                 pm.checkBoxGrp(label=cam.name(), value1=cam.renderable.get(), cc=pm.Callback(self.switchCamRenderable, cam))
예제 #3
0
    def KrayRendererUpdateTab(self, dummy=None):
        self.createGlobalsNode()
        #self.updateEnvironment()
        log.debug("KrayRendererUpdateTab()")
        
        sDict = self.rendererTabUiDict['sampling']
        sType = self.renderGlobalsNode.samplingType.get()
        
        if sType != 1: #grid
            pm.intFieldGrp(sDict['gridSize'], edit=True, enable=False)
            pm.checkBoxGrp(sDict['gridRotate'], edit=True, enable=False)
        else:
            pm.intFieldGrp(sDict['gridSize'], edit=True, enable=True)
            pm.checkBoxGrp(sDict['gridRotate'], edit=True, enable=True)

        fType = self.renderGlobalsNode.filtertype.get()
        if fType in [4, 5, 6]:
            pm.floatFieldGrp(sDict['filterSize'], edit=True, enable=False)
        else:
            pm.floatFieldGrp(sDict['filterSize'], edit=True, enable=True)
            
        iFormat = self.renderGlobalsNode.imageFormat.get()    
        if iFormat in [2, 3]:
            pm.attrEnumOptionMenuGrp(sDict['bitdepth'], edit=True, enable=True) 
        else:
            pm.attrEnumOptionMenuGrp(sDict['bitdepth'], edit=True, enable=False) 
            
        if iFormat == 1:
            pm.intFieldGrp(sDict['jpgQuality'], edit=True, enable=True)
        else:
            pm.intFieldGrp(sDict['jpgQuality'], edit=True, enable=False)
예제 #4
0
파일: uiUtils.py 프로젝트: MassW/OpenMaya
def addUIElement(uiType, attribute, uiLabel, callback, renderGlobalsNodeName):
    ui = None
    if uiType == 'bool':
        ui = pm.checkBoxGrp(label=uiLabel)
        if callback is not None:
            pm.checkBoxGrp(ui, edit=True, cc=callback)
    if uiType == 'int':
        ui = pm.intFieldGrp(label=uiLabel, numberOfFields = 1)
        if callback is not None:
            pm.intFieldGrp(ui, edit=True, cc = callback)
    if uiType == 'float':
        ui = pm.floatFieldGrp(label=uiLabel, numberOfFields = 1)
        if callback is not None:
            pm.floatFieldGrp(ui, edit=True, cc= callback)
    if uiType == 'enum':
        ui = pm.attrEnumOptionMenuGrp(label = uiLabel, at=attribute, ei = getEnumList(attribute)) 
        # attrEnumOptionGrp has no cc callback, so I create a script job
        if callback is not None:
            attribute = pm.Attribute(renderGlobalsNodeName + "." + attribute)
            pm.scriptJob(attributeChange=[attribute, callback], parent=ui)           
    if uiType == 'color':
        ui = pm.attrColorSliderGrp(label=uiLabel, at=attribute)
    if uiType == 'string':
        ui = pm.textFieldGrp(label=uiLabel)
        if callback is not None:
            pm.textFieldGrp(ui, edit=True, cc=callback)
    if uiType == 'vector':
        ui = pm.floatFieldGrp(label=uiLabel, nf=3)
        if callback is not None:
            pm.floatFieldGrp(ui, edit=True, cc=callback)
    return ui
예제 #5
0
    def rename(self, *args):
        v1 = pm.checkBoxGrp(self.cbFld, q=1, v1=1)
        v2 = pm.checkBoxGrp(self.cbFld, q=1, v2=1)
        if v1 and v2:
            pm.warning('Only select one Type: FK or IK. No action taken.')
            return

        name = pm.textFieldGrp( self.nameFld, q=1, text=1)

        # Rename base control
        baseCnt = pm.PyNode('vks_explicit1')
        baseCnt.rename('%s_baseCnt' % name)

        # Get joints
        pm.select('vks_skin_joint_1', hi=1)
        jnts = pm.ls(sl=1, type='joint')
        count = 1
        for each in jnts:
            pc = each.listConnections(et=1, type='parentConstraint')[0]
            print pc
            pc.rename('%s_joint_%s_parentConstraint' % (name, count))
            each.rename('%s_joint_%s' % (name, count))
            pm.select(each, r=1)
            pm.mel.eval('ToggleLocalRotationAxes;')
            count += 1

        # FK parametric controls
        if v1:
            pm.select('vks_parametric*Shape')
            sel = pm.ls(sl=1)
            count = 1
            for each in sel:
                prnt = each.getParent()
                prnt.rename('%s_cnt_%s' % (name, count))
                count += 1
예제 #6
0
 def update_size_ui(self):
     if self.dock_ui and self.dock[0]:
         kwargs = self.__dock_kwargs()
         kwargs["e"] = True
         pmc.dockControl(self.dock_ui, **kwargs)
     else:
         self.win.setWidthHeight(self.sizes[:2])
     
     paneSizes = []
     tmp = self.sizes[2:8]
     j = 1
     for i in range(0, len(tmp) - 1, 2):
         paneSizes.append([j, tmp[i], tmp[i + 1]])
         j += 1
     pmc.paneLayout(self.main_layout, e=True, paneSize=paneSizes)
     
     pmc.paneLayout(self.script_layout, e=True,
                    paneSize=[
                              [1, self.sizes[8], self.sizes[10]],
                              [2, self.sizes[9], self.sizes[11]],
                              ]
                    )
     
     pmc.checkBoxGrp(self.order_ui, e=True, v1=self.order)
     pmc.checkBoxGrp(self.order_ui, e=True, v2=self.show_doc)
     
     pmc.optionMenuGrp(self.filter_test_ui, e=True, v=self.filter_test)
예제 #7
0
 def createCamerasUI(self, uiDict):
     with pm.columnLayout(adjustableColumn=True, width=400) as uiDict["camerasCL"]:
         for cam in pm.ls(type="camera"):
             pm.checkBoxGrp(
                 label=cam.name(), value1=cam.renderable.get(), cc=pm.Callback(self.switchCamRenderable, cam)
             )
             self.cameras.append(cam.name())
예제 #8
0
 def KrayFinalGatheringCreateTab(self):
     log.debug("KrayFinalGatheringCreateTab()")
     self.createGlobalsNode()
     parentForm = pm.setParent(query=True)
     pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
     scLo = self.rendererName + "PhotonsScrollLayout"
     with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
         with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
             with pm.frameLayout(label="Photons frame", collapsable=True, collapse=False):
                 with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                     ui = pm.floatFieldGrp(label="Threshold:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgThreshold", index=2)
                     pm.separator()                     
                     ui = pm.intFieldGrp(label="Min Rays:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgMinRays", index=2) 
                     ui = pm.intFieldGrp(label="Max Rays:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgMaxRays", index=2) 
                     ui = pm.floatFieldGrp(label="Prerender:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgPrerender", index=2)                     
                     ui = pm.intFieldGrp(label="Passes:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgPasses", index=2) 
                     pm.separator()                     
                     ui = pm.floatFieldGrp(label="Sploth Detect:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgSplotchDetect", index=2)                     
                     ui = pm.floatFieldGrp(label="Sensitivity:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgSensitivity", index=2)  
                     pm.separator()                     
                     ui = pm.checkBoxGrp(label="FG Reflections:", value1=False)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgReflections", index=2) 
                     ui = pm.checkBoxGrp(label="FG Refractions:", value1=False)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgRefractions", index=2)                   
                     pm.separator()                     
                     ui = pm.floatFieldGrp(label="Spatial Tolerance:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgSpatialTolerance", index=2)  
                     ui = pm.floatFieldGrp(label="Angular Tolerance:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgAngularTolerance", index=2)  
                     ui = pm.floatFieldGrp(label="FG Min Dist:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgDistMin", index=2)  
                     ui = pm.floatFieldGrp(label="FG Dist Max:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgDistMax", index=2)  
                     ui = pm.floatFieldGrp(label="Density/Brightness:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgBrightness", index=2)  
                     pm.separator()                     
                     ui = pm.intFieldGrp(label="Path Passes:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgPathPasses", index=2)  
                     ui = pm.floatFieldGrp(label="Corner Dist:", numberOfFields=1)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgCornerDist", index=2)  
                     ui = pm.checkBoxGrp(label="Show Samples:", value1=False)
                     pm.connectControl(ui, self.renderGlobalsNodeName + ".fgShowSamples", index=2) 
                     
     pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
     pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
예제 #9
0
def animateExportUI():
    
    winName = 'animateUI'
    if(pm.window(winName,q=1,ex=1)):
        pm.deleteUI(winName)
    pm.window(winName,ret=1,mb=1)
    pm.columnLayout('columnLayout8',adj=1)
    pm.checkBoxGrp('exportType',ncb=3, label='export Type  :  ', 
                     la3=[':  transform', ':  rotate', ':  custom'])
    pm.textFieldGrp('exportPath',l = 'export Path  :  ',adj = 0,
                      cl2 = ['right','center'],tx = 'asdd')
    pm.button('export',c = 'animateExport()')
    
    pm.showWindow(winName)
예제 #10
0
    def getData(self, *args):
        path = pm.textFieldButtonGrp(self.pathUI, query=True, text=True)
        prefix = pm.textFieldGrp(self.prefixUI, query=True, text=True)
        doProxy = pm.checkBoxGrp(self.createProxyUI, query=True, value1=True)
        percentage = pm.floatFieldGrp(self.percentageUI, query=True, value1=True)
        createStdin = pm.checkBoxGrp(self.createStdInUI, query=True, value1=True)
        oneFilePerMesh = pm.checkBoxGrp(self.oneFilePerMeshUI, query=True, value1=True)
        useTransform = pm.checkBoxGrp(self.doTransformUI, query=True, value1=True)

        pm.optionVar['mtap_binMeshExportPath'] = path
        pm.optionVar['mtap_binMeshExportPathPrefix'] = prefix
        pm.optionVar['mtap_binMeshCreateProxy'] = doProxy
        pm.optionVar['mtap_binMeshPercentage'] = percentage
        pm.optionVar['mtap_binMeshCreateStandin'] = createStdin
        pm.optionVar['mtap_binMeshOneFilePerMesh'] = oneFilePerMesh
        pm.optionVar['mtap_binMeshUseTransform'] = useTransform
예제 #11
0
def dimConnections(element):
    print "DimConnections"
    if element['name'] in ['motionblur']:
        value = pm.checkBoxGrp( element['name'], query = True, v1 = True)
        print element['uielement']
        valueInv = value
        #groups = mantraGlobalsAttributes.mantraGlobalsAttributes
        #if el['name'] in ['xftimesamples', 'geotimesamples', 'motionfactor', 'mbtype']:
        if value:
            print "enabling ctrls"            
        else:
            print "disabling ctrls"
        pm.intFieldGrp('xftimesamples', edit = True, enable = valueInv)
        pm.intFieldGrp('geotimesamples', edit = True, enable = valueInv)
        pm.floatFieldGrp('motionfactor', edit = True, enable = valueInv)
        pm.attrEnumOptionMenu('mbtype', edit = True, enable = valueInv)
        pm.checkBoxGrp('imagemotionblur',  edit = True, enable = valueInv)
예제 #12
0
 def setValue(self, value):
     if value == "stdingfilename":
         self.fileName = pm.textFieldButtonGrp("stdingfilename", query=True, text=True)
     if value == "stdinshowpoints":
         self.showPoints = pm.checkBoxGrp("stdinshowpoints", query=True, value1=True)
     if value == "stdinptdensity":
         self.density = pm.floatFieldGrp("stdinptdensity", query=True, value1=True)          
     if value == "stdinptsize":
         self.pointSize = pm.intFieldGrp("stdinptsize", query=True, value1=True)
예제 #13
0
 def order_by_ui(self, *args):
     self.order = pmc.checkBoxGrp(self.order_ui, q=True, v1=True)
     
     self.spp_.sort_objects(alphabetical=self.order,
                            filter_str=pmc.textFieldGrp(self.filter_ui, q=True, text=True),
                            filter_test=self.filter_test)
     
     pmc.textScrollList(self.infos_ui, e=True, ra=True)
     pmc.textScrollList(self.infos_ui, e=True, a=[o.repr_ for o in self.spp_.order_obj])
예제 #14
0
    def AppleseedTranslatorCreateTab(self):
        log.debug("AppleseedTranslatorCreateTab()")
        self.createGlobalsNode()
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "TrScrollLayout"
        
        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "TrColumnLayout", adjustableColumn=True, width=400):
                with pm.frameLayout(label="Translator", collapsable=True, collapse=False):
                    attr = pm.Attribute(self.renderGlobalsNodeName + ".translatorVerbosity")
                    ui = pm.attrEnumOptionMenuGrp(label="Translator Verbosity", at=self.renderGlobalsNodeName + ".translatorVerbosity", ei=self.getEnumList(attr)) 
                
                with pm.frameLayout(label="{0} export".format(self.rendererName), collapsable=True, collapse=False):
                    ui = pm.checkBoxGrp(label="Export {0} Scene file:".format(self.rendererName), value1=False)
                    pm.connectControl(ui, self.renderGlobalsNodeName + ".exportSceneFile", index=2)
#                     xmlDict = {}
#                     self.rendererTabUiDict['xml'] = xmlDict
#                     defaultXMLPath = pm.workspace.path + "/" + pm.sceneName().basename().split(".")[0] + ".appleseed"
#                     if not defaultXMLPath.dirname().exists():
#                         defaultXMLPath.dirname().makedirs()
#                     with pm.rowLayout(nc=3):
#                         xmlDict['xmlFileText'] = pm.text(label="Export to")
#                         xmlDict['xmlFile'] = pm.textField(text=defaultXMLPath)
#                         pm.symbolButton(image="navButtonBrowse.png", c=self.xmlFileBrowse)
#                         pm.connectControl(xmlDict['xmlFile'], self.renderGlobalsNodeName + ".exportSceneFileName", index=2)
                        
                with pm.frameLayout(label="Optimize Textures", collapsable=True, collapse=False):
                    optiDict = {}
                    ui = pm.checkBoxGrp(label="Use Optimized Textures:", value1=False)
                    pm.connectControl(ui, self.renderGlobalsNodeName + ".useOptimizedTextures", index=2)
                    with pm.rowLayout(nc=3):
                        self.rendererTabUiDict['opti'] = optiDict
                        pm.text(label="OptimizedTex Dir:")
                        optiDict['optiField'] = pm.textField(text=self.renderGlobalsNode.optimizedTexturePath.get())
                        pm.symbolButton(image="navButtonBrowse.png", c=self.dirBrowse)
                        pm.connectControl(optiDict['optiField'], self.renderGlobalsNodeName + ".optimizedTexturePath", index=2)
                        
                with pm.frameLayout(label="Additional Settings", collapsable=True, collapse=False):
                    ui = pm.floatFieldGrp(label="Scene scale:", value1=1.0, numberOfFields=1)
                    pm.connectControl(ui, self.renderGlobalsNodeName + ".sceneScale", index=2)
                         
        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
 def __init__(self, inst):
     self.armModuleFrame = pm.frameLayout( parent = inst.simpleSetup_layout, w =244, label='simpleArm', borderStyle='out', cll = True, cl = True )
     self.armSide_RBGRP = pm.radioButtonGrp( label='Choose Arm Side', labelArray3=['Left', 'Center', 'Right'], numberOfRadioButtons=3 )
     self.armSpace_RBGRP = pm.radioButtonGrp( label='Choose Arm Space', labelArray3=['Top', 'Middle', 'Bottom'], numberOfRadioButtons=3 )
     self.armAttribute_ChkBoxGRP = pm.checkBoxGrp( parent = self.armModuleFrame, label = 'Arm Attributes   ', cw = ( [ 1, 90 ], [ 2, 70 ], [ 3, 100 ], [ 4, 60 ] ),numberOfCheckBoxes=3, labelArray3=['Stretchy', 'Elbow Pinning', 'Bendy Arms'], v1 = 1, v2 = 1, v3 =  1 )
     
     self.armModulebutton_layout = pm.rowColumnLayout(parent = self.armModuleFrame, nc = 3 )
     self.buildArm_Btn = pm.button(parent = self.armModulebutton_layout, w = 120, h = 24, label="Build Arm", command = self.build_armMod)
     self.mirrorArm_Btn = pm.button( parent = self.armModulebutton_layout, w = 120, h = 24, label = 'Mirror Arm', c = self.exe_MirrorArm )
     self.collapseArmModule_Btn = pm.button( parent = self.armModulebutton_layout, w = 120, h = 24, label = 'Collapse Arm Module', c = self.exe_collapseArmModule )
예제 #16
0
파일: fgshooter.py 프로젝트: Bumpybox/Tapp
 def create(self, stationary_count, offset_count):
     '''
     Create the fgshooter window.
     '''
     if pm.window(self.window_name, exists=True):
         pm.deleteUI(self.window_name)
     pm.window(self.window_name, title=self.window_title)
     
     main_form = pm.formLayout(numberOfDivisions=2)
     self.column = pm.columnLayout(adjustableColumn=True)
     
     # Render Camera
     self.render_camera_field = pm.checkBoxGrp(label="Include Render Camera", value1=self.render_camera, changeCommand=self.updateRenderCamera)
     
     # Stationary Cameras
     pm.separator(height=20, style="in")
     
     pm.rowLayout(numberOfColumns=3, columnWidth3=(140, 80, 80), columnAlign=(1, 'right'), columnAttach3=("right", "both", "both"))
     pm.text("Stationary Cameras")
     self.stationary_field = pm.intField(value=stationary_count)
     pm.button(label="Update", height=22, command=self.update)
     pm.setParent('..')
     
     self.stationary = []
     i = 0
     while i < stationary_count:
         self.stationary.append(pm.floatFieldGrp(value1=self.stationary_frames[i], label="frame"))
         i += 1
     
     # Offset Cameras
     pm.separator(height=20, style="in")
     
     pm.rowLayout(numberOfColumns=3, columnWidth3=(140, 80, 80), columnAlign=(1, 'right'), columnAttach3=("right", "both", "both"))
     pm.text("Offset Cameras")
     self.offset_field = pm.intField(value=offset_count)
     pm.button(label="Update", height=22, command=self.update)
     pm.setParent('..')
     
     self.offset = []
     i = 0
     while i < offset_count:
         self.offset.append(pm.intFieldGrp(value1=self.offset_frames[i], label="frame offset"))
         i += 1
     
     pm.setParent('..')
     
     # remove/apply buttons        
     self.remove_button = pm.button(label="Remove All", height=30, command=self.remove)
     self.apply_button = pm.button(label="Apply / Refresh", height=30, command=self.apply)
     
     pm.formLayout(main_form, edit=True, attachForm=[(self.column, "top", 2),(self.column, "left", 2),(self.column, "right", 2), (self.remove_button, "bottom", 2), (self.remove_button, "left", 2), (self.apply_button, "bottom", 2), (self.apply_button, "right", 2)], attachControl=(self.remove_button, "right", 1, self.apply_button), attachPosition=[ (self.remove_button, "right", 0, 1), (self.apply_button, "left", 1, 1)] )
     
     pm.setParent('..')
     pm.showWindow()
예제 #17
0
 def __init__(self):
     self.title = "Mantra Standin"
     self.fileName = ""
     self.density = .3
     self.pointSize = 1
     self.showPoints = False
     self.boundingBox = [-.5, -.5, -.5, .5, .5, .5]
     
     pm.setUITemplate("DefaultTemplate", pushTemplate=True)
     self.height = 500
     with pm.frameLayout(collapsable=False, labelVisible=False) as frame:
         pm.textFieldButtonGrp("stdingfilename", label="GeoFileName", text="", buttonLabel="Select", bc=pm.Callback(self.selectGeoFile), cc=pm.Callback(self.setValue, "stdingfilename"))
         #string $b = `symbolButton -image "navButtonBrowse.xpm" browser`;
         with pm.frameLayout(collapsable=False, label="Points"):
             pm.checkBoxGrp("stdinshowpoints", label="Show Points", value1=False, cc=pm.Callback(self.setValue, "stdinshowpoints"))
             pm.floatFieldGrp("stdinptdensity", label="PointDensity", value1=0.3, cc=pm.Callback(self.setValue, "stdinptdensity"))
             pm.intFieldGrp("stdinptsize", label="PointSize", value1=1, cc=pm.Callback(self.setValue, "stdinptsize"))
         with pm.rowLayout(nc=2):
             pm.button(label="Create Standin", c=pm.Callback(self.createStandin))            
             pm.button(label="Cancel", c=pm.Callback(self.delete))        
     self.show()
예제 #18
0
 def LuxEnvironmentCreateTab(self, dummy = None):
     log.debug("LuxEnvironmentCreateTab()")
     self.createGlobalsNode()
     
     if self.rendererTabUiDict.has_key('environment'):
         self.rendererTabUiDict.pop('environment')
     
     parentForm = pm.setParent(query=True)
     pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
     scLo = self.rendererName + "ENScrollLayout"
     envDict = {}
     self.rendererTabUiDict['environment'] = envDict
     with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
         with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
             with pm.frameLayout(label="Environment Lighting", collapsable=False):
                 with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                     envDict['pskSkyUse'] = pm.checkBoxGrp(label="Use physical Sky:", value1=True, cc=pm.Callback(self.uiCallback, tab="environment"))
                     pm.connectControl(envDict['pskSkyUse'], self.renderGlobalsNodeName + ".usePhysicalSky", index=2)             
                     envDict['pskUsePhySun'] = pm.checkBoxGrp(label="Use Physical Sun:", value1=False, cc=pm.Callback(self.uiCallback, tab="environment"))
                     pm.connectControl(envDict['pskUsePhySun'], self.renderGlobalsNodeName + ".physicalSun", index=2)                    
                     envDict['pskPhySun'] = pm.textFieldGrp(label="Sun Object:", text="", editable=False) 
                     pm.separator()
                     envDict['pskSunGain'] = pm.floatFieldGrp(label="Sun Gain:", value1=1.0, numberOfFields=1)
                     pm.connectControl(envDict['pskSunGain'], self.renderGlobalsNodeName + ".sunGain", index=2)             
                     envDict['pskTurb'] = pm.floatFieldGrp(label="Turbidity:", value1=1.0, numberOfFields=1)
                     pm.connectControl(envDict['pskTurb'], self.renderGlobalsNodeName + ".turbidity", index=2)                    
                     envDict['pskSamples'] = pm.floatFieldGrp(label="Samples:", value1=1.0, numberOfFields=1)
                     pm.connectControl(envDict['pskSamples'], self.renderGlobalsNodeName + ".skySamples", index=2)                    
                     envDict['pskRelSize'] = pm.floatFieldGrp(label="Sun Size:", value1=1.0, numberOfFields=1)
                     pm.connectControl(envDict['pskRelSize'], self.renderGlobalsNodeName + ".sunRelSize", index=2)                    
                 
     pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
     pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
     
     pm.scriptJob(attributeChange=[self.renderGlobalsNode.physicalSun, pm.Callback(self.uiCallback, tab="environment")])   
     
     self.updateEnvironment()     
예제 #19
0
    def __init__(self):
        version = "1.0"
        if pm.window('RigToolsRenameWin', exists=True):
            pm.deleteUI('RigToolsRenameWin' , window=True)
        self.window = pm.window( 'RigToolsRenameWin' , title="Rig Tools Rename v%s" % version, iconName='RigToolsRenameWin' )

        with pm.columnLayout(adj=1):
            with pm.columnLayout( adjustableColumn=True ):
                pm.text('Assumes only one rig in the scene.')
                pm.text('Will only rename things with default naming.')
                self.cbFld = pm.checkBoxGrp( numberOfCheckBoxes=2,
                                             label='Type:',
                                             labelArray2=['FK', 'IK'] )
                self.nameFld = pm.textFieldGrp( label='Name' )
                pm.button(l='Rename', c=self.rename)

        pm.showWindow( self.window )
예제 #20
0
    def __init__(self):
        version = "1.0"
        if pm.window('RigToolsRenameWin', exists=True):
            pm.deleteUI('RigToolsRenameWin', window=True)
        self.window = pm.window('RigToolsRenameWin',
                                title="Rig Tools Rename v%s" % version,
                                iconName='RigToolsRenameWin')

        with pm.columnLayout(adj=1):
            with pm.columnLayout(adjustableColumn=True):
                pm.text('Assumes only one rig in the scene.')
                pm.text('Will only rename things with default naming.')
                self.cbFld = pm.checkBoxGrp(numberOfCheckBoxes=2,
                                            label='Type:',
                                            labelArray2=['FK', 'IK'])
                self.nameFld = pm.textFieldGrp(label='Name')
                pm.button(l='Rename', c=self.rename)

        pm.showWindow(self.window)
예제 #21
0
파일: rope.py 프로젝트: Aiacos/DevPyLib
def rp_Twist():
    """..............................................................................................//"""

    ncj = int(pm.intField('NCJ', q=1, v=1))
    # > control joints
    # > selection list
    s = pm.ls(sl=1)
    rp_check(s)
    cj = pm.ls((s[0] + "_ctj_*"), typ="joint")
    # > twist and roll
    if pm.checkBoxGrp('MRL', q=1, v1=1):
        if pm.getAttr(s[0] + "_tw_hl.dtce") == 1:
            pm.setAttr((s[0] + "_tw_hl.dtce"), 0)
            pm.disconnectAttr((cj[0] + ".wm[0]"), (s[0] + "_tw_hl.dwum"))
            pm.disconnectAttr((cj[(ncj - 1)] + ".wm[0]"),
                              (s[0] + "_tw_hl.dwue"))

        rl = str(pm.createNode('multiplyDivide', n=(s[0] + "_roll")))
        pm.connectAttr((cj[0] + ".rx"), (rl + ".i1x"), f=1)
        pm.setAttr((rl + ".i2x"), (-1))
        pm.connectAttr((cj[0] + ".rx"), (s[0] + "_tw_hl" + ".rol"), f=1)
        tw = str(pm.createNode('plusMinusAverage', n=(s[0] + "_twist")))
        pm.connectAttr((rl + ".ox"), (tw + ".i1[0]"), f=1)
        pm.connectAttr((cj[(ncj - 1)] + ".rx"), (tw + ".i1[1]"), f=1)
        pm.connectAttr((tw + ".o1"), (s[0] + "_tw_hl" + ".twi"), f=1)

    # > advanced twist
    elif pm.objExists(s[0] + "_twist"):
        pm.delete((s[0] + "_twist"), (s[0] + "_roll"))
        pm.disconnectAttr((cj[0] + ".rx"), (s[0] + "_tw_hl" + ".rol"))

    pm.setAttr((s[0] + "_tw_hl.dtce"), 1)
    pm.setAttr((s[0] + "_tw_hl.dwut"), 4)
    pm.setAttr((s[0] + "_tw_hl.dwua"), 0)
    pm.connectAttr((cj[0] + ".wm[0]"), (s[0] + "_tw_hl.dwum"))
    pm.connectAttr((cj[(ncj - 1)] + ".wm[0]"), (s[0] + "_tw_hl.dwue"))
    pm.setAttr((s[0] + "_tw_hl.dwuy"), 1)
    pm.setAttr((s[0] + "_tw_hl.dwvy"), 1)
    pm.setAttr((s[0] + "_tw_hl.dwuz"), 0)
    pm.setAttr((s[0] + "_tw_hl.dwvz"), 0)
    pm.setAttr((s[0] + "_tw_hl" + ".rol"), 0)
    pm.setAttr((s[0] + "_tw_hl" + ".twi"), 0)
    pm.select(s[0])
예제 #22
0
 def __init__(self):
     title="joints_on_curve"
     if(pm.windowPref(title, q=True, ex=True)):
         pm.windowPref(title, remove=True)
     if(pm.window(title, q=True, ex=True)):
         pm.deleteUI(title)
     #splineIK UI
     self.win = pm.window(title, title="Joints on Curve")
     self.layout = pm.rowColumnLayout()
     self.jntPlaceBtn = pm.radioButtonGrp(parent=self.layout, numberOfRadioButtons=2, label="Joint Placement", labelArray2=("CV's", "Even"), cc=self.jntPlaceBtn_change)
     self.jntSnapBtn = pm.radioButtonGrp(parent=self.layout, enable=False, numberOfRadioButtons=2, sl = 1,  label="Snap To", labelArray2=("CV", "Closest Point On Curve"))
     self.jntLayoutBtn = pm.radioButtonGrp(parent=self.layout, enable=False, numberOfRadioButtons=2, sl = 1,  label="Joint Layout", labelArray2=("Solo", "Hierarchy"), on1 = self.jntLayoutBtn_on)
     self.jntNumSlider = pm.intSliderGrp(enable=False, field=True, label='number of joints', minValue=4, maxValue=100, fieldMinValue=4, fieldMaxValue=100, value=0)
     self.crvNameField = pm.textFieldButtonGrp(enable=False, label='Target Curve', placeholderText='Enter Curve Name Here', buttonLabel='load selected', buttonCommand=self.crvNameField_load)
     self.jntNameFeild = pm.textFieldGrp(parent=self.layout,enable=False, label='Joint Base Name', placeholderText="name your joints", editable=True, tcc=self.jntNameFeild_change)
     self.chkboxGrp = pm.checkBoxGrp(enable=False, numberOfCheckBoxes=3, label='Add', labelArray3=['splineIK', 'CTRLs', 'stretchy'])
     self.goBtn = pm.button(parent=self.layout, enable=False,w = 100, h = 24, label="GO!", command=self.execute)  
     self.noBtn = pm.button(parent=self.layout, enable=False,w = 100, h = 24, label="NO DONT DO IT!", command=self.close)   
     self.format_string = "{PREFIX}_{INDEX}_{SUFFIX}"
     self.delete = []
     self.win.show()
예제 #23
0
    def AppleseedTranslatorCreateTab(self):
        self.createGlobalsNode()
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "TrScrollLayout"
        uiDict = {}
        self.rendererTabUiDict['translator'] = uiDict

        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "TrColumnLayout", adjustableColumn=True, width=400):
                with pm.frameLayout(label="Translator", collapsable=True, collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        self.addRenderGlobalsUIElement(attName='translatorVerbosity', uiType='enum', displayName='Verbosity:', default='0', uiDict=uiDict)
                with pm.frameLayout(label="appleseed Output", collapsable=True, collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        self.addRenderGlobalsUIElement(attName='exportMode', uiType='enum', displayName='Output Mode:', default='0', uiDict=uiDict, callback=self.AppleseedTranslatorUpdateTab)
                    with pm.rowLayout(nc=3) as uiDict['outputFilenameLayout']:
                        pm.text(label="Output Filename:")
                        uiDict['fileNameField'] = pm.textField(text=self.renderGlobalsNode.exportSceneFileName.get())
                        pm.symbolButton(image="navButtonBrowse.png", c=self.outputFileBrowse)
                        pm.connectControl(uiDict['fileNameField'], self.renderGlobalsNodeName + ".exportSceneFileName", index=2)
                with pm.frameLayout(label="Optimize Textures", collapsable=True, collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        optiDict = {}
                        ui = pm.checkBoxGrp(label="Use Optimized Textures:", value1=False)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".useOptimizedTextures", index=2)
                    with pm.rowLayout(nc=3):
                        self.rendererTabUiDict['opti'] = optiDict
                        pm.text(label="Optimized Textures Dir:")
                        optiDict['optiField'] = pm.textField(text=self.renderGlobalsNode.optimizedTexturePath.get())
                        pm.symbolButton(image="navButtonBrowse.png", c=self.dirBrowse)
                        pm.connectControl(optiDict['optiField'], self.renderGlobalsNodeName + ".optimizedTexturePath", index=2)

                with pm.frameLayout(label="Additional Settings", collapsable=True, collapse=False):
                    ui = pm.floatFieldGrp(label="Scene Scale:", value1=1.0, numberOfFields=1)
                    pm.connectControl(ui, self.renderGlobalsNodeName + ".sceneScale", index=2)

        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
        self.AppleseedTranslatorUpdateTab()
예제 #24
0
 def TheaTranslatorCreateTab(self):
     log.debug("TheaTranslatorCreateTab()")
     self.createGlobalsNode()
     parentForm = pm.setParent(query = True)
     pm.setUITemplate("attributeEditorTemplate", pushTemplate = True)
     scLo = self.rendererName + "TrScrollLayout"
     
     with pm.scrollLayout(scLo, horizontalScrollBarThickness = 0):
         with pm.columnLayout(self.rendererName + "TrColumnLayout", adjustableColumn = True, width = 400):
             with pm.frameLayout(label="Translator", collapsable = True, collapse=False):
                 attr = pm.Attribute(self.renderGlobalsNodeName + ".translatorVerbosity")
                 ui = pm.attrEnumOptionMenuGrp(label = "Translator Verbosity", at=self.renderGlobalsNodeName + ".translatorVerbosity", ei = self.getEnumList(attr)) 
             with pm.frameLayout(label="Thea XML export", collapsable = True, collapse=False):
                 ui = pm.checkBoxGrp(label="Export scene XML file:", value1 = False)
                 pm.connectControl(ui, self.renderGlobalsNodeName + ".exportXMLFile", index = 2 )
                 xmlDict = {}
                 self.rendererTabUiDict['xml'] = xmlDict
                 with pm.rowColumnLayout(nc=3, width = 120):
                     pm.text(label="XMLFileName:", width = 60, align="right")
                     defaultXMLPath = pm.workspace.path + "/" + pm.sceneName().basename().split(".")[0] + ".Thea"
                     xmlDict['xmlFile'] = pm.textField(text = defaultXMLPath, width = 60)
                     pm.symbolButton(image="navButtonBrowse.png", c=self.xmlFileBrowse)
                     pm.connectControl(xmlDict['xmlFile'], self.renderGlobalsNodeName + ".exportXMLFileName", index = 2 )
             with pm.frameLayout(label="Optimize Textures", collapsable = True, collapse=False):
                 with pm.rowColumnLayout(nc=3, width = 120):
                     optiDict = {}
                     pm.text(label="OptimizedTex Dir:", width = 60, align="right")
                     self.rendererTabUiDict['opti'] = optiDict
                     pm.symbolButton(image="navButtonBrowse.png", c=self.dirBrowse)
                     optiDict['optiField'] = pm.textField(text = self.renderGlobalsNode.optimizedTexturePath.get(), width = 60)
                     pm.connectControl(optiDict['optiField'], self.renderGlobalsNodeName + ".optimizedTexturePath", index = 2 )
             with pm.frameLayout(label="Additional Settings", collapsable = True, collapse=False):
                 ui = pm.floatFieldGrp(label="Scene scale:", value1 = 1.0, numberOfFields = 1)
                 pm.connectControl(ui, self.renderGlobalsNodeName + ".sceneScale", index = 2 )
                      
     pm.setUITemplate("attributeEditorTemplate", popTemplate = True)
     pm.formLayout(parentForm, edit = True, attachForm = [ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
    def option_box_apply(self):
        # Get the selected blendShapes.
        src_blend_shape = pm.optionMenuGrp('sourceBlendShapeList',
                                           q=True,
                                           v=True)
        dst_blend_shape = pm.optionMenuGrp('dstBlendShapeList', q=True, v=True)
        src_blend_shape = pm.ls(src_blend_shape)[0]
        dst_blend_shape = pm.ls(dst_blend_shape)[0]

        if not src_blend_shape:
            pm.warning('No source blend shape is selected')
            return

        if not dst_blend_shape:
            pm.warning('No target blend shape is selected')
            return

        if src_blend_shape == dst_blend_shape:
            pm.warning('The source and destination blend shapes are the same')
            return

        # These were selected from the UI, so unless the scene changed while the dialog was
        # open these should always be blendShape nodes.
        assert isinstance(
            src_blend_shape, pm.nodetypes.BlendShape
        ), 'Node %s isn\'t a blend shape' % src_blend_shape.nodeName()
        assert isinstance(
            dst_blend_shape, pm.nodetypes.BlendShape
        ), 'Node %s isn\'t a blend shape' % dst_blend_shape.nodeName()

        # Get the selected blend shape targets to retarget.
        blend_shape_targets = self.get_selected_src_blend_shape_targets()
        blend_shape_indices = [
            target.index() for target in blend_shape_targets
        ]
        if not blend_shape_indices:
            pm.warning('No blend shape targets are selected')
            return

        src_blend_shape_targets = pm.ls(
            pm.blendShape(src_blend_shape, q=True, g=True))
        dst_blend_shape_targets = pm.ls(
            pm.blendShape(dst_blend_shape, q=True, g=True))

        # Make sure that both blend shapes have just one target.
        assert len(
            src_blend_shape_targets
        ) == 1, 'Blend shape %s must have one target, has %i: %s' % (
            src_blend_shape.nodeName(), len(src_blend_shape_targets),
            ', '.join(src_blend_shape_targets))
        assert len(
            dst_blend_shape_targets
        ) == 1, 'Blend shape %s must have one target, has %i: %s' % (
            dst_blend_shape.nodeName(), len(dst_blend_shape_targets),
            ', '.join(dst_blend_shape_targets))

        # Find the transforms for the source and destination node.
        src_node = src_blend_shape_targets[0].getTransform()
        dst_node = dst_blend_shape_targets[0].getTransform()

        # Check the selected nodes.
        assert isinstance(
            src_node, pm.nodetypes.Transform
        ), 'The source node %s isn\'t a transform' % src_node.nodeName()
        assert isinstance(
            dst_node, pm.nodetypes.Transform
        ), 'The destination node %s isn\'t a transform' % dst_node.nodeName()
        assert src_node.getShape(
        ) is not None, 'The source node %s isn\'t a mesh' % dst_node.nodeName(
        )
        assert dst_node.getShape(
        ) is not None, 'The destination node %s isn\'t a mesh' % dst_node.nodeName(
        )

        #    # Find all blendShapes that are following this one.
        #    following_blend_shapes = WrappedBlendShapes.find_following_blend_shapes(src_blend_shape)
        #
        #    # Find a blend shape node on dst_node that's in following_blend_shapes.  We can either
        #    # look in the history of the output mesh, or in the future of the base mesh, and both can
        #    # have wrong matches.
        #    for node in dst_node.getShapes()[-1].listFuture():
        #        if node in following_blend_shapes:
        #            dst_blend_shape = node
        #            break
        #    else:
        #        raise RuntimeError('Couldn\'t find a blend shape node on %s which is following %s' % (dst_node.name(), src_blend_shape.name()))

        connect_weights = pm.checkBoxGrp('connectWeightsToSource',
                                         q=True,
                                         value1=False)
        use_cvwrap = pm.checkBoxGrp('useCvWrap', q=True, value1=False)
        redst_blend_shapes(src_node,
                           dst_node,
                           src_blend_shape,
                           dst_blend_shape,
                           blend_shape_indices,
                           connect_weights=connect_weights,
                           use_cvwrap=use_cvwrap)
 def option_box_save(self):
     self.optvars[
         'zBlendShapeRetargettingConnectWeightsToSource'] = pm.checkBoxGrp(
             'connectWeightsToSource', q=True, value1=False)
     self.optvars['zBlendShapeRetargettingUseCvwrap'] = pm.checkBoxGrp(
         'useCvWrap', q=True, value1=False)
예제 #27
0
    def FujiTranslatorCreateTab(self):
        log.debug("FujiTranslatorCreateTab()")
        self.createGlobalsNode()
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "TrScrollLayout"

        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "TrColumnLayout",
                                 adjustableColumn=True,
                                 width=400):
                with pm.frameLayout(label="Translator",
                                    collapsable=True,
                                    collapse=False):
                    attr = pm.Attribute(self.renderGlobalsNodeName +
                                        ".translatorVerbosity")
                    ui = pm.attrEnumOptionMenuGrp(
                        label="Translator Verbosity",
                        at=self.renderGlobalsNodeName + ".translatorVerbosity",
                        ei=self.getEnumList(attr))


#                with pm.frameLayout(label="Fuji XML export", collapsable = True, collapse=False):
#                    ui = pm.checkBoxGrp(label="Export scene XML file:", value1 = False)
#                    pm.connectControl(ui, self.renderGlobalsNodeName + ".exportXMLFile", index = 2 )
#                    xmlDict = {}
#                    self.rendererTabUiDict['xml'] = xmlDict
#                    with pm.rowColumnLayout(nc=3, width = 120):
#                        pm.text(label="XMLFileName:", width = 60, align="right")
#                        defaultXMLPath = pm.workspace.path + "/" + pm.sceneName().basename().split(".")[0] + ".Fuji"
#                        xmlDict['xmlFile'] = pm.textField(text = defaultXMLPath, width = 60)
#                        pm.symbolButton(image="navButtonBrowse.png", c=self.xmlFileBrowse)
#                        pm.connectControl(xmlDict['xmlFile'], self.renderGlobalsNodeName + ".exportXMLFileName", index = 2 )
                with pm.frameLayout(label="Optimize Textures",
                                    collapsable=True,
                                    collapse=False):
                    optiDict = {}
                    ui = pm.checkBoxGrp(label="Use Optimized Textures:",
                                        value1=False)
                    pm.connectControl(ui,
                                      self.renderGlobalsNodeName +
                                      ".useOptimizedTextures",
                                      index=2)

                    with pm.rowLayout(nc=3):
                        self.rendererTabUiDict['opti'] = optiDict
                        pm.text(label="OptimizedTex Dir:")
                        optiDict['optiField'] = pm.textField(
                            text=self.renderGlobalsNode.optimizedTexturePath.
                            get())
                        pm.symbolButton(image="navButtonBrowse.png",
                                        c=self.dirBrowse)
                        pm.connectControl(optiDict['optiField'],
                                          self.renderGlobalsNodeName +
                                          ".optimizedTexturePath",
                                          index=2)

                with pm.frameLayout(label="Additional Settings",
                                    collapsable=True,
                                    collapse=False):
                    ui = pm.floatFieldGrp(label="Scene scale:",
                                          value1=1.0,
                                          numberOfFields=1)
                    pm.connectControl(ui,
                                      self.renderGlobalsNodeName +
                                      ".sceneScale",
                                      index=2)

        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(parentForm,
                      edit=True,
                      attachForm=[(scLo, "top", 0), (scLo, "bottom", 0),
                                  (scLo, "left", 0), (scLo, "right", 0)])
예제 #28
0
def move_all_anim_curves():
    def check_overlapping(anim_curves, choice, current_time, offset_val):
        for anim_curve in anim_curves:
            key_cnt = anim_curve.numKeys()
            message = 'Some Keys are overlapping within Offset Value\n'
            message += 'Do you want continue on Moving other Keys ?\n'
            for i in range(0, key_cnt):
                key_time = anim_curve.getTime(i)
                if choice == 'forward':
                    if key_time <= current_time + offset_val:
                        range_dialog = pm.confirmDialog(title='Error',
                                                        message=message,
                                                        button=['Yes', 'No'],
                                                        cancelButton='No',
                                                        dismissString='No')
                        if range_dialog == 'Yes':
                            return 1
                        else:
                            raise RuntimeError(
                                'Move Keys process interrupted by User.')

                if choice == 'back':
                    if key_time >= current_time + offset_val:
                        range_dialog = pm.confirmDialog(title='Error',
                                                        message=message,
                                                        button=['Yes', 'No'],
                                                        cancelButton='No',
                                                        dismissString='No')
                        if range_dialog == 'Yes':
                            return 1
                        else:
                            raise RuntimeError(
                                'Move Keys process interrupted by User.')

    def move_all_keys(choice):
        offset_val = offset_intfield.getValue()

        if offset_val < 1:
            raise RuntimeError('Enter an Offset Value greater than 0.')

        if choice == 'back':
            offset_val = offset_intfield.getValue() * -1

        unlock_val = unlock_state.getValue1()

        current_time = pm.currentTime()

        anim_curves = pm.ls(type='animCurve')
        non_moved_curves = []

        if choice == 'back':
            check_overlapping(anim_curves, choice, current_time, offset_val)

        for anim_curve in anim_curves:
            try:
                if unlock_val is True and anim_curve.isLocked():
                    anim_curve.setLocked(0)

                key_cnt = anim_curve.numKeys()
                for i in range(1, key_cnt + 1):

                    if choice == 'forward':
                        ind = key_cnt - i
                    if choice == 'back':
                        ind = i - 1

                    if anim_curve.getTime(ind) >= current_time:
                        pm.keyframe(anim_curve,
                                    index=ind,
                                    iub=False,
                                    animation='objects',
                                    relative=True,
                                    option='move',
                                    tc=offset_val)
            except:
                if anim_curve not in non_moved_curves:
                    non_moved_curves.append(anim_curve)
                continue

        if not non_moved_curves:
            pm.confirmDialog(title='Info',
                             message='Keys Moved Successfully.',
                             button='OK')
        else:
            message = 'Anim Curves can NOT be moved:\r\n'
            message += '\r'
            for i in range(0, len(non_moved_curves)):
                message += '%s\n' % non_moved_curves[i]
                if i > 30:
                    message += '+ More...\n'
                    break
            print(non_moved_curves)
            pm.confirmDialog(title='Error', message=message, button='OK')

        # pdm.close()

    window_name = 'move_keys_window'

    if pm.window(window_name, q=True, ex=True):
        pm.deleteUI(window_name, wnd=True)

    move_keys_win = pm.window(window_name, title='Move Keys', s=0, rtf=1)

    with pm.columnLayout(rs=5, cal='center'):
        pm.text(l='                      MOVE ALL KEYS')
        pm.text(l='             relatively from currentTime')
        pm.text(l='    (overlapping Keys will NOT be moved)')
        with pm.rowColumnLayout(nc=3, cw=[(1, 70), (2, 70), (3, 70)]):

            def exec_move_all_keys_back(*args):
                move_all_keys('back')

            pm.button(l='-', c=exec_move_all_keys_back)
            offset_intfield = pm.intField()

            def exec_move_all_keys_forward(*args):
                move_all_keys('forward')

            pm.button(l='+', c=exec_move_all_keys_forward)

    with pm.columnLayout():
        unlock_state = pm.checkBoxGrp(l='Unlock & Move', v1=1)

    pm.showWindow(move_keys_win)
예제 #29
0
def randomizer_createUserInterface():
	"""--------------------------------------------------------------------------
	Create User Interface Procedure
	--------------------------------------------------------------------------"""
	

	pm.window('randomizer_window', s=0, rtf=0, t="randomizer", wh=(300, 700))
	# Create UI elements
	pm.columnLayout('mainColumnLayout', h=930, w=248, columnAlign="center", adjustableColumn=1)
	pm.separator('selectedTransformObjectsSeparator', h=10, w=240, st="none")

	pm.text('selectedTransformObjectsText', fn="boldLabelFont", h=24, l="selected transform Objects", w=240, al="center")
	pm.textScrollList('selectedTransformObjectsTextScrollList', h=80, w=240)
	pm.button('loadObjectsButton', h=28, c=lambda *args: randomizer_loadSelection(0), l="load transform Objects", w=240)
	pm.separator('selectedMaterialsSeparator', h=10, w=240, st="none")

	pm.text('selectedMaterialsText', fn="boldLabelFont", h=24, l="selected Materials", w=240, al="center")
	pm.textScrollList('selectedMaterialsTextScrollList', h=80, w=240)
	pm.button('loadMaterialsButton', h=28, c=lambda *args: randomizer_loadSelection(1), l="load Materials", w=240)
	pm.separator('transformAttributesSeparator', h=10, w=240, st="none")

	pm.text('randomizeAttributesText', fn="boldLabelFont", h=24, l="randomize Attributes", w=240, al="center")
	pm.checkBoxGrp('randomizeAttributesCheckBoxGrp', h=24, l4="Material", l2="Rotate", l3="Scale", w=240, l1="Translate", ncb=4, cw=[(1, 67), (2, 57), (3, 50), (4, 57)])
	pm.separator('translateAttributesSeparator', h=10, w=240, st="none")

	pm.text('translateText', fn="boldLabelFont", h=24, l="Translate", w=240, al="center")
	pm.floatFieldGrp('minMaxXtranslateFloatFieldGrp', pre=3, el="max X", bgc=(0.25, 0, 0), h=24, l="min X", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.floatFieldGrp('minMaxYtranslateFloatFieldGrp', pre=3, el="max Y", bgc=(0, 0.25, 0), h=24, l="min Y", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.floatFieldGrp('minMaxZtranslateFloatFieldGrp', pre=3, el="max Z", bgc=(0, 0, 0.25), h=24, l="min Z", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.separator('rotateAttributesSeparator', h=10, w=240, st="none")

	pm.text('rotateText', fn="boldLabelFont", h=24, l="Rotate", w=240, al="center")
	pm.floatFieldGrp('minMaxXrotateFloatFieldGrp', pre=3, el="max X", bgc=(0.25, 0, 0), h=24, l="min X", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.floatFieldGrp('minMaxYrotateFloatFieldGrp', pre=3, el="max Y", bgc=(0, 0.25, 0), h=24, l="min Y", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.floatFieldGrp('minMaxZrotateFloatFieldGrp', pre=3, el="max Z", bgc=(0, 0, 0.25), h=24, l="min Z", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.separator('scaleAttributesSeparator', h=10, w=240, st="none")

	pm.text('scaleText', fn="boldLabelFont", h=24, l="Scale", w=240, al="center")
	pm.floatFieldGrp('minMaxXscaleFloatFieldGrp', pre=3, el="max X", bgc=(0.25, 0, 0), h=24, l="min X", nf=2, v1=1, v2=1, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.floatFieldGrp('minMaxYscaleFloatFieldGrp', pre=3, el="max Y", bgc=(0, 0.25, 0), h=24, l="min Y", nf=2, v1=1, v2=1, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.floatFieldGrp('minMaxZscaleFloatFieldGrp', pre=3, el="max Z", bgc=(0, 0, 0.25), h=24, l="min Z", nf=2, v1=1, v2=1, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.separator('randomizeSelectionSeparator', h=10, w=240, st="none")

	pm.button('randomizeAbsoluteButton', h=28, c=lambda *args: randomizer_randomizeSelection(), l="randomize Abolute", w=240)
	pm.button('randomizeRelativeButton', h=28, c=lambda *args: randomizer_randomizeSelection(relative=True), l="randomize Relative", w=240)
	pm.separator('timeAttributesSeparator', h=10, w=240, st="none")

	pm.text('timeText', fn="boldLabelFont", h=24, l="Time", w=240, al="center")
	pm.checkBoxGrp('randomizeKeyframeCheckBoxGrp', h=24, l2="Rotate", l3="Scale", w=240, l1="Translate", v1=1, v2=1, v3=1, ncb=3, cw=[(1, 67), (2, 57), (3, 50)])
	pm.intFieldGrp('minMaxTimeIntFieldGrp', el="max", bgc=(0, 0, 0), h=24, l="min", nf=2, v1=0, v2=10, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)])
	pm.button('setUniformKeyframe', h=28, c=lambda *args: rand_KeyframeUI(objects=None, axis=["X", "Y", "Z"], uniform=True, uniformObject=False, min=-10, max=10, step=1), l="Randomize all Channels together", w=240)
	pm.button('setRandomKeyframe', h=28, c=lambda *args: rand_KeyframeUI(objects=None, axis=["X", "Y", "Z"], uniform=False, uniformObject=False, min=-10, max=10, step=1), l="Randomize each Channel seperately", w=240)
	pm.button('setUniformKeyframeAll', h=28, c=lambda *args: rand_KeyframeUI(objects=None, axis=["X", "Y", "Z"], uniform=False, uniformObject=True, min=-10, max=10, step=1), l="Move all Keyframes together", w=240)
	pm.separator('undoSeparator', h=10, w=240, st="none")

	pm.button('undoButton', h=28, c=lambda *args: pm.undo(), l="undo", w=240)
	#pm.iconTextButton('staschiIconTextButton', h=28, c=lambda *args: randomizer_loadHelpWebsite(), l="www.staschi.com", w=240, st="textOnly")

	pm.setParent('..')
	pm.setParent('..')
	# Display UI
	pm.showWindow('randomizer_window')
예제 #30
0
    def create(self):
        # Create default render globals node if needed.
        createGlobalNodes()

        parentForm = pm.setParent(query=True)
        pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)

        columnWidth = 400

        with pm.scrollLayout("appleseedScrollLayout", horizontalScrollBarThickness=0):
            with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                with pm.frameLayout(label="Sampling", collapsable=True, collapse=False):
                    with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Render Passes", numberOfFields=1),
                            attrName="passes")

                        self._addControl(
                            ui=pm.checkBoxGrp(
                                label="Adaptive Sampling", changeCommand=self.__adaptiveSamplerChanged),
                            attrName="adaptiveSampling")

                        adaptiveSampling = mc.getAttr("appleseedRenderGlobals.adaptiveSampling")

                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Min Samples", numberOfFields=1, enable=adaptiveSampling),
                            attrName="minPixelSamples")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Max Samples", numberOfFields=1),
                            attrName="samples")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Batch Sample Size", numberOfFields=1, enable=adaptiveSampling),
                            attrName="batchSampleSize")
                        self._addControl(
                            ui=pm.floatFieldGrp(
                                label="Noise Threshold", numberOfFields=1, enable=adaptiveSampling),
                            attrName="sampleNoiseThreshold")

                        self._addControl(
                            ui=pm.attrEnumOptionMenuGrp(
                                label="Pixel Filter",
                                enumeratedItem=self._getAttributeMenuItems("pixelFilter")),
                            attrName="pixelFilter")
                        self._addControl(
                            ui=pm.floatFieldGrp(
                                label="Pixel Filter Size", numberOfFields=1),
                            attrName="pixelFilterSize")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Tile Size", numberOfFields=1),
                            attrName="tileSize")

                with pm.frameLayout(label="Lighting", collapsable=True, collapse=False):
                    with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.attrEnumOptionMenuGrp(
                                label="Lighting Engine",
                                enumeratedItem=self._getAttributeMenuItems("lightingEngine")),
                            attrName="lightingEngine")

                        with pm.frameLayout(label="Path Tracing", collapsable=True, collapse=False):
                            with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                                self._addControl(
                                    ui=pm.checkBoxGrp(
                                        label="Limit Bounces", changeCommand=self.__limitBouncesChanged),
                                    attrName="limitBounces")
                                limitBounces = mc.getAttr(
                                    "appleseedRenderGlobals.limitBounces")
                                self._addControl(
                                    ui=pm.intFieldGrp(
                                        label="Global Bounces", numberOfFields=1, enable=limitBounces),
                                    attrName="bounces")
                                self._addControl(
                                    ui=pm.intFieldGrp(
                                        label="Diffuse Bounces", numberOfFields=1, enable=limitBounces),
                                    attrName="diffuseBounces")
                                self._addControl(
                                    ui=pm.intFieldGrp(
                                        label="Glossy Bounces", numberOfFields=1, enable=limitBounces),
                                    attrName="glossyBounces")
                                self._addControl(
                                    ui=pm.intFieldGrp(
                                        label="Specular Bounces", numberOfFields=1, enable=limitBounces),
                                    attrName="specularBounces")
                                self._addControl(
                                    ui=pm.floatFieldGrp(
                                        label="Light Samples", numberOfFields=1),
                                    attrName="lightSamples")
                                self._addControl(
                                    ui=pm.floatFieldGrp(
                                        label="Environment Samples", numberOfFields=1),
                                    attrName="envSamples")
                                self._addControl(
                                    ui=pm.checkBoxGrp(label="Clamp Roughness"),
                                    attrName="clampRoughness")
                                self._addControl(
                                    ui=pm.checkBoxGrp(label="Caustics"),
                                    attrName="caustics")
                                self._addControl(
                                    ui=pm.floatFieldGrp(
                                        label="Max Ray Intensity", numberOfFields=1),
                                    attrName="maxRayIntensity")

                with pm.frameLayout(label="Scene", collapsable=True, collapse=False):
                    with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.attrEnumOptionMenuGrp(
                                label="Override Shaders",
                                enumeratedItem=self._getAttributeMenuItems("diagnostics")),
                            attrName="diagnostics")

                        self._addControl(
                            ui=pm.floatFieldGrp(
                                label="Scene Scale", numberOfFields=1),
                            attrName="sceneScale")

                        with pm.rowLayout("appleseedRowLayout", nc=3):
                            pm.text("Environment Light")
                            ui = pm.optionMenu(
                                changeCommand=self.__environmentLightSelected)

                            pm.menuItem(label="<none>")
                            for envLight in g_environmentLightsList:
                                pm.menuItem(parent=ui, label=envLight)

                            # Set the currently selected environment light in the menu.
                            connections = mc.listConnections(
                                "appleseedRenderGlobals.envLight")
                            if connections:
                                node = connections[0]
                                if mc.nodeType(node) == "transform":
                                    shapes = mc.listRelatives(node, shapes=True)
                                    assert shapes
                                    node = shapes[0]
                                    pm.optionMenu(ui, edit=True, value=node)
                            else:
                                pm.optionMenu(ui, edit=True, value="<none>")

                            self._uis["envLight"] = ui
                            logger.debug(
                                "Created globals env light menu, name = %s" % ui)

                        self._addControl(
                            ui=pm.checkBoxGrp(label="Environment Visible"),
                            attrName="bgLight")

                with pm.frameLayout(label="Motion Blur", collapsable=True, collapse=True):
                    with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.checkBoxGrp(
                                label="Motion Blur", changeCommand=self.__motionBlurChanged),
                            attrName="motionBlur")

                        enableMotionBlur = mc.getAttr(
                            "appleseedRenderGlobals.motionBlur")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Camera Samples", numberOfFields=1, enable=enableMotionBlur),
                            attrName="mbCameraSamples")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Transformation Samples", numberOfFields=1, enable=enableMotionBlur),
                            attrName="mbTransformSamples")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Deformation Samples", numberOfFields=1, enable=enableMotionBlur),
                            attrName="mbDeformSamples")
                        self._addControl(
                            ui=pm.floatFieldGrp(
                                label="Shutter Open", numberOfFields=1, enable=enableMotionBlur),
                            attrName="shutterOpen")
                        self._addControl(
                            ui=pm.floatFieldGrp(
                                label="Shutter Close", numberOfFields=1, enable=enableMotionBlur),
                            attrName="shutterClose")

                with pm.frameLayout(label="System", collapsable=True, collapse=False):
                    with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Threads", numberOfFields=1),
                            attrName="threads")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Texture Cache Size (MB)", numberOfFields=1),
                            attrName="maxTexCacheSize")

                with pm.frameLayout(label="Experimental", collapsable=True, collapse=False):
                    with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.checkBoxGrp(label="Use Embree"),
                            attrName="useEmbree")

        pm.setUITemplate("renderGlobalsTemplate", popTemplate=True)
        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(
            parentForm,
            edit=True,
            attachForm=[
                ("appleseedScrollLayout", "top", 0),
                ("appleseedScrollLayout", "bottom", 0),
                ("appleseedScrollLayout", "left", 0),
                ("appleseedScrollLayout", "right", 0)])

        logger.debug("Created appleseed render global main tab")

        # Update the newly created tab.
        self.update()
예제 #31
0
파일: rope.py 프로젝트: dayelov/DevPyLib
def rp_cr():
    """..............................................................................................//"""

    ncj = int(pm.intField('NCJ', q=1, v=1))
    # > input data
    # > control joints
    pcj = int(pm.intField('PCJ', q=1, v=1))
    # > pow control joints
    nj = ((ncj * pcj) - (pcj - 1))
    # > joints
    pm.intField('NJ', e=1, v=(nj - 1))
    oj = int(pm.intField('OJ', q=1, v=1))
    # > orient joint
    # > selection list
    s = pm.ls(sl=1)
    rp_check(s)
    ss = pm.listRelatives(s[0], s=1)
    # > selection shape
    tss = str(pm.objectType(ss[0]))
    # > type selection shape
    typ = 0
    if pm.mel.gmatch(tss, "nurbsCurve"):
        typ = 0

    if pm.mel.gmatch(tss, "bezierCurve"):
        typ = 1

    rp_del()
    pm.delete(s[0], ch=1)
    if typ == 0:
        pm.rebuildCurve(s[0], s=(nj - 1), kt=1, d=3, kep=1)

    pm.setAttr((s[0] + ".it"),
               0)
    # > curve info
    is_ = str(rp_info(s))
    iv = float(pm.getAttr(is_ + ".al"))
    # > group folders
    rg = str(pm.group(em=1, n=(s[0] + "_rig")))
    sg = str(pm.group(em=1, n=(s[0] + "_sistem")))
    # > twist joint
    sj = []
    ds = str(pm.curve(p=[(0, 0, 0), (iv, 0, 0)], k=[0, 1], d=1, n=(s[0] + "_tw")))
    pm.rebuildCurve(ds, s=(nj - 1), ch=0, d=1, kep=1)
    if nj == 3:
        pm.delete(ds + ".cv[1]")
        pm.delete(ds + ".cv[2]")

    for i in range(0, nj):
        t = (pm.xform((ds + ".cv[" + str(i) + "]"),
                            q=1, ws=1, t=1))
        sj[i] = str(pm.joint(p=((t.x), (t.y), (t.z)), rad=1, n=(s[0] + "_tw_" + str((i + 1)))))
        pm.setAttr((sj[i] + ".ro"),
                   3)

    pm.pm.cmds.rotate(oj, 0, 0, sj[0], r=1, os=1)
    pm.makeIdentity(sj[0], a=1, r=1)
    h = pm.ikHandle(c=s[0], ee=sj[nj], ccv=0,
                    sol="ikSplineSolver", n=(s[0] + "_tw_hl"),
                    sj=sj[0])
    pm.parent(sj[0], h[0], sg)
    pm.delete(ds)
    # > control joint
    pm.select(s[0], r=1)
    pm.mel.selectCurveCV("all")
    cv = pm.ls(fl=1, sl=1)
    p = (((len(cv)) + 2) / 3)
    pm.select(cl=1)
    cj = []
    if pm.checkBoxGrp('CTJP', q=1, v1=1):
        pm.setAttr((s[0] + ".it"),
                   1)
        # > create joints
        for i in range(0, (len(cv))):
            t = (pm.xform(cv[i], q=1, ws=1, t=1))
            pm.select(cl=1)
            cj[i] = str(pm.joint(p=((t.x), (t.y), (t.z)), rad=2, n=(s[0] + "_ctj_" + str((i + 1)))))
            pm.setAttr((cj[i] + ".ro"),
                       3)

        # > aim joints
        for i in range(0, ((len(cv)) - 1)):
            pm.aimConstraint(cj[i], cj[i + 1], w=1, o=(0, 180, 0))

        pm.aimConstraint(cj[1], cj[0], w=1, o=(0, 0, 0))
        pm.delete(cj, cn=1)
        pm.makeIdentity(cj, a=1, r=1)
        # > correct aim joints
        for i in range(0, (p - 1)):
            pm.aimConstraint(cj[i + (2 * i)], cj[i + 1 + (2 * i)], w=1, o=(0, 0, 0))

        for i in range(1, (p - 0)):
            pm.aimConstraint(cj[i + (2 * i)], cj[i - 1 + (2 * i)], w=1, o=(0, 0, 0))

        pm.delete(cj, cn=1)
        pm.makeIdentity(cj, a=1, r=1)


    else:
        for i in range(0, ncj):
            t = (pm.xform(sj[(i * pcj)], q=1, ws=1, t=1))
            pm.select(cl=1)
            cj[i] = str(pm.joint(p=((t.x), (t.y), (t.z)), rad=2, n=(s[0] + "_ctj_" + str((i + 1)))))
            pm.setAttr((cj[i] + ".ro"),
                       3)
            pm.parentConstraint(sj[(i * pcj)], cj[i], w=1)
            pm.delete(cj[i], cn=1)
            pm.makeIdentity(cj[i], a=1, r=1)

    pm.parent(cj, sg)
    pm.parent(sg, s[0], rg)
    # > connect scale
    sw = str(pm.createNode('multiplyDivide', n=(s[0] + "_s")))
    pm.setAttr((sw + ".op"),
               2)
    pm.connectAttr((is_ + ".al"), (sw + ".i1x"),
                   f=1)
    pm.connectAttr((rg + ".sx"), (sw + ".i2x"),
                   f=1)
    sx = str(pm.createNode('multiplyDivide', n=(s[0] + "_sx")))
    pm.setAttr((sx + ".op"),
               2)
    pm.connectAttr((sw + ".ox"), (sx + ".i1x"),
                   f=1)
    pm.setAttr((sx + ".i2x"),
               iv)
    for i in range(0, nj):
        pm.connectAttr((sx + ".ox"), (sj[i] + ".sx"),
                       f=1)

    if pm.checkBoxGrp('CTJ', q=1, v1=1):
        cg = str(pm.group(em=1, n=(s[0] + "_control")))
        # > add control
        if pm.checkBoxGrp('CTJP', q=1, v1=1):
            c = []
            t = []
            for i in range(0, (len(cv))):
                pm.connectAttr((cj[i] + ".t"), (ss[0] + ".cp[" + str(i) + "]"),
                               f=1)
                ct = rp_create_control(s, i)
                c[i] = ct[0]
                t[i] = ct[1]
                pm.parentConstraint(cj[i], ct[1], w=1)
                pm.delete(ct[1], cn=1)
                pm.makeIdentity(ct[1], a=1, t=1)
                pm.parentConstraint(ct[0], cj[i], mo=1, w=1)
                pm.parent(ct[1], cg)

            scg = []
            for i in range(0, p):
                scg[i] = str(pm.group(em=1, n=("scGrp_" + s[0] + "_" + str((i + 1)))))
                scgpc = pm.parentConstraint(c[i + (2 * i)], scg[i], w=1)
                pm.delete(scgpc[0])
                pm.makeIdentity(scg[i], a=1, t=1)
                pm.parent(scg[i], c[i + (2 * i)])
                pm.connectAttr((c[i + (2 * i)] + ".change"), (scg[i] + ".sx"),
                               f=1)
                pm.connectAttr((c[i + (2 * i)] + ".change"), (scg[i] + ".sy"),
                               f=1)
                pm.connectAttr((c[i + (2 * i)] + ".change"), (scg[i] + ".sz"),
                               f=1)

            for i in range(0, (p - 1)):
                pm.parent(t[i + 1 + (2 * i)], scg[i])
                pm.setAttr((t[i + 1 + (2 * i)] + ".sx"),
                           0.5)
                pm.setAttr((t[i + 1 + (2 * i)] + ".sy"),
                           0.5)
                pm.setAttr((t[i + 1 + (2 * i)] + ".sz"),
                           0.5)
                pm.setAttr((c[i + 1 + (2 * i)] + ".bezier"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i + 1 + (2 * i)] + ".change"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i + 1 + (2 * i)] + ".rx"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i + 1 + (2 * i)] + ".ry"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i + 1 + (2 * i)] + ".rz"),
                           cb=0, k=0, l=1)
                pm.connectAttr((c[i + (2 * i)] + ".bezier"), (t[i + 1 + (2 * i)] + ".v"),
                               f=1)

            for i in range(1, (p - 0)):
                pm.parent(t[i - 1 + (2 * i)], scg[i])
                pm.setAttr((t[i - 1 + (2 * i)] + ".sx"),
                           0.5)
                pm.setAttr((t[i - 1 + (2 * i)] + ".sy"),
                           0.5)
                pm.setAttr((t[i - 1 + (2 * i)] + ".sz"),
                           0.5)
                pm.setAttr((c[i - 1 + (2 * i)] + ".bezier"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i - 1 + (2 * i)] + ".change"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i - 1 + (2 * i)] + ".rx"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i - 1 + (2 * i)] + ".ry"),
                           cb=0, k=0, l=1)
                pm.setAttr((c[i - 1 + (2 * i)] + ".rz"),
                           cb=0, k=0, l=1)
                pm.connectAttr((c[i + (2 * i)] + ".bezier"), (t[i - 1 + (2 * i)] + ".v"),
                               f=1)



        else:
            for i in range(0, (len(cj))):
                ct = rp_create_control(s, i)
                pm.parentConstraint(cj[i], ct[1], w=1)
                pm.delete(ct[1], cn=1)
                pm.makeIdentity(ct[1], a=1, t=1)
                pm.parentConstraint(ct[0], cj[i], mo=1, w=1)
                pm.parent(ct[1], cg)
                pm.connectAttr((ct[0] + ".change"), (cj[i] + ".sx"),
                               f=1)
                pm.connectAttr((ct[0] + ".change"), (cj[i] + ".sy"),
                               f=1)
                pm.connectAttr((ct[0] + ".change"), (cj[i] + ".sz"),
                               f=1)

        pm.parent(cg, rg)

    if pm.checkBoxGrp('CTJP', q=1, v1=1) == 0:
        pm.skinCluster(cj, s[0], mi=2, rui=1, dr=2.0, n=(s[0] + "_skin"))
    # > connection control to curve

    pm.select(h[0])
    # > end
    pm.ToggleLocalRotationAxes()
    pm.select(s[0])
    pm.mel.rp_Twist()
    print " :) > rope riging curve > " + s[0] + "\n"
예제 #32
0
파일: export.py 프로젝트: jzboylxj/XDLibs
    def start_optimize_fbx(self, export_files):
        """
        优化FBX文件

        主要功能:
        1.清除命名空间
        2.清理头部的动画曲线

        :param export_files: 需要输出的文件列表
        :return: True
        """
        # export_grp = ["character_root", "final_model_grp"]
        system_namespace = ['UI', 'shared']

        for export_file in export_files:
            # 新建场景,打开指定场景
            cmds.file(new=True, force=True)
            cmds.file(export_file, o=True)
            file_name = cmds.file(
                q=1, sceneName=True, shortName=True).split('.')[0]
            print(file_name + ' already open!')

            # 将MAYA的时间格式改成ntsc(30帧每秒)
            common.set_time_unit(unit='ntsc')

            # 命名空间列表
            all_namespace_list = pm.namespaceInfo(lon=True)
            for name in system_namespace:
                all_namespace_list.remove(name)
            # 清楚命名空间
            for namespace in all_namespace_list:
                pm.namespace(removeNamespace=":%s" % namespace,
                             mergeNamespaceWithParent=True)

            if pm.objExists("character_Group"):
                pm.delete("character_Group")

            # 清理头部动画
            if pm.checkBoxGrp(self.fbx_optimize, q=True, v1=True):
                pm.select("head_JNT", hi=True)
                for jnt in pm.ls(sl=True):
                    anim_attrs = pm.listAttr(jnt, k=True)
                    for anim_attr in anim_attrs:
                        cmd = '''cutKey -cl -t ":" -f ":" -at %s %s;''' % (
                            anim_attr, jnt.controller_name())
                        mel.eval(cmd)

            # 清理指定骨骼的动画
            if pm.checkBoxGrp(self.fbx_optimize, q=True, v2=True):
                target_joint = pm.textFieldGrp(
                    self.optimize_target, q=True, text=True)
                if pm.objExists(target_joint):
                    # pm.select(target_joint)
                    anim_attrs = pm.listAttr(target_joint, k=True)
                    for anim_attr in anim_attrs:
                        cmd = '''cutKey -cl -t ":" -f ":" -at %s %s;''' % (
                            anim_attr, target_joint)
                        mel.eval(cmd)
                    offset_value = pm.floatFieldGrp(
                        self.offset_target, q=True, value=True)
                    pm.PyNode(target_joint).translate.set(offset_value)

            export_file_name = "%s/%s.fbx" % (self.output_path, file_name)

            # 清理模型组
            if pm.checkBoxGrp(self.fbx_optimize, q=True, v3=True):
                if pm.objExists("MotionSystem"):
                    pm.delete("MotionSystem")
                if pm.objExists("Geometry"):
                    pm.delete("Geometry")
                if len(pm.ls(type="mesh")) > 0:
                    for item in pm.ls(type="mesh"):
                        parent_node = item.getParent()
                        pm.delete(parent_node)

            # 清理捏脸骨骼动画
            if pm.checkBox(self.face_make_node_check, q=True, value=True):
                faceMakeSets = []
                extraSets = []

                extraSets = ["L_eyeBall_socket", "L_eyeBall_socket_sdk",
                             "R_eyeBall_socket", "R_eyeBall_socket_sdk",
                             "headTipEnd_JNT", "facial_C_Nose_JNT",
                             "facial_C_NoseBase_JNT", "head_JNT",
                             "L_browMid_JNT", "L_browIn_JNT", "L_browOut_JNT",
                             "L_brow_JNT",
                             "R_browMid_JNT", "R_browIn_JNT", "R_browOut_JNT",
                             "R_brow_JNT", ]

                pm.select("head_JNT", hi=True)

                for item in pm.ls(sl=True):
                    if "definition_" in item.controller_name() and item.type() == "joint":
                        faceMakeSets.append(item)

                for item in extraSets:
                    if pm.objExists(item):
                        faceMakeSets.append(item)

                pm.select(faceMakeSets)

                for jnt in pm.ls(sl=True):
                    anim_attrs = pm.listAttr(jnt, k=True)
                    for anim_attr in anim_attrs:
                        cmd = '''cutKey -cl -t ":" -f ":" -at %s %s;''' % (
                            anim_attr, jnt.controller_name())
                        mel.eval(cmd)

            cmds.file(export_file_name,
                      force=True,
                      pr=True,
                      ea=True,
                      typ="FBX export",
                      options="v=0")

            pm.textScrollList(
                self.output_scroll, e=True, a=export_file_name)
            pm.textScrollList(
                self.task_scroll, e=True, ri=export_file)

        return True
예제 #33
0
 def set_show_doc_ui(self, *args):
     # don't use args because of 2011 qt compatibility
     self.show_doc = pmc.checkBoxGrp(self.order_ui, q=True, v2=True)
     self.save_options()
예제 #34
0
 def optvar_to_window(self, pref_handler):
     # Update the shelf checkboxes with the saved list of pinned shelves.
     currently_pinned_shelves = set(get_pinned_shelves())
     for shelf_name, checkbox_name in pref_handler.shelf_items:
         pm.checkBoxGrp(checkbox_name, e=True, value1=shelf_name in currently_pinned_shelves)
예제 #35
0
파일: export.py 프로젝트: jzboylxj/XDLibs
    def show(self):
        if pm.window("autoExportFBXFileTool", ex=True):
            pm.deleteUI("autoExportFBXFileTool")

        pm.window(
            "autoExportFBXFileTool",
            t=u"自动输出 %s" % __version__,
            mb=True,
            cc=lambda *args: self._close_main_window())

        self.work_list_frame = pm.frameLayout(
            label=u"自动输出", mw=10, mh=5, bgs=True)
        self.form_layout = pm.formLayout()
        self.work_mode = pm.radioButtonGrp(
            label=u'工作类型:',
            labelArray3=[u'输出FBX', u'FBX优化', u'全流程'],
            cw4=[60, 80, 80, 80],
            sl=self.work_mode_selected,
            on1=lambda *args: self.fbx_optimize_state(state=False),
            on2=lambda *args: self.fbx_optimize_state(state=True),
            of2=lambda *args: self.fbx_optimize_state(state=False),
            on3=lambda *args: self.fbx_optimize_state(state=True),
            numberOfRadioButtons=3)
        fbx_optimize_layout = pm.columnLayout(adj=1)
        self.fbx_optimize = pm.checkBoxGrp(
            numberOfCheckBoxes=3,
            label=u"优化选项:",
            labelArray3=[u"清理头部动画", u"清理单个骨骼动画", u"清理模型组和控制器组"],
            cw4=[60, 100, 120, 100])
        self.face_make_node_check = pm.checkBox(label=u"优化捏脸骨骼")
        pm.setParent(fbx_optimize_layout)

        optimize_target_joint_layout = pm.columnLayout(p=self.form_layout)
        self.optimize_target = pm.textFieldGrp(
            label=u"骨骼名称:", cw2=[60, 300])
        self.offset_target = pm.floatFieldGrp(
            numberOfFields=3,
            cw4=[60, 100, 100, 100],
            label=u'偏移参数:',
            value1=0,
            value2=0,
            value3=0)
        pm.setParent("..")
        self.task_scroll_label = pm.text(
            label=u"任务列表:", al="left")
        self.task_scroll = pm.textScrollList(ams=True, w=200)
        pm.popupMenu()
        pm.menuItem(label=u"添加文件",
                    c=lambda *args: self._append_file())
        pm.menuItem(label=u"移除选择",
                    c=lambda *args: self.remove_select_item())

        self.output_scroll_label = pm.text(label=u"输出列表:", al="left")
        self.output_scroll = pm.textScrollList(ams=True, w=200)
        pm.popupMenu()
        pm.menuItem(label=u"清空列表",
                    c=lambda *args: self.clean_output_scroll())
        pm.menuItem(label=u"转移到任务列表",
                    c=lambda *args: self.move_to_task_scroll())

        self.ouput_path_field = pm.textFieldButtonGrp(
            adj=2,
            label=u"存放路径:",
            bl=u"指定路径",
            cw3=[60, 100, 100],
            text=self.output_path,
            bc=lambda *args: self._set_output_location())
        self.excute_btn = pm.button(
            label=u"开始输出",
            c=lambda *args: self.start_export())

        pm.formLayout(
            self.form_layout,
            edit=True,
            attachForm=[
                (self.work_mode, 'top', 0),
                (self.work_mode, 'left', 0),
                (self.work_mode, 'right', 0),
                (fbx_optimize_layout, 'left', 0),
                (fbx_optimize_layout, 'right', 0),
                (optimize_target_joint_layout, 'left', 0),
                (optimize_target_joint_layout, 'right', 0),
                (self.ouput_path_field, 'left', 0),
                (self.ouput_path_field, 'right', 0),
                (self.excute_btn, 'left', 0),
                (self.excute_btn, 'right', 0),
                (self.excute_btn, 'bottom', 10)
            ],
            attachControl=[
                (fbx_optimize_layout, 'top', 5, self.work_mode),
                (optimize_target_joint_layout, 'top', 5, fbx_optimize_layout),
                (self.task_scroll_label, 'top', 5,
                 optimize_target_joint_layout),
                (self.task_scroll, 'top', 5, self.task_scroll_label),
                (self.task_scroll, 'bottom', 5, self.ouput_path_field),
                (self.output_scroll_label, 'top', 5,
                 optimize_target_joint_layout),
                (self.output_scroll_label, 'left', 5, self.task_scroll),
                (self.output_scroll, 'top', 5, self.output_scroll_label),
                (self.output_scroll, 'left', 5, self.task_scroll),
                (self.output_scroll, 'bottom', 5, self.ouput_path_field),
                (self.ouput_path_field, 'bottom', 5, self.excute_btn),
            ]
        )

        pm.showWindow("autoExportFBXFileTool")

        if self.work_mode_selected == 2:
            self.fbx_optimize_state(state=True)
        elif self.work_mode_selected == 1:
            self.fbx_optimize_state(state=False)
예제 #36
0
    def RecostructUI(self):

        template = pm.uiTemplate()
        template.define(pm.frameLayout , mh=6 , mw=5)
        template.define(pm.columnLayout , adj=1 , rs=2)

        with pm.window('RecostructWin' , title='Recostruct Subdiv v1.3' , menuBar=True , menuBarVisible=True) as win:
            pm.window('RecostructWin' , edit=True , width=420 , height=172)
            with pm.frameLayout(lv=False , bv=False , mh=2 , mw=7):
                with template:
                    with pm.columnLayout():
                        pm.button(label='Recostruct Subdiv' , c=pm.Callback(self.Main) , h=40 , bgc=self.clrs['orange'])
                        with pm.frameLayout('more' , l='More' , cll=True , cl=True , ec=pm.Callback(self.expand) ,
                                            cc=pm.Callback(self.collapse)):
                            with pm.columnLayout(cat=('left' , -20)):
                                pm.checkBoxGrp(
                                    numberOfCheckBoxes=1 ,
                                    columnAlign=(1 , 'right') ,
                                    label='Settings: ' ,
                                    label1='Keep original (Recostructing is not undoable)' ,
                                    v1=True ,
                                    on1=pm.Callback(self.keepOrig_True) ,
                                    of1=pm.Callback(self.keepOrig_False)
                                )
                                pm.checkBoxGrp(
                                    numberOfCheckBoxes=1 ,
                                    columnAlign=(1 , 'right') ,
                                    label='' , label1='Recostruct vertex positions' ,
                                    v1=True ,
                                    on1=pm.Callback(self.curvature_True) ,
                                    of1=pm.Callback(self.curvature_False) ,
                                )
                                pm.checkBoxGrp(
                                    'sharpCorners' ,
                                    numberOfCheckBoxes=1 ,
                                    columnAlign=(1 , 'right') ,
                                    label='' , label1='Sharp corners' ,
                                    v1=True ,
                                    on1=pm.Callback(self.sharpCorners_True) ,
                                    of1=pm.Callback(self.sharpCorners_False) ,
                                )
                                pm.checkBoxGrp(
                                    numberOfCheckBoxes=1 ,
                                    columnAlign=(1 , 'right') ,
                                    label='' ,
                                    label1='Turn Off progress bar (Increase speed)' ,
                                    v1=False ,
                                    on1=pm.Callback(self.progress_False) ,
                                    of1=pm.Callback(self.progress_True)
                                )
                                rb = pm.radioButtonGrp(numberOfRadioButtons=1 , on1=pm.Callback(self.reverse_False) ,
                                                       label='' , sl=1 ,
                                                       label1='Default starting point (For most cases)')
                                pm.radioButtonGrp(numberOfRadioButtons=1 , on1=pm.Callback(self.reverse_True) ,
                                                  shareCollection=rb , label='' ,
                                                  label1='Reverse starting point (For special cases)')
                    with pm.frameLayout(l='Progress'):
                        pm.progressBar('progress' , h=25 , ii=True)
                        with pm.rowColumnLayout(
                                numberOfColumns=2 ,
                                cal=[(1 , 'left') ,
                                     (2 , 'right')] ,
                                columnWidth=[(1 , 275) , (2 , 125)]
                        ):
                            pm.textField('meshes' , text='' , ed=False , width=200)
                            pm.text('meshesNum' , label='' , height=25)
예제 #37
0
 def curvature_False(self):
     self.curvature = False
     pm.checkBoxGrp('sharpCorners' , edit=True , en=False)
예제 #38
0
 def curvature_True(self):
     self.curvature = True
     pm.checkBoxGrp('sharpCorners' , edit=True , en=True)
예제 #39
0
 def _set_change_unit_check(self):
     self.changeNTSC = pm.checkBoxGrp('unitToNTSC', q=True, value1=True)
예제 #40
0
파일: export.py 프로젝트: jzboylxj/XDLibs
 def fbx_optimize_state(self, state):
     if state == True:
         pm.checkBoxGrp(self.fbx_optimize, e=True, en=True)
     elif state == False:
         pm.checkBoxGrp(self.fbx_optimize, e=True, en=False)
예제 #41
0
파일: rope.py 프로젝트: dayelov/DevPyLib
def ak_rope():
    """:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://
      Script:     ak_rope                                                                         //
      Version:    12.0                                                                            //
      Date:       21.05.2013                                                                      //
      Author:     Andrey Kanin                                                                    //
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://"""

    win = "ROPE"
    if pm.window(win, exists=1):
        pm.deleteUI(win)

    pm.window(win, h=100, mb=1, t="ak       ROPE", w=100, tlb=1)
    pm.columnLayout(w=101)
    pm.rowLayout(nc=2)
    pm.button(h=15, c=lambda *args: pm.mel.rp_curve(), bgc=(0.3, 0.3, 0.3), l="curve", w=48)
    pm.button(h=15, c=lambda *args: pm.mel.rp_bezier(), bgc=(0.3, 0.3, 0.3), l="bezier", w=48)
    pm.setParent('..')
    pm.separator(h=5, w=100, st="in")
    pm.rowLayout(nc=4, cw4=(5, 15, 50, 15))
    pm.text(" ")
    pm.checkBoxGrp('CTJ', cc=lambda *args: pm.mel.eval(
        "if(`checkBoxGrp -q -v1 CTJ`){checkBoxGrp -e -vis 1 CTJP;}else{checkBoxGrp -e -vis 0 CTJP;}"),
                   v1=1, ncb=1,
                   ann="add circle contollers CT",
                   w=15)
    pm.text("   add CT")
    pm.checkBoxGrp('CTJP', cc=lambda *args: pm.mel.eval(
        "if(`checkBoxGrp -q -v1 CTJP`){text -e -en 0 TXTCT;}else{text -e -en 1 TXTCT;}"),
                   v1=0, ncb=1, ann="add bezier CT contollers", w=15)
    pm.setParent('..')
    pm.separator(h=5, w=100, st="in")
    pm.button(c=lambda *args: pm.mel.rp_cr(), bgc=(0.8, 0.8, 0.1), h=20, ann="riging curve", l="riging curve", w=99)
    pm.separator(h=5, w=100, st="in")
    pm.rowLayout(nc=4, cw4=(5, 15, 50, 15))
    pm.text(" ")
    pm.checkBoxGrp('MRL', cc=lambda *args: pm.mel.eval("if(`checkBoxGrp -q -v1 MRL`){checkBoxGrp -e -v1 0 VRL;}"),
                   v1=1, ncb=1,
                   ann="nodes sistem",
                   w=15)
    pm.button(c=lambda *args: [pm.mel.rp_mixTwist(), pm.mel.rp_Twist()], bgc=(0.3, 0.3, 0.3), h=20, ann="resistems",
              l="twist", w=50)
    pm.checkBoxGrp('VRL', cc=lambda *args: pm.mel.eval("if(`checkBoxGrp -q -v1 VRL`){checkBoxGrp -e -v1 0 MRL;}"),
                   v1=0, ncb=1,
                   ann="vectors sistem",
                   w=15)
    pm.setParent('..')
    pm.separator(h=5, w=100, st="in")
    pm.rowLayout(nc=2, cw2=(60, 30))
    pm.text('TXTCT', l="   controls")
    pm.intField('NCJ', bgc=(0.15, 0.15, 0.15), min=2, max=100, ann="how many contols", w=37, v=3)
    pm.setParent('..')
    pm.rowLayout(nc=2, cw2=(60, 30))
    pm.text("   segment")
    pm.intField('PCJ', bgc=(0.15, 0.15, 0.15), min=1, max=100, ann="how many segments", w=37, v=5)
    pm.setParent('..')
    pm.rowLayout(nc=2, cw2=(60, 30))
    pm.text("   ==>")
    pm.intField('NJ', bgc=(0.3, 0.3, 0.3), min=1, max=100, ann="total segments", w=37, v=10)
    pm.setParent('..')
    pm.separator(h=5, w=100, st="in")
    pm.rowLayout(nc=2, cw2=(60, 30))
    pm.text("   orient")
    pm.intField('OJ', bgc=(0.2, 0.2, 0.2), min=0, max=360, ann="orient ik sistem", w=37, v=0)
    pm.setParent('..')
    pm.separator(h=5, w=100, st="in")
    pm.rowLayout(nc=2)
    pm.button(c=lambda *args: pm.mel.rp_surface(), bgc=(0.0, 0.6, 0.4), h=20, ann="convert to surface", l="surface",
              w=60)
    pm.optionMenuGrp('AXES', bgc=(0.2, 0.2, 0.2), w=36)
    pm.menuItem(l="y")
    pm.menuItem(l="x")
    pm.menuItem(l="z")
    pm.setParent('..')
    pm.separator(h=5, w=100, st="in")
    pm.rowLayout(nc=2)
    pm.button(h=20, c=lambda *args: pm.mel.rp_grip(), bgc=(0.2, 0.2, 0.2), l="grip", w=60)
    pm.button(h=20, c=lambda *args: pm.mel.rp_del(), bgc=(0.2, 0.2, 0.2), l="del", w=36)
    pm.setParent('..')
    pm.setParent('..')
    pm.showWindow(win)
예제 #42
0
    def uiCreate(self):

        self.onCloseClicked()

        self.window = pm.window(
            WIN_NAME,
            title='PyMel Window',
            maximizeButton=False
        )

        with self.window:
            with pm.formLayout() as uiLAY_mainForm:
                with pm.scrollLayout('uiLAY_mainScroll', childResizable=True) as self.uiLAY_mainScroll:
                    with pm.columnLayout(adjustableColumn=True):

                        with self.uiCreateFrame('uiLAY_frameCheckBoxes', 'Check Boxes (PMCheckBox)') as self.uiLAY_frameCheckBoxes:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(width=140, style='none')
                                    self.uiCHK_test1 = pm.checkBox('uiCHK_test1', label='test1')
                                    self.uiCHK_test2 = pm.checkBox('uiCHK_test2', label='test2')

                        with self.uiCreateFrame('uiLAY_frameCheckBoxGroups', 'Check Box Groups (PMCheckBoxGrp#)') as self.uiLAY_frameCheckBoxGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiCHKGRP_test1 = pm.checkBoxGrp(
                                    'uiCHKGRP_test1',
                                    numberOfCheckBoxes=1,
                                    label='PMCheckBoxGrp1',
                                    label1='test1'
                                )
                                self.uiCHKGRP_test2 = pm.checkBoxGrp(
                                    'uiCHKGRP_test2',
                                    numberOfCheckBoxes=2,
                                    label='PMCheckBoxGrp2',
                                    labelArray2=('test1', 'test2')
                                )
                                self.uiCHKGRP_test3 = pm.checkBoxGrp(
                                    'uiCHKGRP_test3',
                                    numberOfCheckBoxes=3,
                                    label='PMCheckBoxGrp3',
                                    labelArray3=('test1', 'test2', 'test3')
                                )
                                self.uiCHKGRP_test4 = pm.checkBoxGrp(
                                    'uiCHKGRP_test4',
                                    numberOfCheckBoxes=4,
                                    label='PMCheckBoxGrp4',
                                    labelArray4=('test1', 'test2', 'test3', 'test4')
                                )

                        with self.uiCreateFrame('uiLAY_frameColorSliders', 'Color Slider Groups (PMColorSliderGrp)') as self.uiLAY_frameColorSliders:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiCLRGRP_test1 = pm.colorSliderGrp(
                                    'uiCLRGRP_test1',
                                    label='test1'
                                )
                                self.uiCLRGRP_test2 = pm.colorSliderGrp(
                                    'uiCLRGRP_test2',
                                    label='test2'
                                )

                        with self.uiCreateFrame('uiLAY_frameFloatFields', 'Float Fields (PMFloatField)') as self.uiLAY_frameFloatFields:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(width=140, style='none')
                                    self.uiFLF_test1 = pm.floatField('uiFLF_test1')
                                    self.uiFLF_test2 = pm.floatField('uiFLF_test2')

                        with self.uiCreateFrame('uiLAY_frameFloatFieldGroups', 'Float Field Groups (PMFloatFieldGrp#)') as self.uiLAY_frameFloatFieldGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiFLFGRP_test1 = pm.floatFieldGrp(
                                    'uiFLFGRP_test1',
                                    numberOfFields=1,
                                    label='PMFloatFieldGrp1'
                                )
                                self.uiFLFGRP_test2 = pm.floatFieldGrp(
                                    'uiFLFGRP_test2',
                                    numberOfFields=2,
                                    label='PMFloatFieldGrp2'
                                )
                                self.uiFLFGRP_test3 = pm.floatFieldGrp(
                                    'uiFLFGRP_test3',
                                    numberOfFields=3,
                                    label='PMFloatFieldGrp3'
                                )
                                self.uiFLFGRP_test4 = pm.floatFieldGrp(
                                    'uiFLFGRP_test4',
                                    numberOfFields=4,
                                    label='PMFloatFieldGrp4'
                                )

                        with self.uiCreateFrame('uiLAY_frameFloatScrollBars', 'Float Scroll Bars (PMFloatScrollBar)') as self.uiLAY_frameFloatScrollBars:
                            with pm.columnLayout(adjustableColumn=True):
                                pm.separator(style='none', height=2)
                                self.uiFLSCRL_test1 = pm.floatScrollBar('uiFLSCRL_test1')
                                self.uiFLSCRL_test2 = pm.floatScrollBar('uiFLSCRL_test2')

                        with self.uiCreateFrame('uiLAY_frameFloatSliders', 'Float Sliders (PMFloatSlider)') as self.uiLAY_frameFloatSliders:
                            with pm.columnLayout(adjustableColumn=True):
                                pm.separator(style='none', height=2)
                                self.uiFLTSLD_test1 = pm.floatSlider('uiFLTSLD_test1')
                                self.uiFLTSLD_test2 = pm.floatSlider('uiFLTSLD_test2')

                        with self.uiCreateFrame('uiLAY_frameFloatSliderGroups', 'Float Slider Groups (PMFloatSliderGrp)') as self.uiLAY_frameFloatSliderGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiFLSGRP_test1 = pm.floatSliderGrp(
                                    'uiFLSGRP_test1',
                                    label='test1',
                                    field=True
                                )
                                self.uiFLSGRP_test2 = pm.floatSliderGrp(
                                    'uiFLSGRP_test2',
                                    label='test2',
                                    field=True
                                )

                        with self.uiCreateFrame('uiLAY_frameIconTextCheckBoxes', 'Icon Text Check Boxes (PMIconTextCheckBox)') as self.uiLAY_frameIconTextCheckBoxes:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(style='none', width=140)
                                    self.uiITCHK_test1 = pm.iconTextCheckBox(
                                        'uiITCHK_test1',
                                        style='iconAndTextHorizontal',
                                        label='cube',
                                        image1='cube'
                                    )
                                    self.uiITCHK_test2 = pm.iconTextCheckBox(
                                        'uiITCHK_test2',
                                        style='iconAndTextHorizontal',
                                        label='cone',
                                        image1='cone'
                                    )

                        with self.uiCreateFrame('uiLAY_frameIconTextRadioButtons', 'Icon Text Radio Buttons (PMIconTextRadioButton)') as self.uiLAY_frameIconTextRadioButtons:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=4):
                                    pm.separator(style='none', width=140)
                                    pm.iconTextRadioCollection()
                                    self.uiITRAD_test1 = pm.iconTextRadioButton(
                                        'uiITRAD_test1',
                                        style='iconAndTextHorizontal',
                                        label='cube',
                                        image1='cube'
                                    )
                                    self.uiITRAD_test2 = pm.iconTextRadioButton(
                                        'uiITRAD_test2',
                                        style='iconAndTextHorizontal',
                                        label='cone',
                                        image1='cone'
                                    )
                                    self.uiITRAD_test3 = pm.iconTextRadioButton(
                                        'uiITRAD_test3',
                                        style='iconAndTextHorizontal',
                                        label='torus',
                                        image1='torus'
                                    )

                        with self.uiCreateFrame('uiLAY_frameIconTextScrollLists', 'Icon Text Scroll Lists (PMIconTextScrollList)') as self.uiLAY_frameIconTextScrollLists:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(style='none', width=140)
                                    self.uiITSLST_test1 = pm.iconTextScrollList(
                                        'uiITSLST_test1',
                                        allowMultiSelection=True,
                                        append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten')
                                    )
                                    self.uiITSLST_test2 = pm.iconTextScrollList(
                                        'uiITSLST_test2',
                                        allowMultiSelection=True,
                                        append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten')
                                    )

                        with self.uiCreateFrame('uiLAY_frameIntFields', 'Int Fields (PMIntField)') as self.uiLAY_frameIntFields:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(width=140, style='none')
                                    self.uiINF_test1 = pm.intField('uiINF_test1')
                                    self.uiINF_test2 = pm.intField('uiINF_test2')

                        with self.uiCreateFrame('uiLAY_frameIntFieldGroups', 'Int Field Groups (PMIntFieldGrp#)') as self.uiLAY_frameIntFieldGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiINFGRP_test1 = pm.intFieldGrp(
                                    'uiINFGRP_test1',
                                    numberOfFields=1,
                                    label='PMIntFieldGrp1'
                                )
                                self.uiINFGRP_test2 = pm.intFieldGrp(
                                    'uiINFGRP_test2',
                                    numberOfFields=2,
                                    label='PMIntFieldGrp2'
                                )
                                self.uiINFGRP_test3 = pm.intFieldGrp(
                                    'uiINFGRP_test3',
                                    numberOfFields=3,
                                    label='PMIntFieldGrp3'
                                )
                                self.uiINFGRP_test4 = pm.intFieldGrp(
                                    'uiINFGRP_test4',
                                    numberOfFields=4,
                                    label='PMIntFieldGrp4'
                                )

                        with self.uiCreateFrame('uiLAY_frameIntScrollBars', 'Int Scroll Bars (PMIntScrollBar)') as self.uiLAY_frameIntScrollBars:
                            with pm.columnLayout(adjustableColumn=True):
                                pm.separator(style='none', height=2)
                                self.uiINSCRL_test1 = pm.intScrollBar('uiINSCRL_test1')
                                self.uiINSCRL_test2 = pm.intScrollBar('uiINSCRL_test2')

                        with self.uiCreateFrame('uiLAY_frameIntSliders', 'Int Sliders (PMIntSlider)') as self.uiLAY_frameIntSliders:
                            with pm.columnLayout(adjustableColumn=True):
                                pm.separator(style='none', height=2)
                                self.uiINTSLD_test1 = pm.intSlider('uiINTSLD_test1')
                                self.uiINTSLD_test2 = pm.intSlider('uiINTSLD_test2')

                        with self.uiCreateFrame('uiLAY_frameIntSliderGroups', 'Int Slider Groups (PMIntSliderGrp)') as self.uiLAY_frameIntSliderGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiINSGRP_test1 = pm.intSliderGrp(
                                    'uiINSGRP_test1',
                                    label='test1',
                                    field=True
                                )
                                self.uiINSGRP_test2 = pm.intSliderGrp(
                                    'uiINSGRP_test2',
                                    label='test2',
                                    field=True
                                )

                        with self.uiCreateFrame('uiLAY_frameOptionMenus', 'Option Menus (PMOptionMenu)') as self.uiLAY_frameOptionMenus:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(width=110, style='none')
                                    self.uiOPTMNU_test1 = pm.optionMenu('uiOPTMNU_test1', label='test1')
                                    pm.menuItem(label='one')
                                    pm.menuItem(label='two')
                                    pm.menuItem(label='three')
                                    self.uiOPTMNU_test2 = pm.optionMenu('uiOPTMNU_test2', label='test2')
                                    pm.menuItem(label='four')
                                    pm.menuItem(label='five')
                                    pm.menuItem(label='six')

                        with self.uiCreateFrame('uiLAY_frameOptionMenuGroups', 'Option Menus Groups (PMOptionMenuGrp)') as self.uiLAY_frameOptionMenuGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiOPMGRP_test1 = pm.optionMenuGrp('uiOPMGRP_test1', label='test1', extraLabel='extraLabel')
                                pm.menuItem(label='one')
                                pm.menuItem(label='two')
                                pm.menuItem(label='three')
                                self.uiOPMGRP_test2 = pm.optionMenuGrp('uiOPMGRP_test2', label='test2', extraLabel='extraLabel')
                                pm.menuItem(label='four')
                                pm.menuItem(label='five')
                                pm.menuItem(label='six')

                        with self.uiCreateFrame('uiLAY_frameRadioButtons', 'Radio Buttons (PMRadioButton)') as self.uiLAY_frameRadioButtons:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=4):
                                    pm.separator(style='none', width=140)
                                    pm.radioCollection()
                                    self.uiRAD_test1 = pm.radioButton('uiRAD_test1', label='test1')
                                    self.uiRAD_test2 = pm.radioButton('uiRAD_test2', label='test2')
                                    self.uiRAD_test3 = pm.radioButton('uiRAD_test3', label='test3')

                        with self.uiCreateFrame('uiLAY_frameRadioButtonGroups', 'Radio Button Groups (PMRadioButtonGrp#)') as self.uiLAY_frameRadioButtonGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiRADGRP_test1 = pm.radioButtonGrp(
                                    'uiRADGRP_test1',
                                    numberOfRadioButtons=1,
                                    label='PMRadioButtonGrp1',
                                    label1='test1'
                                )
                                self.uiRADGRP_test2 = pm.radioButtonGrp(
                                    'uiRADGRP_test2',
                                    numberOfRadioButtons=2,
                                    label='PMRadioButtonGrp2',
                                    labelArray2=('test1', 'test2')
                                )
                                self.uiRADGRP_test3 = pm.radioButtonGrp(
                                    'uiRADGRP_test3',
                                    numberOfRadioButtons=3,
                                    label='PMRadioButtonGrp3',
                                    labelArray3=('test1', 'test2', 'test3')
                                )
                                self.uiRADGRP_test4 = pm.radioButtonGrp(
                                    'uiRADGRP_test4',
                                    numberOfRadioButtons=4,
                                    label='PMRadioButtonGrp4',
                                    labelArray4=('test1', 'test2', 'test3', 'test4')
                                )

                        with self.uiCreateFrame('uiLAY_frameSymbolCheckBoxes', 'Symbol Check Boxes (PMSymbolCheckBox)') as self.uiLAY_frameSymbolCheckBoxes:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(style='none', width=140)
                                    self.uiSYMCHK_test1 = pm.symbolCheckBox(
                                        'uiSYMCHK_test1',
                                        image='polyCube'
                                    )
                                    self.uiSYMCHK_test2 = pm.symbolCheckBox(
                                        'uiSYMCHK_test2',
                                        image='polyCone'
                                    )

                        with self.uiCreateFrame('uiLAY_frameScriptTables', 'Script Tables (PMScriptTable)') as self.uiLAY_frameScriptTables:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(style='none', width=140)
                                    self.uiSCRTBL_test1 = pm.scriptTable(
                                        'uiSCRTBL_test1',
                                        selectionMode=3,
                                        rows=4,
                                        columns=2
                                    )
                                    self.uiSCRTBL_test2 = pm.scriptTable(
                                        'uiSCRTBL_test2',
                                        selectionMode=3,
                                        rows=4,
                                        columns=2
                                    )

                        with self.uiCreateFrame('uiLAY_frameScrollField', 'Scroll Field (PMScrollField)') as self.uiLAY_frameScrollField:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(style='none', width=140)
                                    self.uiSCRFLD_test1 = pm.scrollField(
                                        'uiSCRFLD_test1',
                                        wordWrap=True
                                    )
                                    self.uiSCRFLD_test2 = pm.scrollField(
                                        'uiSCRFLD_test2',
                                        wordWrap=True
                                    )

                        with self.uiCreateFrame('uiLAY_frameShelfTabLayout', 'Shelf Tab Layout (PMShelfTabLayout)') as self.uiLAY_frameShelfTabLayout:
                            with pm.columnLayout(adjustableColumn=True):
                                with pm.shelfTabLayout('uiSHLTAB_test1') as self.uiSHLTAB_test1:
                                    with pm.shelfLayout('test1'):
                                        pass
                                    with pm.shelfLayout('test2'):
                                        pass
                                    with pm.shelfLayout('test3'):
                                        pass
                                with pm.shelfTabLayout('uiSHLTAB_test2') as self.uiSHLTAB_test2:
                                    with pm.shelfLayout('test4'):
                                        pass
                                    with pm.shelfLayout('test5'):
                                        pass
                                    with pm.shelfLayout('test6'):
                                        pass

                        with self.uiCreateFrame('uiLAY_frameTabLayout', 'Tab Layout (PMTabLayout)') as self.uiLAY_frameTabLayout:
                            with pm.columnLayout(adjustableColumn=True):
                                with pm.tabLayout('uiTAB_test1') as self.uiTAB_test1:

                                    with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow1:
                                        pass
                                    with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow2:
                                        pass
                                    with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow3:
                                        pass

                                pm.tabLayout(
                                    self.uiTAB_test1,
                                    edit=True,
                                    tabLabel=((uiLAY_tabRow1, 'test1'), (uiLAY_tabRow2, 'test2'), (uiLAY_tabRow3, 'test3'),)
                                )

                                with pm.tabLayout('uiTAB_test2') as self.uiTAB_test2:

                                    with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow4:
                                        pass
                                    with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow5:
                                        pass
                                    with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow6:
                                        pass

                                pm.tabLayout(
                                    self.uiTAB_test2,
                                    edit=True,
                                    tabLabel=((uiLAY_tabRow4, 'test4'), (uiLAY_tabRow5, 'test5'), (uiLAY_tabRow6, 'test6'),)
                                )

                        with self.uiCreateFrame('uiLAY_frameTextFields', 'Text Fields (PMTextField)') as self.uiLAY_frameTextFields:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(width=140, style='none')
                                    self.uiTXT_test1 = pm.textField('uiTXT_test1')
                                    self.uiTXT_test2 = pm.textField('uiTXT_test2')

                        with self.uiCreateFrame('uiLAY_frameTextFieldButtonGroups', 'Text Field Button Groups (PMTextFieldButtonGrp)') as self.uiLAY_frameTextFieldButtonGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiTXBTGR_test1 = pm.textFieldButtonGrp(
                                    'uiTXBTGR_test1',
                                    label='test1',
                                    buttonLabel='button1'
                                )
                                self.uiTXBTGR_test2 = pm.textFieldButtonGrp(
                                    'uiTXBTGR_test2',
                                    label='test2',
                                    buttonLabel='button2'
                                )

                        with self.uiCreateFrame('uiLAY_frameTextFieldGroups', 'Text Field Groups (PMTextFieldGrp)') as self.uiLAY_frameTextFieldGroups:
                            with pm.columnLayout():
                                pm.separator(style='none', height=2)
                                self.uiTXTGRP_test1 = pm.textFieldGrp(
                                    'uiTXTGRP_test1',
                                    label='test1'
                                )
                                self.uiTXTGRP_test2 = pm.textFieldGrp(
                                    'uiTXTGRP_test2',
                                    label='test2'
                                )

                        with self.uiCreateFrame('uiLAY_frameTextScrollLists', 'Text Scroll Lists (PMTextScrollList)') as self.uiLAY_frameTextScrollLists:
                            with pm.columnLayout():
                                with pm.rowLayout(numberOfColumns=3):
                                    pm.separator(style='none', width=140)
                                    self.uiTXTLST_test1 = pm.textScrollList(
                                        'uiTXTLST_test1',
                                        allowMultiSelection=True,
                                        append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten')
                                    )
                                    self.uiTXTLST_test2 = pm.textScrollList(
                                        'uiTXTLST_test2',
                                        allowMultiSelection=True,
                                        append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten')
                                    )

                self.uiBTN_savePrefs = pm.button(
                    label='Save Prefs',
                    height=MAIN_BUTTONS_HEIGHT,
                    command=self.onSavePrefsClicked
                )

                self.uiBTN_loadPrefs = pm.button(
                    label='Load Prefs',
                    height=MAIN_BUTTONS_HEIGHT,
                    command=self.onLoadPrefsClicked
                )

                self.uiBTN_resetPrefs = pm.button(
                    label='Reset Prefs',
                    height=MAIN_BUTTONS_HEIGHT,
                    command=self.onResetPrefsClicked
                )

                uiLAY_mainForm.attachForm(self.uiLAY_mainScroll, 'top', 2)
                uiLAY_mainForm.attachForm(self.uiLAY_mainScroll, 'left', 2)
                uiLAY_mainForm.attachForm(self.uiLAY_mainScroll, 'right', 2)
                uiLAY_mainForm.attachControl(self.uiLAY_mainScroll, 'bottom', 2, self.uiBTN_savePrefs)

                uiLAY_mainForm.attachNone(self.uiBTN_savePrefs, 'top')
                uiLAY_mainForm.attachForm(self.uiBTN_savePrefs, 'left', 2)
                uiLAY_mainForm.attachPosition(self.uiBTN_savePrefs, 'right', 2, 33)
                uiLAY_mainForm.attachForm(self.uiBTN_savePrefs, 'bottom', 2)

                uiLAY_mainForm.attachNone(self.uiBTN_loadPrefs, 'top')
                uiLAY_mainForm.attachPosition(self.uiBTN_loadPrefs, 'left', 2, 33)
                uiLAY_mainForm.attachPosition(self.uiBTN_loadPrefs, 'right', 2, 66)
                uiLAY_mainForm.attachForm(self.uiBTN_loadPrefs, 'bottom', 2)

                uiLAY_mainForm.attachNone(self.uiBTN_resetPrefs, 'top')
                uiLAY_mainForm.attachPosition(self.uiBTN_resetPrefs, 'left', 2, 66)
                uiLAY_mainForm.attachForm(self.uiBTN_resetPrefs, 'right', 2)
                uiLAY_mainForm.attachForm(self.uiBTN_resetPrefs, 'bottom', 2)

        self.window.setTitle(self.window.__class__)
예제 #43
0
    def create(self):
        # Create default render globals node if needed.
        createGlobalNodes()

        parentForm = pm.setParent(query=True)
        pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)

        columnWidth = 400

        with pm.scrollLayout("outputScrollLayout", horizontalScrollBarThickness=0):
            with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth):
                with pm.frameLayout(label="AOVs", collapsable=True, collapse=False):
                    with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(ui=pm.checkBoxGrp(label="Diffuse"), attrName="diffuseAOV")
                        self._addControl(ui=pm.checkBoxGrp(label="Glossy"), attrName="glossyAOV")
                        self._addControl(ui=pm.checkBoxGrp(label="Emission"), attrName="emissionAOV")

                        self._addControl(ui=pm.checkBoxGrp(label="Direct Diffuse"), attrName="directDiffuseAOV")
                        self._addControl(ui=pm.checkBoxGrp(label="Indirect Diffuse"), attrName="indirectDiffuseAOV")

                        self._addControl(ui=pm.checkBoxGrp(label="Direct Glossy"), attrName="directGlossyAOV")
                        self._addControl(ui=pm.checkBoxGrp(label="Indirect Glossy"), attrName="indirectGlossyAOV")

                        self._addControl(ui=pm.checkBoxGrp(label="Albedo"), attrName="albedoAOV")
                        self._addControl(ui=pm.checkBoxGrp(label="Normal"), attrName="normalAOV")

                        self._addControl(ui=pm.checkBoxGrp(label="UV"), attrName="uvAOV")
                        self._addControl(ui=pm.checkBoxGrp(label="Depth"), attrName="depthAOV")

                        self._addControl(ui=pm.checkBoxGrp(label="NPR Shading"), attrName="nprShadingAOV")
                        self._addControl(ui=pm.checkBoxGrp(label="NPR Contours"), attrName="nprContourAOV")

                with pm.frameLayout(label="Denoiser", collapsable=True, collapse=True):
                    with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.attrEnumOptionMenuGrp(
                                label="Denoiser",
                                enumeratedItem=self._getAttributeMenuItems("denoiser")),
                            attrName="denoiser")

                        self._addControl(
                            ui=pm.checkBoxGrp(
                                label="Skip Already Denoised"),
                            attrName="skipDenoised")

                        self._addControl(
                            ui=pm.checkBoxGrp(
                                label="Random Pixel Order"),
                            attrName="randomPixelOrder")

                        enablePrefilter = mc.getAttr(
                            "appleseedRenderGlobals.prefilterSpikes")
                        self._addControl(
                            ui=pm.checkBoxGrp(
                                label="Prefilter Spikes",
                                changeCommand=self.__prefilterChanged),
                            attrName="prefilterSpikes")
                        self._addControl(
                            ui=pm.floatFieldGrp(
                                label="Spike Thereshold", numberOfFields=1, enable=enablePrefilter),
                            attrName="spikeThreshold")

                        self._addControl(
                            ui=pm.floatFieldGrp(
                                label="Patch Distance", numberOfFields=1),
                            attrName="patchDistance")
                        self._addControl(
                            ui=pm.intFieldGrp(
                                label="Denoise Scales", numberOfFields=1),
                            attrName="denoiseScales")

                with pm.frameLayout(label="Render Stamp", collapsable=True, collapse=True):
                    with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(ui=pm.checkBoxGrp(label="Enable"), attrName="renderStamp")
                        self._addControl(
                            ui=pm.textFieldGrp(
                                label='Render Stamp'),
                            attrName="renderStampString")

                with pm.frameLayout(label="Logging", collapsable=True, collapse=True):
                    with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth):
                        self._addControl(
                            ui=pm.attrEnumOptionMenuGrp(
                                label="Log Level",
                                enumeratedItem=self._getAttributeMenuItems("logLevel")),
                            attrName="logLevel")

                        self._addControl(
                            ui=pm.textFieldButtonGrp(
                                label='Log Filename',
                                buttonLabel='...',
                                buttonCommand=self.__chooseLogFilename),
                            attrName="logFilename")

        pm.setUITemplate("renderGlobalsTemplate", popTemplate=True)
        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(
            parentForm,
            edit=True,
            attachForm=[
                ("outputScrollLayout", "top", 0),
                ("outputScrollLayout", "bottom", 0),
                ("outputScrollLayout", "left", 0),
                ("outputScrollLayout", "right", 0)])

        logger.debug("Created appleseed render global output tab")

        # Update the newly created tab.
        self.update()
예제 #44
0
    def ui(self):
        frameLayOpt  = dict( cll=True, bs='etchedIn', mw=3, mh=3 )
        rowLayOpt    = dict( nc=2 )
        textLabelOpt = dict( align='right', width=250)

        #with pm.frameLayout(lv=False, bv=False,mw=3, mh=3):
        with ui.stackLayout(adj=1, mw=3, mh=3):
            with pm.tabLayout( scr=True, cr=True ) as self.tabLay:
                # Arnold --------------------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3):
                    with pm.columnLayout(adj=1):
                        '''
                        with pm.tabLayout( tv=False ):
                            with pm.columnLayout(adj=1):
                                pm.text(l="Solid Angle Arnold", h= 32, en=False)
                        pm.separator( h=6, style='none')
                        '''
                        with pm.frameLayout(lv=False, bv=True, bs='etchedIn', mw=3, mh=3):
                            with pm.columnLayout(adj=1):
                                pm.checkBoxGrp( l='Arnold options : ', ncb=1, vr=True,
                                    l1='Set opaque (Shape node)', v1=self.setAiOpaque.get(), cc1=self.setAiOpaque.set,
                                    #l2='Assign To Object',  v2=self.assignToObject.get(), cc2=self.assignToObject.set,
                                    #l3='self.boolAttr3', v3=self.boolAttr3.get(), cc3=self.boolAttr3.set 
                                    )                                    
                        pm.separator( h=6, style='none')

                        #with pm.frameLayout( l=u'Maya Software → Arnold', **frameLayOpt):
                        with pm.frameLayout( l=u'Maya Software → Arnold', cl=self.collapseFrames.get()[0], cc=pm.Callback( self.frameColCmd, 0, 1 ), ec=pm.Callback( self.frameColCmd, 0, 0 ), **frameLayOpt):
                            with pm.columnLayout(adj=1):
                                with pm.rowLayout( **rowLayOpt ):
                                    pm.text(l=u'Lambert, Blinn, Phong, PhongE  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert', c=pm.Callback( self.mayaShader_to_aiStandard ) )                       
                        
                        #with pm.frameLayout( l=u'Mentalray → Arnold', **frameLayOpt):
                        with pm.frameLayout( l=u'Mentalray → Arnold', cl=self.collapseFrames.get()[1], cc=pm.Callback( self.frameColCmd, 1, 1 ), ec=pm.Callback( self.frameColCmd, 1, 0 ), **frameLayOpt):
                            with pm.columnLayout(adj=1):
                                with pm.rowLayout( en=False, **rowLayOpt ):
                                    pm.text(l=u'mia_material_x  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert')
                                
                                with pm.rowLayout( en=False, **rowLayOpt ):
                                    pm.text(l=u'mia_car_paint_phen_x  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert')
                        #with pm.frameLayout( l=u'Vray → Arnold', **frameLayOpt):
                        with pm.frameLayout( l=u'Vray → Arnold', cl=self.collapseFrames.get()[2], cc=pm.Callback( self.frameColCmd, 2, 1 ), ec=pm.Callback( self.frameColCmd, 2, 0 ), **frameLayOpt):
                            with pm.columnLayout(adj=1):
                                with pm.rowLayout( **rowLayOpt ):
                                    pm.text(l=u'VRayMtl  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert', c=pm.Callback( self.VRayMtl_to_aiStandard ) )

                # Vray --------------------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3, en=False):
                    with pm.columnLayout(adj=True):
                        pm.button()
                
                # Mentalray ---------------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3, en=False):
                    with pm.columnLayout(adj=True):
                        pm.button()
                
                # Maya Software -----------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3, en=False):
                    with pm.columnLayout(adj=True):
                        pm.button()
            with pm.frameLayout( l=u'Advanced Options', cl=self.collapseFrames.get()[3], cc=pm.Callback( self.frameColCmd, 3, 1 ), ec=pm.Callback( self.frameColCmd, 3, 0 ), **frameLayOpt):
                with pm.columnLayout(adj=True):
                    pm.radioButtonGrp( l='Select : ', nrb=2, vr=True, cw4=(140,30,30,30),
                        select=self.selectOpt.get(), 
                        l1='Selected shaders only',     on1=pm.Callback( self.selectOpt.set, 1),
                        l2='All Shaders in this scene', on2=pm.Callback( self.selectOpt.set, 2),
                        #l3='3', on3=pm.Callback( self.selectOpt.set, 3),
                        )
                    pm.separator( h=8, style='in')
                    pm.checkBoxGrp( l='Options : ', numberOfCheckBoxes=4, vertical=True,
                        l1='Delete old shader',             v1=self.deleteOldShader.get(),  cc1=self.deleteOldShader.set,
                        l2='Assign to object',              v2=self.assignToObject.get(),   cc2=self.assignToObject.set,
                        l3='Add subfix',                    v3=self.addSubfix.get(),        cc3=self.addSubfix.set,
                        l4='Reconnect Hardware Texture',    v4=self.reconnectHwTx.get(),    cc4=self.reconnectHwTx.set,
                        
                    )
                    pm.checkBoxGrp( l='', numberOfCheckBoxes=1, vertical=True,                        
                        l1='Display process (slow)',   v1=self.processDisplay.get(),  cc1=self.processDisplay.set,
                        #l2='Assign to object',  v2=self.assignToObject.get(),  cc2=self.assignToObject.set,
                        #l3='Add subfix',        v3=self.addSubfix.get(),       cc3=self.addSubfix.set,
                        #l4='Display process (slow)',   v4=self.processDisplay.get(),  cc4=self.processDisplay.set,
                    )
        #
        # 탭 조정
        #
        self.tabLay.setTabLabel( [
            ( self.tabLay.getChildren()[0], 'Arnold'),
            ( self.tabLay.getChildren()[1], 'VRay'),
            ( self.tabLay.getChildren()[2], 'Mentalray'),
            ( self.tabLay.getChildren()[3], 'Maya Software'),
            ] )        
        self.tabLay.changeCommand( lambda: self.selectedTab.set( self.tabLay.getSelectTabIndex() ) )
        try:
            self.tabLay.setSelectTabIndex( self.selectedTab.get() )
        except:
            self.selectedTab.set(1)
            self.tabLay.setSelectTabIndex( self.selectedTab.get() )
예제 #45
0
파일: main.py 프로젝트: oba315/cartoonblur
    with pm.columnLayout( adjustableColumn=True, rowSpacing=5):
        
        pm.separator(height=20, style ="double")

        pm.button (label = "make vertex color set", c ='makeVtxColorSet( pm.PyNode( source.getText() ) )')


        pm.separator(height=20, style ="double")

        #?p?????[?^?????A???C???????????s
        pm.text( label='Setting' )
        source = pm.textFieldGrp( label='targetObject', text="pCylinder1" )
        times = pm.intFieldGrp( numberOfFields = 2, label='start-end Time',
                                value1 = 0, value2 = 10)
        #pm.radioCollection()
        useVertexGrp = pm.checkBoxGrp( numberOfCheckBoxes =1, label='using vertex color', value1=0)
        extends = pm.floatSliderGrp( label='extend', field=True, \
                    minValue=0.0, maxValue=10.0, fieldMinValue=0.0,\
                    fieldMaxValue=100.0, value=1.0)
        pm.button (
            label = "start",
            c = lambda *args: cartoonBlur.cartoonBlur(
                    source.getText(),
                    times.getValue()[0],
                    times.getValue()[1],
                    extends.getValue(),
                    useVertexGrp.getValueArray4()[0]
                    )
        )

pm.showWindow( CBwin )
예제 #46
0
    def OpenMayaCommonGlobalsCreateTab(self):
        log.debug("OpenMayaCommonGlobalsCreateTab()")
        scLo = "scrollLayout"
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        if self.rendererTabUiDict.has_key('common'):
            self.rendererTabUiDict.pop('common')
        uiDict = {}
        self.rendererTabUiDict['common'] = uiDict
        clo = "clo"

        with pm.frameLayout(clo,
                            labelVisible=False,
                            collapsable=False,
                            mw=8,
                            mh=5,
                            borderVisible=False):
            with pm.columnLayout(adj=True):
                uiDict['imgpath'] = pm.text(label="Path:",
                                            align="left",
                                            font="smallBoldLabelFont")
                uiDict['imgname'] = pm.text(label="File Name:",
                                            align="left",
                                            font="smallBoldLabelFont")
                uiDict['imgsize'] = pm.text(label="Image Size:",
                                            align="left",
                                            font="smallBoldLabelFont")

        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0) as sl:
            print "Scroll layout", sl
            with pm.columnLayout("commonTabColumn",
                                 adjustableColumn=True,
                                 width=400) as ctc:
                print "common", ctc
                with pm.frameLayout(label="File Output",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        pm.textFieldGrp(label="File Name Prefix:")

                        pm.attrEnumOptionMenuGrp(
                            "imageMenuMayaSW",
                            label="Image Format:",
                            attribute=self.renderNode.imageFormat)

                        uiDict['imageNumbering'] = pm.optionMenuGrp(
                            label="Frame/Animation ext:",
                            changeCommand=self.setFrameNumbering)
                        for value in ["name.ext", "name.#.ext"]:
                            pm.menuItem(value)
                        if self.defaultGlobals.animation.get():
                            uiDict['imageNumbering'].setSelect(2)

                        self.addRenderDefaultGlobalsUIElement(
                            attName='extensionPadding',
                            uiType='int',
                            displayName='Frame Padding:',
                            uiDict=uiDict)

                with pm.frameLayout(label="Frame Range",
                                    collapsable=True,
                                    collapse=False) as frameRangeLayout:
                    uiDict['frameRangeLayout'] = frameRangeLayout
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        self.addRenderDefaultGlobalsUIElement(
                            attName='startFrame',
                            uiType='float',
                            displayName='Start Frame:',
                            uiDict=uiDict)
                        self.addRenderDefaultGlobalsUIElement(
                            attName='endFrame',
                            uiType='float',
                            displayName='End Frame:',
                            uiDict=uiDict)
                        self.addRenderDefaultGlobalsUIElement(
                            attName='byFrame',
                            uiType='float',
                            displayName='By Frame:',
                            uiDict=uiDict)

                with pm.frameLayout(label="Renderable Cameras",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        for cam in pm.ls(type="camera"):
                            pm.checkBoxGrp(label=cam.name(),
                                           value1=cam.renderable.get(),
                                           cc=pm.Callback(
                                               self.switchCamRenderable, cam))

                with pm.frameLayout(label="Image Size",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        uiDict['imageSizePresets'] = pm.optionMenuGrp(
                            label="Presets:", changeCommand=self.setImageSize)
                        for imgFormat in self.imageFormatData:
                            pm.menuItem(imgFormat[0])
                        #uiDict['imageSizePresets'].setSelect(12)

                        self.addRenderDefaultResGlobalsUIElement(
                            attName='aspectLock',
                            uiType='bool',
                            displayName='Maintain aspect ratio',
                            uiDict=uiDict)
                        self.addRenderDefaultResGlobalsUIElement(
                            attName='width',
                            uiType='int',
                            displayName='Width:',
                            uiDict=uiDict,
                            callback=pm.Callback(self.updateImageSize,
                                                 "width"))
                        self.addRenderDefaultResGlobalsUIElement(
                            attName='height',
                            uiType='int',
                            displayName='Height:',
                            uiDict=uiDict,
                            callback=pm.Callback(self.updateImageSize,
                                                 "height"))
                        self.addRenderDefaultResGlobalsUIElement(
                            attName='deviceAspectRatio',
                            uiType='float',
                            displayName='Device Aspect:',
                            uiDict=uiDict,
                            callback=pm.Callback(self.updateImageSize,
                                                 "devAsp"))
                        #self.addRenderDefaultResGlobalsUIElement(attName='pixelAspect', uiType='float', displayName='Pixel Aspect:', uiDict=uiDict, callback=self.updateImageSize)

                with pm.frameLayout(label="Render Scripts",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        self.addRenderDefaultGlobalsUIElement(
                            attName='preMel',
                            uiType='string',
                            displayName='Pre Render Mel:',
                            uiDict=uiDict)
                        self.addRenderDefaultGlobalsUIElement(
                            attName='postMel',
                            uiType='string',
                            displayName='Post Render Mel:',
                            uiDict=uiDict)
                        self.addRenderDefaultGlobalsUIElement(
                            attName='preRenderLayerMel',
                            uiType='string',
                            displayName='Pre Layer Mel:',
                            uiDict=uiDict)
                        self.addRenderDefaultGlobalsUIElement(
                            attName='postRenderLayerMel',
                            uiType='string',
                            displayName='Post Layer Mel:',
                            uiDict=uiDict)
                        self.addRenderDefaultGlobalsUIElement(
                            attName='preRenderMel',
                            uiType='string',
                            displayName='Pre Frame Mel:',
                            uiDict=uiDict)
                        self.addRenderDefaultGlobalsUIElement(
                            attName='postRenderMel',
                            uiType='string',
                            displayName='Post Frame Mel:',
                            uiDict=uiDict)

        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(parentForm,
                      edit=True,
                      attachForm=[(clo, "right", 0), (clo, "left", 0),
                                  (clo, "top", 0), (scLo, "bottom", 0),
                                  (scLo, "left", 0), (scLo, "right", 0)],
                      attachControl=[(scLo, "top", 0, clo)])
        #self.setImageSize("HD_540") # set default
        self.OpenMayaCommonGlobalsUpdateTab()
예제 #47
0
    def ui(self):
        marge = 2
        self.win = None
        if pmc.window(self.__class__.__name__, q=True, exists=True):
            pmc.deleteUI(self.__class__.__name__)
        
        with pmc.window(self.__class__.__name__, title=self.ui_name, menuBar=True) as self.win:
            #===================================================================
            # Menus
            #===================================================================
            pmc.menu(label="File", tearOff=False)
            pmc.menuItem(label="Open", c=self.select_py_ui)
            pmc.menuItem(label="Refresh", c=self.read_py)
            
            self.recents_menu_ui = pmc.menuItem(subMenu=True, label="Recents")
            pmc.setParent("..", menu=True)
            
            pmc.setParent("..", menu=True)
            
            pmc.menu(label="Options", tearOff=False)
            pmc.menuItem(label="Insert ScriptEditor", c=self.insert_script_editor_ui)
            self.reset_menu_ui = pmc.menuItem(label="Run Reset History",
                                              checkBox=self.reset,
                                              c=self.set_reset_his_ui)
            if self.maya_version >= 2011:
                self.dock_ui_item = pmc.menuItem(label="In Dock",
                                                 checkBox=self.dock[0],
                                                 c=self.set_in_dock_ui)
            pmc.menuItem(divider=True)
            pmc.menuItem(subMenu=True, label="Recents")
            self.max_recents_ui = pmc.menuItem(l="Set length (%s)" % self.max_recents, c=self.set_recents_ui)
            pmc.menuItem(l="Reset", c=self.reset_recents_ui)
            pmc.setParent("..", menu=True)
            
            pmc.menuItem(subMenu=True, label="Settings")
            pmc.menuItem(l="Reset", c=self.reset_options_ui)
            pmc.menuItem(l="Save", c=self.save_options)
            pmc.setParent("..", menu=True)
            
            pmc.menu(label='Help', helpMenu=True)
            pmc.menuItem(label='About', c=self.help_ui)
            
            #===================================================================
            # Layout and Contents
            #===================================================================
            main_form = pmc.formLayout(nd=100)
            self.run_but = pmc.button(l="Run", c=self.run_cmd_ui)
            
            self.main_layout = pmc.paneLayout(configuration="top3")
            
            form = pmc.formLayout(nd=100)
            self.cmd_ui = pmc.scrollField(ed=1, ww=0)
            pmc.setParent("..")
            
            form_infos = pmc.formLayout(nd=100)
            self.infos_ui = pmc.textScrollList(ams=0, fn="fixedWidthFont",
                                               sc=self.doc_cmd_ui,
                                               dcc=self.insert_cmd_ui)
            
            infos_layout = pmc.frameLayout(label="Filter / Sort / Doc", collapse=True, collapsable=True)
            pmc.columnLayout(adj=1)
            pmc.rowLayout(numberOfColumns=2, adj=1)
            self.filter_ui = pmc.textFieldGrp(label="Filter",
                                              text="",
                                              cw=[1, 40], adj=2,
                                              fcc=True,
                                              cc=self.order_by_ui)
            
            self.filter_test_ui = pmc.optionMenuGrp(cc=self.set_filter_test_ui)
            pmc.menuItem(label="in")
            pmc.menuItem(label="startswith")
            pmc.menuItem(label="endswith")
            
            pmc.setParent("..")
            
            self.order_ui = pmc.checkBoxGrp(numberOfCheckBoxes=2,
                                            label="Sort",
                                            label1="Alphabetical",
                                            label2="Show doc",
                                            cw=[1, 40],
                                            cc1=self.order_by_ui,
                                            cc2=self.set_show_doc_ui,
                                            )
            
            pmc.setParent("..")
            pmc.setParent("..")
            pmc.setParent("..")
            
            self.form_scriptEditor = pmc.formLayout(nd=100)
#            self.form_scriptEditor = pmc.paneLayout(configuration="single")
            pmc.setParent("..")
            
            pmc.setParent("..")
            
            #===================================================================
            # Layout settings
            #===================================================================
            pmc.formLayout(main_form, edit=True,
                             attachNone=[
                                         (self.run_but, "bottom")
                                         ],
                             attachForm=[
                                         (self.run_but, "top", marge),
                                         (self.run_but, "left", marge),
                                         (self.run_but, "right", marge),
                                         (self.main_layout, "top", marge),
                                         (self.main_layout, "left", marge),
                                         (self.main_layout, "right", marge),
                                         (self.main_layout, "bottom", marge),
                                         ],
                             attachControl=[
                                            (self.main_layout, "top", marge, self.run_but),
                                            ]
                            )
            pmc.formLayout(form, edit=True,
                             attachForm=[
                                         (self.cmd_ui, "top", marge),
                                         (self.cmd_ui, "left", marge),
                                         (self.cmd_ui, "right", marge),
                                         (self.cmd_ui, "bottom", marge),
                                         ],
                             )
            
            pmc.formLayout(form_infos, edit=True,
                             attachForm=[
                                         (self.infos_ui, "top", marge),
                                         (self.infos_ui, "left", marge),
                                         (self.infos_ui, "right", marge),
                                         (infos_layout, "left", marge),
                                         (infos_layout, "right", marge),
                                         (infos_layout, "bottom", marge),
                                         ],
                            attachControl=[
                                           (self.infos_ui, "bottom", marge, infos_layout)
                                           ]
                             )
        
        self.insert_script_editor_ui()
        
        self.dock_it()
예제 #48
0
    def gui(self):
        if pm.window('transferAndOffsetUVsGUI', exists=True):
            pm.deleteUI('transferAndOffsetUVsGUI', window=True)

        window = pm.window('transferAndOffsetUVsGUI',
                           title='transferAndOffsetUVs v%s' % __ver__,
                           widthHeight=(200, 55))
        baseLayout = pm.autoLayout()
        with baseLayout:
            optLayout = pm.autoLayout(orientation='horizontal')
            with optLayout:
                self.uvField = pm.intFieldGrp(l='UV',
                                              nf=2,
                                              cw3=[20, 25, 25],
                                              v1=6,
                                              v2=6)

                self.space = pm.floatFieldGrp(l='space',
                                              cw2=(30, 50),
                                              pre=3,
                                              v1=0.01)

                onc = partial(self.isOverlapEnabled, 1)
                ofc = partial(self.isOverlapEnabled, 0)
                self.useOverlap = pm.checkBoxGrp(l='overlap',
                                                 v1=0,
                                                 cw2=(40, 50),
                                                 onCommand1=onc,
                                                 offCommand1=ofc)
                self.shellCount = pm.intFieldGrp(l='max shell count',
                                                 cw2=(80, 35),
                                                 en=0,
                                                 v1=4)

            modeLayout = pm.autoLayout(orientation='horizontal')
            with modeLayout:
                self.mode = pm.radioButtonGrp(la2=['U', 'V'],
                                              nrb=2,
                                              cw3=[30, 25, 25],
                                              l='mode',
                                              sl=1)

                self.dirc = pm.radioButtonGrp(la2=['+', '-'],
                                              nrb=2,
                                              cw3=[45, 25, 25],
                                              l='direction',
                                              sl=1)
                self.adjustCB = pm.checkBoxGrp(l='Adjust', v1=0, cw2=(35, 20))
                self.fitCB = pm.checkBoxGrp(l='Fit', v1=0, cw2=(20, 20))
                self.shuffleCB = pm.checkBoxGrp(l='Shuffle',
                                                v1=0,
                                                cw2=(40, 20))

            modeLayout.attachNone(self.adjustCB, 'right')
            modeLayout.attachNone(self.fitCB, 'right')
            modeLayout.attachNone(self.shuffleCB, 'right')

            with pm.autoLayout(orientation='horizontal'):

                cmd = partial(self.calc)
                pm.button('calc', c=cmd)
                cmd = partial(self.doit)
                pm.button('run', c=cmd)

        optLayout.attachNone(self.uvField, 'right')
        optLayout.attachNone(self.space, 'right')
        optLayout.attachNone(self.useOverlap, 'right')
        optLayout.attachNone(self.shellCount, 'right')
        baseLayout.attachNone(optLayout, 'bottom')
        baseLayout.attachNone(modeLayout, 'bottom')

        pm.showWindow(window)
        window.setWidthHeight([380, 100])
예제 #49
0
def createArnoldTextureSettings():
    """The patched version of the original file
    """
    import pymel.core as pm
    import maya.cmds as cmds
    import pymel.versions as versions
    from mtoa.ui.globals import settings

    pm.setUITemplate('attributeEditorTemplate', pushTemplate=True)
    pm.columnLayout(adjustableColumn=True)

    pm.attrControlGrp('autotx',
                      cc=settings.updateAutoTxSettings,
                      label="Auto-convert Textures to TX (Disabled in Anima)",
                      attribute='defaultArnoldRenderOptions.autotx',
                      enable=False)

    pm.attrControlGrp(
        'use_existing_tiled_textures',
        label="Use Existing TX Textures",
        attribute='defaultArnoldRenderOptions.use_existing_tiled_textures')

    # disable autotx
    pm.setAttr('defaultArnoldRenderOptions.autotx', 0)
    settings.updateAutoTxSettings()
    cmds.separator()

    # don't create texture_automip for 2017 as autoTx is ON by default
    maya_version = versions.shortName()
    if int(float(maya_version)) < 2017:
        pm.attrControlGrp(
            'texture_automip',
            label="Auto-mipmap",
            attribute='defaultArnoldRenderOptions.textureAutomip')

    pm.attrControlGrp(
        'texture_accept_unmipped',
        label="Accept Unmipped",
        attribute='defaultArnoldRenderOptions.textureAcceptUnmipped')

    cmds.separator()

    pm.checkBoxGrp('ts_autotile',
                   cc=settings.updateAutotileSettings,
                   label='',
                   label1='Auto-tile')

    pm.connectControl('ts_autotile',
                      'defaultArnoldRenderOptions.autotile',
                      index=2)

    pm.intSliderGrp('ts_texture_autotile',
                    label="Tile Size",
                    minValue=16,
                    maxValue=64,
                    fieldMinValue=16,
                    fieldMaxValue=1024)

    pm.connectControl('ts_texture_autotile',
                      'defaultArnoldRenderOptions.textureAutotile',
                      index=1)
    pm.connectControl('ts_texture_autotile',
                      'defaultArnoldRenderOptions.textureAutotile',
                      index=2)
    pm.connectControl('ts_texture_autotile',
                      'defaultArnoldRenderOptions.textureAutotile',
                      index=3)
    '''pm.attrControlGrp('texture_autotile',
                        label="Auto-tile Size",
                        attribute='defaultArnoldRenderOptions.textureAutotile')'''

    pm.attrControlGrp(
        'texture_accept_untiled',
        label="Accept Untiled",
        attribute='defaultArnoldRenderOptions.textureAcceptUntiled')

    pm.attrControlGrp(
        'texture_max_memory_MB',
        label="Max Cache Size (MB)",
        attribute='defaultArnoldRenderOptions.textureMaxMemoryMB')

    pm.attrControlGrp(
        'texture_max_open_files',
        label="Max Open Files",
        attribute='defaultArnoldRenderOptions.textureMaxOpenFiles')

    cmds.separator()

    cmds.attrControlGrp(
        'texture_diffuse_blur',
        label="Diffuse Blur",
        attribute='defaultArnoldRenderOptions.textureDiffuseBlur')

    # cmds.attrControlGrp('texture_glossy_blur',
    #                     label="Glossy Blur",
    #                     attribute='defaultArnoldRenderOptions.textureGlossyBlur')

    pm.setParent('..')

    pm.setUITemplate(popTemplate=True)
예제 #50
0
    def AppleseedEnvironmentCreateTab(self):
        log.debug("AppleseedEnvironmentCreateTab()")
        self.createGlobalsNode()
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "AOScrollLayout"
        envDict = {}
        self.rendererTabUiDict['environment'] = envDict
        uiDict = envDict
        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                with pm.frameLayout(label="Environment Lighting", collapsable=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".environmentType")
                        envDict['environmentType'] = pm.attrEnumOptionMenuGrp(label="Environemnt Type", at=self.renderGlobalsNodeName + ".environmentType", ei=self.getEnumList(attr)) 
                        
                with pm.frameLayout(label="Environment Colors", collapsable=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        ui = pm.floatFieldGrp(label="Environemnt Intensity:", value1=1.0, numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".environmentIntensity", index=2)                    
                        envDict['environmentColor'] = pm.attrColorSliderGrp(label="Environment Color", at=self.renderGlobalsNodeName + ".environmentColor")
                        envDict['gradientHorizon'] = pm.attrColorSliderGrp(label="Gradient Horizon", at=self.renderGlobalsNodeName + ".gradientHorizon")
                        envDict['gradientZenit'] = pm.attrColorSliderGrp(label="Gradient Zenit", at=self.renderGlobalsNodeName + ".gradientZenit")
                        envDict['environmentMap'] = pm.attrColorSliderGrp(label="Environment Map", at=self.renderGlobalsNodeName + ".environmentMap")
                        self.addRenderGlobalsUIElement(attName='latlongHoShift', uiType='float', displayName='LatLong Horiz Shift:', uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='latlongVeShift', uiType='float', displayName='LatLong Vertical Shift:', uiDict=uiDict)
#                         envDict['latLongHShift'] = pm.floatFieldGrp(label="LatLong Horiz Shift:", value1=1.0, numberOfFields=1)
#                         pm.connectControl(envDict['latLongHShift'], self.renderGlobalsNodeName + ".latlongHoShift", index=2)
#                         envDict['latLongVShift'] = pm.floatFieldGrp(label="LatLong Vertical Shift:", value1=1.0, numberOfFields=1)
#                         pm.connectControl(envDict['latLongVShift'], self.renderGlobalsNodeName + ".latlongVeShift", index=2)
                    
                with pm.frameLayout(label="Physical Sky", collapsable=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".skyModel")
                        envDict['pskModel'] = pm.attrEnumOptionMenuGrp(label="Sky Model", at=self.renderGlobalsNodeName + ".skyModel", ei=self.getEnumList(attr)) 
                        pm.separator()
                        envDict['pskUsePhySun'] = pm.checkBoxGrp(label="Use Physical Sun:", value1=False, cc=pm.Callback(self.uiCallback, tab="environment"))
                        pm.connectControl(envDict['pskUsePhySun'], self.renderGlobalsNodeName + ".physicalSun", index=2)                    
                        envDict['pskPhySun'] = pm.textFieldGrp(label="Sunobject:", text="", editable=False) 
                        envDict['pskSunExitMulti'] = pm.floatFieldGrp(label="sunExitance Multiplier:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskSunExitMulti'], self.renderGlobalsNodeName + ".sunExitanceMultiplier", index=2)             
                        # pm.connectControl(envDict['pskPhySun'], self.renderGlobalsNodeName + ".physicalSunConnection", index=2)                                                                   
                        pm.separator()
                        envDict['pskGrAlbedo'] = pm.floatFieldGrp(label="Ground Albedo:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskGrAlbedo'], self.renderGlobalsNodeName + ".ground_albedo", index=2)                    
                        envDict['pskGrHShit'] = pm.floatFieldGrp(label="Horizon Shift:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskGrHShit'], self.renderGlobalsNodeName + ".horizon_shift", index=2)                    
                        envDict['pskLumMulti'] = pm.floatFieldGrp(label="Luminance Multiplier:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskLumMulti'], self.renderGlobalsNodeName + ".luminance_multiplier", index=2)                    
                        envDict['pskSatMulti'] = pm.floatFieldGrp(label="Saturation Multiplier:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskSatMulti'], self.renderGlobalsNodeName + ".saturation_multiplier", index=2)                    
                        # envDict['pskSunAzi'] = pm.floatFieldGrp(label="Sun Azimut:", value1=1.0, numberOfFields=1)
                        # pm.connectControl(envDict['pskSunAzi'], self.renderGlobalsNodeName + ".sun_phi", index=2)                    
                        # envDict['pskSunEle'] = pm.floatFieldGrp(label="Sun Elevation:", value1=1.0, numberOfFields=1)
                        # pm.connectControl(envDict['pskSunEle'], self.renderGlobalsNodeName + ".sun_theta", index=2)                    
                        envDict['pskTurb'] = pm.floatFieldGrp(label="Turbidity:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskTurb'], self.renderGlobalsNodeName + ".turbidity", index=2)                    
                        envDict['pskTurbMax'] = pm.floatFieldGrp(label="Turbidity Max:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskTurbMax'], self.renderGlobalsNodeName + ".turbidity_max", index=2)                    
                        envDict['pskTurbMin'] = pm.floatFieldGrp(label="Turbidity Min:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskTurbMin'], self.renderGlobalsNodeName + ".turbidity_min", index=2)
                    
        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
        
        pm.scriptJob(attributeChange=[self.renderGlobalsNode.environmentType, pm.Callback(self.uiCallback, tab="environment")])        
        pm.scriptJob(attributeChange=[self.renderGlobalsNode.skyModel, pm.Callback(self.uiCallback, tab="environment")])   
        pm.scriptJob(attributeChange=[self.renderGlobalsNode.physicalSun, pm.Callback(self.uiCallback, tab="environment")])   
        
        self.updateEnvironment()     
예제 #51
0
    def AppleseedRendererCreateTab(self):
        log.debug("AppleseedRendererCreateTab()")
        self.createGlobalsNode()
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "ScrollLayout"
        if self.rendererTabUiDict.has_key('common'):
            self.rendererTabUiDict.pop('common')        
        uiDict = {}
        self.rendererTabUiDict['common'] = uiDict

        
        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                with pm.frameLayout(label="Pixel Sampler", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        # attr = pm.Attribute(self.renderGlobalsNodeName + ".pixel_renderer")
                        # ui = pm.attrEnumOptionMenuGrp(label="Pixel Sampler", at=self.renderGlobalsNodeName + ".pixel_renderer", ei=self.getEnumList(attr)) 
                        self.addRenderGlobalsUIElement(attName='pixel_renderer', uiType='enum', displayName='Pixel Sampler', default='0', uiDict=uiDict, callback=self.AppleseedRendererUpdateTab)
                        self.addRenderGlobalsUIElement(attName='minSamples', uiType='int', displayName='Min Samples', default=False, uiDict=uiDict)                        
                        self.addRenderGlobalsUIElement(attName='maxSamples', uiType='int', displayName='Max Samples', default=False, uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='maxError', uiType='float', displayName='Max Error', default=False, uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='enable_diagnostics', uiType='bool', displayName="Diagnostic AOV's", default=False, uiDict=uiDict)
                        pm.separator()
                        self.addRenderGlobalsUIElement(attName='frameRendererPasses', uiType='int', displayName='Passes', uiDict=uiDict)
                        

                with pm.frameLayout(label="Filtering", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".filtertype")
                        ui = pm.attrEnumOptionMenuGrp(label="Filter Type", at=self.renderGlobalsNodeName + ".filtertype", ei=self.getEnumList(attr)) 
                        self.addRenderGlobalsUIElement(attName='filtersize', uiType='int', displayName='Filter Size', default=False, uiDict=uiDict)
                        
                with pm.frameLayout(label="Features", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        self.addRenderGlobalsUIElement(attName='doMotionBlur', uiType='bool', displayName='Motion Blur', default=False, uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='doDof', uiType='bool', displayName='Depth Of Field', default=False, uiDict=uiDict)
                    
                with pm.frameLayout(label="Output", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".bitdepth")
                        ui = pm.attrEnumOptionMenuGrp(label="Bit Depth", at=self.renderGlobalsNodeName + ".bitdepth", ei=self.getEnumList(attr)) 
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".colorSpace")
                        ui = pm.attrEnumOptionMenuGrp(label="Color Space", at=self.renderGlobalsNodeName + ".colorSpace", ei=self.getEnumList(attr)) 
                        ui = pm.checkBoxGrp(label="Clamping:", value1=False)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".clamping", index=2)
                    
                with pm.frameLayout(label="Lighting Engine", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        self.addRenderGlobalsUIElement(attName='lightingEngine', uiType='enum', displayName='Lighting Engine', default='0', uiDict=uiDict, callback=self.AppleseedRendererUpdateTab)
                        with pm.frameLayout(label="Lighting Engine Settings", collapsable=True, collapse=False) as uiDict['LE_framelayout']:
                            with pm.columnLayout(self.rendererName + "LEColumnLayout", adjustableColumn=True, width=400) as uiDict['LE_layout']:
                                pass
                            
                with pm.frameLayout(label="Renderer", collapsable=True, collapse=True):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        self.addRenderGlobalsUIElement(attName='threads', uiType='int', displayName='Threads:', uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='rendererVerbosity', uiType='int', displayName='Verbosity:', uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='tilesize', uiType='int', displayName='Tile Size:', uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='texCacheSize', uiType='int', displayName='Tex Cache Size (kb):', uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='assemblySBVH', uiType='bool', displayName='Use SBVH Acc. for mb:', uiDict=uiDict)                        
                    
        pm.setUITemplate("renderGlobalsTemplate", popTemplate=True)                    
        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
        
        # pm.scriptJob(attributeChange=[self.renderGlobalsNode.samplingType, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")])

        # self.updateEnvironment()
        self.AppleseedRendererUpdateTab()
예제 #52
0
파일: rope.py 프로젝트: dayelov/DevPyLib
def rp_surface():
    """..............................................................................................//"""

    ncj = int(pm.intField('NCJ', q=1, v=1))
    # > control joints
    rn = float(pm.intField('NJ', q=1, v=1))
    bz = int(pm.checkBoxGrp('CTJP', q=1, v1=1))
    s = pm.ls(sl=1)
    rp_check(s)
    if pm.objExists(s[0] + "_surface"):
        rp_del()
        rp_cr()

    cj = pm.ls((s[0] + "_ctj_*"),
               typ="joint")
    x = 0.0
    if pm.optionMenuGrp('AXES', q=1, v=1) == "x":
        x = float(1)

    y = 0.0
    if pm.optionMenuGrp('AXES', q=1, v=1) == "y":
        y = float(1)

    z = 0.0
    if pm.optionMenuGrp('AXES', q=1, v=1) == "z":
        z = float(1)

    su = pm.extrude(s[0], upn=0, dl=3, ch=bz, d=(x, y, z), n=(s[0] + "_surface"), et=0, rn=0, po=0)
    pm.pm.cmds.move(((-1) * (x / 2)), ((-1) * (y / 2)), ((-1) * (z / 2)),
                    su[0])
    pm.makeIdentity(su[0], a=1, t=1)
    sj = pm.ls((s[0] + "_tw_*"),
               typ="joint")
    # pivot move
    t = (pm.xform(cj[0], q=1, ws=1, t=1))
    pm.setAttr((su[0] + ".rpx"), (t.x))
    pm.setAttr((su[0] + ".rpy"), (t.y))
    pm.setAttr((su[0] + ".rpz"), (t.z))
    pm.setAttr((su[0] + ".spx"), (t.x))
    pm.setAttr((su[0] + ".spy"), (t.y))
    pm.setAttr((su[0] + ".spz"), (t.z))
    # hairs
    hsys = str(pm.createNode("hairSystem", n=(s[0] + "_position")))
    hsysg = pm.listRelatives(hsys, p=1)
    pm.rename(hsysg[0],
              (s[0] + "_surface_grp_"))
    pm.select(su[0], hsys)
    pm.mel.createHair((len(sj)), 1, 2, 0, 0, 1, 1, 1, 0, 2, 2, 1)
    pm.delete((s[0] + "_surface_grp_"), (s[0] + "_surface_grp_OutputCurves"))
    # joints
    sg = pm.listRelatives((s[0] + "_surface_grp_Follicles"),
                          c=1)
    pm.delete(s[0] + "_tw_hl")
    for i in range(0, (len(sj))):
        pm.parent(sj[i], sg[i])
        pm.makeIdentity(sj[i], a=1, r=1)
        pm.connectAttr((s[0] + "_rig.s"), (sg[i] + ".s"),
                       f=1)

    pm.parent(su[0],
              (s[0] + "_sistem"))
    pm.parent((s[0] + "_surface_grp_Follicles"), (s[0] + "_sistem"))
    # conection scale joints
    if bz == 0:
        if pm.checkBoxGrp('CTJ', q=1, v1=1):
            for i in range(0, (len(cj))):
                pm.disconnectAttr((s[0] + "_" + str((i + 1)) + "_CT.change"), (cj[i] + ".sy"))
                pm.disconnectAttr((s[0] + "_" + str((i + 1)) + "_CT.change"), (cj[i] + ".sz"))

        pm.delete((s[0] + "_sx"), (s[0] + "_s"))

    sx = str(pm.createNode('multiplyDivide', n=(s[0] + "_pow")))
    # pow scale
    pm.setAttr((sx + ".op"),
               2)
    pm.connectAttr((s[0] + "_rig.s"), (sx + ".i2"),
                   f=1)
    pm.setAttr((sx + ".i1x"),
               1)
    pm.setAttr((sx + ".i1y"),
               1)
    pm.setAttr((sx + ".i1z"),
               1)
    pm.connectAttr((sx + ".o"), (s[0] + "_surface_grp_Follicles.s"),
                   f=1)
    # > skin
    fol = pm.ls((s[0] + "_surfaceFollicle*"),
                typ="transform")
    for i in range(0, (len(fol))):
        pm.setAttr((fol[i] + ".it"),
                   0)

    if bz == 0:
        pm.rebuildSurface(su[0], dv=1, du=3, sv=0, su=rn)
        pm.intField('NJ', e=1, v=rn)
        pm.skinCluster(cj, su[0], mi=2, rui=1, dr=2.0, n=(s[0] + "_skin_surface"))

    pm.setAttr((su[0] + ".it"),
               0)
    pm.setAttr((su[0] + ".tmp"),
               1)
    # > end
    pm.select(s[0])
예제 #53
0
def animateExport():
    trans = pm.checkBoxGrp('exportType',q = 1,v1 = 1)
    rotate = pm.checkBoxGrp('exportType',q = 1,v2 = 1)
    custom = pm.checkBoxGrp('exportType',q = 1,v3 = 1)
    path = pm.textFieldGrp('exportPath',q = 1,tx = 1)
    animExport(trans,rotate,custom,path)
예제 #54
0
    def child_tab_export(self):
        layout = pm.formLayout(numberOfDivisions=100)
        file_export_list_frame = pm.frameLayout(label=u"数据文件列表:",
                                                mw=10,
                                                mh=10,
                                                bgs=True)
        pm.textFieldButtonGrp('template_file_setter',
                              label=u"模板文件",
                              bl=u"指定",
                              adj=2,
                              cw3=[52, 100, 60],
                              cat=[(2, "left", 5), (3, "left", 5)],
                              text=self.template_file,
                              bc=lambda *args: self._set_template_file())
        pm.textScrollList('export_list_input', ams=True)
        pm.popupMenu()
        pm.menuItem(label=u"移除选择",
                    c=lambda *args: self._remove_selected_item())
        pm.menuItem(label=u"移除所有", c=lambda *args: self._remove_all_item())
        pm.setParent("..")

        export_options_frame = pm.frameLayout(label=u"输出选项:",
                                              mw=10,
                                              mh=10,
                                              bgs=True)
        pm.textFieldButtonGrp('output_path_setter',
                              label=u"存放路径",
                              bl=u"设置",
                              adj=2,
                              cw3=[52, 100, 60],
                              cat=[(2, "left", 5), (3, "left", 5)],
                              text=self.output_path,
                              bc=lambda *args: self._set_output_location())
        pm.rowColumnLayout(nr=1)
        pm.checkBoxGrp('cleanFileChecked',
                       label=u"清理文件",
                       value1=self.clean_file,
                       cw2=[52, 30],
                       cat=[(2, "left", 5)],
                       cc=lambda *args: self._set_clean_file_check())
        pm.checkBoxGrp('exportAtomFileChecked',
                       label=u"输出Atom动画数据",
                       value1=self.export_atom,
                       cw2=[120, 30],
                       cat=[(2, "left", 5)],
                       cc=lambda *args: self._set_export_atom_check())
        pm.setParent("..")
        pm.setParent("..")
        execute_button = pm.button(label=u"输出!",
                                   c=lambda *args: self.start_export_work())
        pm.formLayout(
            layout,
            edit=True,
            attachForm=[(file_export_list_frame, 'top', 10),
                        (file_export_list_frame, 'left', 10),
                        (file_export_list_frame, 'right', 10),
                        (export_options_frame, 'left', 10),
                        (export_options_frame, 'right', 10),
                        (execute_button, 'left', 10),
                        (execute_button, 'right', 10),
                        (execute_button, 'bottom', 10)],
            attachControl=[
                # (file_export_list_frame, 'top', 5, project_store_path_frame),
                (file_export_list_frame, 'bottom', 5, export_options_frame),
                (export_options_frame, 'bottom', 5, execute_button)
            ],
            # attachPosition=[(b1, 'right', 5, 75),
            #                                 (column, 'left', 0, 75)],
            #                 attachNone=(b2, 'top'))
        )
        pm.setParent("..")
        return layout
 def __init__(self, inst):
     self.initializeFrame = pm.frameLayout( parent = inst.simpleSetup_layout, w =244, label='Initialize', borderStyle='out', cll = True, cl = True )
     self.nameRigTFBG = pm.textFieldButtonGrp( parent = self.initializeFrame, cw = ( [ 1, 110 ],  [ 2, 210 ], [ 3, 40 ] ), cal = ( 2, 'center'), label='Rig Name   ', pht='              >>> Name Your Rig <<<', buttonLabel='Load', cc = self.rigName_load, bc = self.rigName_load )
     self.displayVisChkBoxGRP = pm.checkBoxGrp( parent = self.initializeFrame, label = 'Display Visibility   ', cw = ( [ 1, 110 ], [ 2, 80 ], [ 3, 80 ], [ 4, 80 ]  ), numberOfCheckBoxes = 3, labelArray3 = ['Model', 'Skeleton', 'Control'], v1 = 1, v2 = 1, v3 =  1 )
     self.displayTypeChkBoxGRP = pm.checkBoxGrp( parent = self.initializeFrame, label = 'Display Type   ', cw = ( [ 1, 110 ], [ 2, 80 ], [ 3, 80 ], [ 4, 80 ]  ), numberOfCheckBoxes = 3, labelArray3 = ['Model', 'Skeleton', 'Control'], v1 = 1, v2 = 1, v3 =  1 )
     self.additionalAttrsChkBoxGRP = pm.checkBoxGrp( parent = self.initializeFrame, label = 'Additional Attributes   ', cw = ( [ 1, 110 ], [ 2, 80 ], [ 3, 80 ], [ 4, 80 ]  ), numberOfCheckBoxes = 3, labelArray3 = ['Speed', 'Pose', 'Costume'] )
예제 #56
0
 def _set_clean_file_check(self):
     self.clean_file = pm.checkBoxGrp('cleanFileChecked',
                                      q=True,
                                      value1=True)
예제 #57
0
    def createUi(self, node=None):
        log.debug("createUi for node %s" % str(node))
        currentSegment = ""
        layoutList = []
        for att in self.attList:
            if att.kategory != None and currentSegment != att.kategory:
                log.debug("kategory %s != %s" % (currentSegment, att.kategory))
                katlist = att.kategory.split("|")
                diff = len(layoutList) - len(katlist)
                # neue liste ist kuerzer als alte, also solange dicht machen bis die laenge gleich ist
                log.debug("check diff %d" % diff)
                while diff > 0:
                    layoutList.pop()
                    pm.setParent("..")
                    pm.setParent("..")
                    diff = len(layoutList) - len(katlist)
                    log.debug("new diff %d" % diff)

                # alte liste ist nun nicht laenger als neue liste
                # durchgehen und alles dichtmachen was nicht gleich ist
                for i in range(len(layoutList)):
                    kat = katlist[i]
                    ckat = layoutList[i]
                    # wenn werte ungelich dann alles was noch kommt zumachen
                    if kat != ckat:
                        laylen = len(layoutList)
                        for n in range(i, laylen):
                            pm.setParent("..")
                            pm.setParent("..")
                            layoutList.pop(n)

                # nun sollte sichergestellt sein, dass layoutList nur noch elemente
                # enthaelt, die gleich sind, also kann man daran anknuepfen
                for i in range(len(layoutList), len(katlist)):
                    log.debug("opening layout for katlist %s %d %s" %
                              (str(katlist), i, katlist[i]))
                    self.beginUISegment(katlist[i])
                    layoutList.append(katlist[i])

                currentSegment = att.kategory

            if MAP_API_ATTR.has_key(att.type):
                log.debug("Adding element %s with displayName %s" %
                          (att.attname, att.displayname))
                attype, attypeval = MAP_API_ATTR[att.type]
                log.debug(
                    "Adding attribute named %s type %s val %s default %s" %
                    (att.attname, attype, attypeval, att.default))
                if attypeval == 'bool':
                    att.uiElement = pm.checkBoxGrp(att.attname,
                                                   numberOfCheckBoxes=1,
                                                   label1=att.displayname,
                                                   cc=Callback(
                                                       self.dimConnections,
                                                       att))
                    att.uiDimFunction = pm.checkBoxGrp
                    if node:
                        pm.connectControl(att.uiElement,
                                          node + "." + att.attname,
                                          index=2)
                if attypeval == 'int':
                    att.uiElement = pm.intFieldGrp(att.attname,
                                                   numberOfFields=1,
                                                   label=att.displayname,
                                                   value1=att.default,
                                                   cc=Callback(
                                                       self.dimConnections,
                                                       att))
                    att.uiDimFunction = pm.intFieldGrp
                    if node:
                        pm.connectControl(att.uiElement,
                                          node + "." + att.attname,
                                          index=2)
                if attypeval == 'long2':
                    if node:
                        att.uiDimFunction = pm.attrFieldGrp(
                            attribute='%s' % (node + "." + att.attname),
                            cc=Callback(self.dimConnections, att))
                if attypeval == 'float':
                    att.uiElement = pm.floatFieldGrp(att.attname,
                                                     numberOfFields=1,
                                                     label=att.displayname,
                                                     value1=att.default,
                                                     cc=Callback(
                                                         self.dimConnections,
                                                         att))
                    att.uiDimFunction = pm.floatFieldGrp
                    if node:
                        pm.connectControl(att.uiElement,
                                          node + "." + att.attname,
                                          index=2)
                if attypeval == 'float2':
                    if node:
                        att.uiDimFunction = pm.attrFieldGrp(
                            attribute='%s' % (node + "." + att.attname),
                            cc=Callback(self.dimConnections, att))
                if attypeval == 'string':
                    att.uiElement = pm.textFieldGrp(att.attname,
                                                    label=att.displayname,
                                                    text=att.default,
                                                    cc=Callback(
                                                        self.dimConnections,
                                                        att))
                    pm.connectControl(att.uiElement,
                                      node + "." + att.attname,
                                      index=2)
                    pm.textFieldGrp(att.uiElement, edit=True, text=att.default)

                if attypeval == 'enum':
                    poplist = map(list, enumerate(att.values))

                    if node:
                        nodeatt = node + "." + att.attname
                        att.uiElement = pm.attrEnumOptionMenuGrp(
                            att.attname,
                            label=att.displayname,
                            at=nodeatt,
                            ei=poplist,
                            vcc=Callback(self.dimConnections, att))
                        att.uiDimFunction = pm.attrEnumOptionMenuGrp
                    else:
                        att.uiElement = pm.attrEnumOptionMenuGrp(
                            att.attname,
                            label=att.displayname,
                            ei=poplist,
                            vcc=Callback(self.dimConnections, att))
                        att.uiDimFunction = pm.attrEnumOptionMenuGrp

                if attypeval == 'message':
                    pass

        if len(layoutList) > 0:
            for i in range(len(layoutList)):
                pm.setParent("..")
                pm.setParent("..")
예제 #58
0
 def _set_export_atom_check(self):
     self.export_atom = pm.checkBoxGrp('exportAtomFileChecked',
                                       q=True,
                                       value1=True)
예제 #59
0
    def uIGenerator(self):

        if pm.window(self.myWinName, query=True, exists=True):
            pm.deleteUI(self.myWinName)

        try:
            if pm.windowPref(self.myWinName, query=True,
                             exists=True) and self.window_development:
                pm.windowPref(self.myWinName, remove=True)
        except RuntimeError:
            pass

        myWindow = pm.window(self.myWinName,
                             title='Object Instancer',
                             widthHeight=[600, 300])

        base = pm.verticalLayout()

        with base:
            with pm.verticalLayout() as header:

                title = pm.text(label='Object Instancer'.upper())
                pm.separator()

            with pm.verticalLayout() as target:

                self.targetInstances = pm.intSliderGrp(
                    label="Target Instances",
                    field=True,
                    minValue=0,
                    maxValue=1000,
                    changeCommand=self.storeTargetInstances)

                pm.separator()

            with pm.verticalLayout() as randomization:

                title3 = pm.text(label='Randomization')
                self.rotation = pm.checkBoxGrp(
                    numberOfCheckBoxes=3,
                    label="Rotation    ",
                    labelArray3=("RotateX", "RotateY", "RotateZ"),
                    changeCommand=self.storeRotations)
                self.translation = pm.checkBoxGrp(
                    numberOfCheckBoxes=3,
                    label="Translation    ",
                    labelArray3=("TransX", "TransY", "TransZ"),
                    changeCommand=self.storeTranslation)
                pm.separator()

            with pm.verticalLayout() as Randomness:

                self.rRPecentage = pm.floatSliderGrp(
                    label="Rotation Randomness",
                    field=True,
                    minValue=0,
                    maxValue=100)
                self.tRPecentage = pm.floatSliderGrp(
                    label="Translation Randomness",
                    field=True,
                    minValue=0,
                    maxValue=100)

            with pm.horizontalLayout() as Button:

                pm.button(label='Generate',
                          backgroundColor=[0, 1, 0.5],
                          align='left',
                          command=self.generate)

        base.redistribute(.4)

        header.redistribute(1, .1)

        myWindow.show()
예제 #60
0
    def create(self):
        if (pm.window(self.window, exists=True)):
            pm.deleteUI(self.window, window=True)
        # initialize the window
        self.window = pm.window(self.window,
                                title=self.title,
                                wh=self.size,
                                s=0)
        # main form layout
        self.mainForm = pm.formLayout()

        # Locator area --------------------------------------------------------
        # frame for locator generation
        self.locatorFrame = pm.frameLayout(l='Locators', collapsable=1)
        # form layout inside of frame
        self.locatorForm = pm.formLayout()
        # TODO: hook up locator generation to this button
        self.genLoc = pm.button(l='Generate Locators',
                                c=self.generateLocatorsBtn,
                                h=32)
        # attach controls in the locator form
        af = []
        af.append([self.genLoc, 'top', 1])
        af.append([self.genLoc, 'left', 2])
        af.append([self.genLoc, 'right', 2])
        af.append([self.genLoc, 'bottom', 1])
        pm.formLayout(self.locatorForm, e=True, attachForm=af)

        # Skeleton area -------------------------------------------------------
        # frame for skeleton generation
        pm.setParent(self.mainForm)
        self.skeletonFrame = pm.frameLayout(l='Skeleton', collapsable=1)
        # skeleton form
        self.skeletonForm = pm.formLayout()
        # TODO: hook up skeleton generation to this button
        self.genSkel = pm.button(l='Generate Skeleton',
                                 c=self.generateSkeletonBtn,
                                 h=32)
        pm.setParent(self.skeletonForm)
        # skeleton modifiers frame
        self.skelModFrame = pm.frameLayout(l='Skeleton Options', collapsable=1)
        self.skelModForm = pm.formLayout()
        # int field for specifying number of spine joints
        self.spineText = pm.text(label='Number of spine joints: ')
        self.spineIntField = pm.intField(ann='Number of spine joints',
                                         min=1,
                                         v=4)
        # skeleton modifer checkboxes
        self.skelModRadio = pm.checkBoxGrp(
            labelArray3=['Reverse Foot', 'Wrist Twists', 'IK/FK'],
            numberOfCheckBoxes=3)
        af = []
        ac = []
        ac.append([self.spineIntField, 'left', 1, self.spineText])
        ac.append([self.skelModRadio, 'top', 4, self.spineText])
        af.append([self.spineText, 'top', 4])
        af.append([self.spineText, 'left', 3])
        af.append([self.skelModRadio, 'left', 2])
        af.append([self.spineIntField, 'top', 1])
        pm.formLayout(self.skelModForm,
                      e=True,
                      attachControl=ac,
                      attachForm=af)

        af = []
        ac = []
        ac.append([self.skelModFrame, 'top', 1, self.genSkel])
        af.append([self.skelModFrame, 'right', 2])
        af.append([self.skelModFrame, 'left', 5])
        af.append([self.genSkel, 'top', 1])
        af.append([self.genSkel, 'left', 2])
        af.append([self.genSkel, 'right', 2])
        pm.formLayout(self.skeletonForm,
                      e=True,
                      attachControl=ac,
                      attachForm=af)

        # Control rig area ----------------------------------------------------
        # frame for control rig generation
        pm.setParent(self.mainForm)
        self.controlFrame = pm.frameLayout(l='Control Rig', collapsable=1)
        # form layout for control rig
        self.controlForm = pm.formLayout()
        # control rig generation button
        self.genControl = pm.button(l='Generate Control Rig',
                                    c=self.generateControlRigBtn,
                                    h=32)
        af = []
        af.append([self.genControl, 'top', 1])
        af.append([self.genControl, 'left', 2])
        af.append([self.genControl, 'right', 2])
        pm.formLayout(self.controlForm, e=True, attachForm=af)

        # attach frames to main form
        ac = []
        af = []
        ac.append([self.skeletonFrame, 'top', 0, self.locatorFrame])
        ac.append([self.controlFrame, 'top', 0, self.skeletonFrame])
        af.append([self.locatorFrame, 'top', 0])
        af.append([self.locatorFrame, 'left', 0])
        af.append([self.locatorFrame, 'right', 0])
        af.append([self.skeletonFrame, 'left', 0])
        af.append([self.skeletonFrame, 'right', 0])
        af.append([self.controlFrame, 'bottom', 0])
        af.append([self.controlFrame, 'left', 0])
        af.append([self.controlFrame, 'right', 0])
        pm.formLayout(self.mainForm, e=True, attachControl=ac, attachForm=af)

        # show the window
        pm.showWindow(self.window)
        # force window size
        pm.window(self.window, e=True, wh=self.size)