Esempio n. 1
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)
Esempio n. 2
0
 def layersReplace(self, attribute):
     if attribute is not "none":
         self.thisNode = pm.PyNode(attribute).node()
     log.debug("layersReplace {0}".format(attribute))
     pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
     materialEntries = self.thisNode.materialEntryMtl.numElements()
     #print "layersReplace: node has ", self.thisNode.materialEntryMtl.numElements(), "layers"
     if self.layersUi is not None and pm.columnLayout(self.layersUi, q=True, exists=True):
         pm.deleteUI(self.layersUi)
     with pm.columnLayout(adj=True, parent=self.uiParent) as self.layersUi:
         for layerNumber in range(materialEntries):
             layerIndex = self.thisNode.materialEntryMtl.elementByPhysicalIndex(layerNumber).index()
             with pm.frameLayout(label="Layer {0}".format(layerNumber), collapsable=True, collapse=False, bv=True) as fl:
                 log.debug("create layers UI {0}".format(self.thisNode.materialEntryMtl[layerIndex]))
                 with pm.columnLayout(adj=True):
                     attribute = self.thisNode.materialEntryMtl[layerIndex]
                     if attribute.isConnected():
                         pm.frameLayout(fl, edit=True, label=attribute.inputs(p=1)[0])
                     pm.attrColorSliderGrp(label="Material", at=attribute)
                     attribute = self.thisNode.materialEntryMsk[layerIndex]
                     pm.attrFieldSliderGrp(label="Mask", at=attribute)
                     attribute = self.thisNode.materialEntryMode[layerIndex]
                     pm.attrEnumOptionMenuGrp(label="Mode", at=attribute)
                 with pm.columnLayout(adj=True):
                     pm.button(label="Remove Layer", c=pm.Callback(self.removeLayer, layerIndex), height=18)
                     pm.button(label="Layer Up", c=pm.Callback(self.moveLayerUp, layerIndex), height=18)
                     pm.button(label="Layer Down", c=pm.Callback(self.moveLayerDown, layerIndex), height=18)
                 
     pm.setUITemplate("attributeEditorTemplate", popTemplate=True)                
Esempio n. 3
0
    def AppleseedEnvironmentCreateTab(self):
        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="Environment Type", at=self.renderGlobalsNodeName + ".environmentType", ei=self.getEnumList(attr))

                with pm.frameLayout(label="Environment Colors", collapsable=False) as envDict['commonEnvFrame']:
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        ui = pm.floatFieldGrp(label="Environment 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 Color:", at=self.renderGlobalsNodeName + ".gradientHorizon")
                        envDict['gradientZenit'] = pm.attrColorSliderGrp(label="Gradient Zenith Color:", at=self.renderGlobalsNodeName + ".gradientZenit")
                        envDict['environmentMap'] = pm.attrColorSliderGrp(label="Environment Map:", at=self.renderGlobalsNodeName + ".environmentMap")
                        self.addRenderGlobalsUIElement(attName='latlongHoShift', uiType='float', displayName='Lat-Long Horizontal Shift:', uiDict=uiDict)
                        self.addRenderGlobalsUIElement(attName='latlongVeShift', uiType='float', displayName='Lat-Long Vertical Shift:', uiDict=uiDict)

                with pm.frameLayout(label="Physical Sky", collapsable=False) as envDict['pysSkyFrame']:
                    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))
                        uiDict['sunLightOptionMenu'] = pm.optionMenuGrp(label="Sun Light:", changeCommand=self.updateSunLightOptionMenu)
                        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['pskTurb'] = pm.floatFieldGrp(label="Turbidity:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskTurb'], self.renderGlobalsNodeName + ".turbidity", index=2)
                        envDict['pskTurbMin'] = pm.floatFieldGrp(label="Turbidity Min:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskTurbMin'], self.renderGlobalsNodeName + ".turbidity_min", index=2)
                        envDict['pskTurbMax'] = pm.floatFieldGrp(label="Turbidity Max:", value1=1.0, numberOfFields=1)
                        pm.connectControl(envDict['pskTurbMax'], self.renderGlobalsNodeName + ".turbidity_max", index=2)

                with pm.frameLayout(label="OSL", collapsable=False) as envDict['oslFrame']:
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        envDict['environmentOSL'] = pm.attrColorSliderGrp(label="OSL Background", at=self.renderGlobalsNodeName + ".environmentOSL")

        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")])
        self.updateEnvironment()
Esempio n. 4
0
    def FujiRendererCreateTab(self):
        log.debug("FujiRendererCreateTab()")
        self.createGlobalsNode()
        parentForm = pm.setParent(query = True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate = True)
        scLo = self.rendererName + "ScrollLayout"

        if self.rendererTabUiDict.has_key('common'):
            self.rendererTabUiDict.pop('common')
        
        parentForm = pm.setParent(query = True)
        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="Sampling", collapsable = True, collapse=False):                
                    self.addRenderGlobalsUIElement(attName = 'sampleJitter', uiType = 'float', displayName = 'SampleJitter', default='1.0', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'sample_time_range_min', uiType = 'float', displayName = 'Sample Time Range Min', default='0.0', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'sample_time_range_max', uiType = 'float', displayName = 'Sample Time Range Max', default='1.0', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'samplesX', uiType = 'int', displayName = 'Pixel Samples x', default=3, uiDict=uiDict)
                    self.addRenderGlobalsUIElement(attName = 'samplesY', uiType = 'int', displayName = 'Pixel Samples y', default=3, uiDict=uiDict)
                    pm.separator()
                    self.addRenderGlobalsUIElement(attName = 'cast_shadow', uiType = 'bool', displayName = 'Cast Shadows', default='true', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'max_reflect_depth', uiType = 'int', displayName = 'Max Reflection Depth', default='3', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'max_refract_depth', uiType = 'int', displayName = 'Max Refraction Depth', default='3', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'raymarch_step', uiType = 'float', displayName = 'Raymarching Stepsize', default='0.05', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'raymarch_shadow_step', uiType = 'float', displayName = 'Raymarching Shadow Stepsize', default='0.1', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'raymarch_reflect_ste', uiType = 'float', displayName = 'Raymarching Reflection Stepsize', default='0.1', uiDict=uiDict)                    
                    self.addRenderGlobalsUIElement(attName = 'raymarch_refract_ste', uiType = 'float', displayName = 'Raymarching Refraction Stepsize', default='0.1', uiDict=uiDict)                                        
                    pm.separator()
                    self.addRenderGlobalsUIElement(attName = 'doMotionBlur', uiType = 'bool', displayName = 'Motionblur:', 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):
                    attr = pm.Attribute(self.renderGlobalsNodeName + ".imageFormat")
                    ui = pm.attrEnumOptionMenuGrp(label = "Image Format", at=self.renderGlobalsNodeName + ".imageFormat", ei = self.getEnumList(attr)) 
                    
                with pm.frameLayout(label="Filtering", collapsable = True, collapse=False):
                    attr = pm.Attribute(self.renderGlobalsNodeName + ".filtertype")
                    ui = pm.attrEnumOptionMenuGrp(label = "Filter Type", at=self.renderGlobalsNodeName + ".filtertype", ei = self.getEnumList(attr)) 
                    ui = pm.intFieldGrp(label="Filter Size:", numberOfFields = 1)
                    pm.connectControl(ui, self.renderGlobalsNodeName + ".filtersize", index = 2 )

                with pm.frameLayout(label="Renderer", collapsable = True, collapse=False):
                    self.addRenderGlobalsUIElement(attName = 'use_max_thread', uiType = 'bool', displayName = 'Use Max Threads', default='true', uiDict=uiDict)
                    self.addRenderGlobalsUIElement(attName = 'threads', uiType = 'int', displayName = 'Threads', default=8, uiDict=uiDict)
                    self.addRenderGlobalsUIElement(attName = 'tilesize', uiType = 'int', displayName = 'Tile Size', default=64, uiDict=uiDict)
                    ui = pm.intFieldGrp(label="Verbosity:", numberOfFields = 1)
                    pm.connectControl(ui, self.renderGlobalsNodeName + ".rendererVerbosity", 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.FujiRendererUpdateTab()
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
    def KrayQualityCreateTab(self):
        log.debug("KrayFinalGatheringCreateTab()")
        self.createGlobalsNode()
        qDict = {}
        self.rendererTabUiDict['quality'] = qDict        
        
        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="Quality", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayoutA", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".qLuminosityModel")
                        ui = pm.attrEnumOptionMenuGrp(label="Luminosity Model", at=self.renderGlobalsNodeName + ".qLuminosityModel", ei=self.getEnumList(attr)) 

                        attr = pm.Attribute(self.renderGlobalsNodeName + ".qAreaLights")
                        ui = pm.attrEnumOptionMenuGrp(label="Area Lights Computation", at=self.renderGlobalsNodeName + ".qAreaLights", ei=self.getEnumList(attr)) 

                        attr = pm.Attribute(self.renderGlobalsNodeName + ".qAreaLightVisibility")
                        ui = pm.attrEnumOptionMenuGrp(label="Area Light Visibility", at=self.renderGlobalsNodeName + ".qAreaLightVisibility", ei=self.getEnumList(attr)) 

                        pm.separator()
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".qOctreeDetail")
                        ui = pm.attrEnumOptionMenuGrp(label="Octree Detail", at=self.renderGlobalsNodeName + ".qOctreeDetail", ei=self.getEnumList(attr)) 

#    float qLevel; // float
#    bool qDoubleSided; // bool
#    bool qSpotlightsToArea; // bool
#    float qAreaLightsThreshold; // float
#    int qAMinRecursion; // int
#    int qAMaxRecursion; // int
#    float qLinearLightsThreshold; // float
#    int qLMinRecursion; // int
#    int qLMaxRecursion; // int
#    float qLuminosityThreshold; // float
#    int qLumMinRays; // int
#    int qLumMaxRays; // int
#    float qBlurringThreshold; // float
#    int qBLumMinRays; // int
#    int qBLumMaxRays; // int
#    float qBAccuracyLimit; // float
#    bool qTraceDirectLightReflections; // bool
#                        
        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 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) ])
Esempio n. 9
0
 def IndigoTranslatorCreateTab(self):
     log.debug("IndigoTranslatorCreateTab()")
     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="Indigo Scene File export", collapsable = True, collapse=False):
                 ui = pm.checkBoxGrp(label="Export Indigo Scene file:", value1 = False)
                 pm.connectControl(ui, self.renderGlobalsNodeName + ".exportSceneFile", index = 2 )
                 xmlDict = {}
                 self.rendererTabUiDict['xml'] = xmlDict
                 defaultXMLPath = pm.workspace.path + "/" + pm.sceneName().basename().split(".")[0] + ".igs"
                 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)
                 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) ])
Esempio n. 10
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) ])
Esempio n. 11
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()
Esempio n. 12
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( label = att.displayname, 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("..")
Esempio n. 13
0
    def FujiRendererCreateTab(self):
        log.debug("FujiRendererCreateTab()")
        self.createGlobalsNode()
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "ScrollLayout"

        if self.rendererTabUiDict.has_key('common'):
            self.rendererTabUiDict.pop('common')

        parentForm = pm.setParent(query=True)
        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="Sampling",
                                    collapsable=True,
                                    collapse=False):
                    self.addRenderGlobalsUIElement(attName='sampleJitter',
                                                   uiType='float',
                                                   displayName='SampleJitter',
                                                   default='1.0',
                                                   uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='sample_time_range_min',
                        uiType='float',
                        displayName='Sample Time Range Min',
                        default='0.0',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='sample_time_range_max',
                        uiType='float',
                        displayName='Sample Time Range Max',
                        default='1.0',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='samplesX',
                        uiType='int',
                        displayName='Pixel Samples x',
                        default=3,
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='samplesY',
                        uiType='int',
                        displayName='Pixel Samples y',
                        default=3,
                        uiDict=uiDict)
                    pm.separator()
                    self.addRenderGlobalsUIElement(attName='cast_shadow',
                                                   uiType='bool',
                                                   displayName='Cast Shadows',
                                                   default='true',
                                                   uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='max_reflect_depth',
                        uiType='int',
                        displayName='Max Reflection Depth',
                        default='3',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='max_refract_depth',
                        uiType='int',
                        displayName='Max Refraction Depth',
                        default='3',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='raymarch_step',
                        uiType='float',
                        displayName='Raymarching Stepsize',
                        default='0.05',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='raymarch_shadow_step',
                        uiType='float',
                        displayName='Raymarching Shadow Stepsize',
                        default='0.1',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='raymarch_reflect_ste',
                        uiType='float',
                        displayName='Raymarching Reflection Stepsize',
                        default='0.1',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(
                        attName='raymarch_refract_ste',
                        uiType='float',
                        displayName='Raymarching Refraction Stepsize',
                        default='0.1',
                        uiDict=uiDict)
                    pm.separator()
                    self.addRenderGlobalsUIElement(attName='doMotionBlur',
                                                   uiType='bool',
                                                   displayName='Motionblur:',
                                                   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):
                    attr = pm.Attribute(self.renderGlobalsNodeName +
                                        ".imageFormat")
                    ui = pm.attrEnumOptionMenuGrp(
                        label="Image Format",
                        at=self.renderGlobalsNodeName + ".imageFormat",
                        ei=self.getEnumList(attr))

                with pm.frameLayout(label="Filtering",
                                    collapsable=True,
                                    collapse=False):
                    attr = pm.Attribute(self.renderGlobalsNodeName +
                                        ".filtertype")
                    ui = pm.attrEnumOptionMenuGrp(
                        label="Filter Type",
                        at=self.renderGlobalsNodeName + ".filtertype",
                        ei=self.getEnumList(attr))
                    ui = pm.intFieldGrp(label="Filter Size:", numberOfFields=1)
                    pm.connectControl(ui,
                                      self.renderGlobalsNodeName +
                                      ".filtersize",
                                      index=2)

                with pm.frameLayout(label="Renderer",
                                    collapsable=True,
                                    collapse=False):
                    self.addRenderGlobalsUIElement(
                        attName='use_max_thread',
                        uiType='bool',
                        displayName='Use Max Threads',
                        default='true',
                        uiDict=uiDict)
                    self.addRenderGlobalsUIElement(attName='threads',
                                                   uiType='int',
                                                   displayName='Threads',
                                                   default=8,
                                                   uiDict=uiDict)
                    self.addRenderGlobalsUIElement(attName='tilesize',
                                                   uiType='int',
                                                   displayName='Tile Size',
                                                   default=64,
                                                   uiDict=uiDict)
                    ui = pm.intFieldGrp(label="Verbosity:", numberOfFields=1)
                    pm.connectControl(ui,
                                      self.renderGlobalsNodeName +
                                      ".rendererVerbosity",
                                      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.FujiRendererUpdateTab()
Esempio n. 14
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("..")
Esempio n. 15
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()
Esempio n. 16
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()
Esempio n. 17
0
    def KrayEnvironmentCreateTab(self):
        log.debug("KrayEnvironmentCreateTab()")
        self.createGlobalsNode()
        envDict = {}
        self.rendererTabUiDict['environment'] = envDict
        bgDict = {}
        self.rendererTabUiDict['background'] = bgDict
        
        parentForm = pm.setParent(query=True)
        pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "EnvScrollLayout"
        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                with pm.frameLayout(label="Background", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".backgroundType")
                        ui = pm.attrEnumOptionMenuGrp(label="Background Type", at=self.renderGlobalsNodeName + ".backgroundType", ei=self.getEnumList(attr)) 
                        bgDict['environmentColor'] = pm.attrColorSliderGrp(label="Background Color", at=self.renderGlobalsNodeName + ".environmentColor")
                        bgDict['gradientHorizon'] = pm.attrColorSliderGrp(label="Horizon Color", at=self.renderGlobalsNodeName + ".gradientHorizon")
                        bgDict['gradientZenit'] = pm.attrColorSliderGrp(label="Zenith Color", at=self.renderGlobalsNodeName + ".gradientZenit")
                        bgDict['nadir'] = pm.attrColorSliderGrp(label="Bottom Color", at=self.renderGlobalsNodeName + ".nadir")
                        bgDict['groundAlbedo'] = pm.attrColorSliderGrp(label="Ground Albedo", at=self.renderGlobalsNodeName + ".groundAlbedo")
                        pm.separator()
                        bgDict['environmentMap'] = pm.attrColorSliderGrp(label="Environment Map", at=self.renderGlobalsNodeName + ".environmentMap")
                        bgDict['environmentMap2'] = pm.attrColorSliderGrp(label="Environment Map 2", at=self.renderGlobalsNodeName + ".environmentMap2")
                        pm.separator()
                        bgDict['sunDir'] = pm.attrFieldGrp(label="Sun Direction:", at=self.renderGlobalsNodeName + ".sunDir")
                        bgDict['zenithDir'] = pm.attrFieldGrp(label="Zenith Direction:", at=self.renderGlobalsNodeName + ".zenithDir")
                        bgDict['orientation'] = pm.attrFieldGrp(label="Orientation:", at=self.renderGlobalsNodeName + ".orientation")
                        pm.separator()
                        bgDict['skyGamma'] = pm.floatFieldGrp(label="Sky Gamma:", numberOfFields=1)
                        pm.connectControl(bgDict['skyGamma'], self.renderGlobalsNodeName + ".skyGamma", index=2)                       
                        bgDict['groundGamma'] = pm.floatFieldGrp(label="Ground Gamma:", numberOfFields=1)
                        pm.connectControl(bgDict['groundGamma'], self.renderGlobalsNodeName + ".groundGamma", index=2)                       
                        bgDict['turbidity'] = pm.floatFieldGrp(label="Turbidity:", numberOfFields=1)
                        pm.connectControl(bgDict['turbidity'], self.renderGlobalsNodeName + ".turbidity", index=2)   
                        bgDict['exposure'] = pm.floatFieldGrp(label="Exposure:", numberOfFields=1)
                        pm.connectControl(bgDict['exposure'], self.renderGlobalsNodeName + ".exposure", index=2)   
                        bgDict['sunIntensity'] = pm.floatFieldGrp(label="Sun Intensity:", numberOfFields=1)
                        pm.connectControl(bgDict['sunIntensity'], self.renderGlobalsNodeName + ".sunIntensity", index=2)  
                        pm.separator()
                        bgDict['solidAngle'] = pm.floatFieldGrp(label="Solid Angle:", numberOfFields=1)
                        pm.connectControl(bgDict['solidAngle'], self.renderGlobalsNodeName + ".solidAngle", index=2)   
                        bgDict['sunSpotAngle'] = pm.floatFieldGrp(label="Sun Spot Angle:", numberOfFields=1)
                        pm.connectControl(bgDict['sunSpotAngle'], self.renderGlobalsNodeName + ".sunSpotAngle", index=2)   
                with pm.frameLayout(label="Environment", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".environmentType")
                        ui = pm.attrEnumOptionMenuGrp(label="Environment Type", at=self.renderGlobalsNodeName + ".environmentType", ei=self.getEnumList(attr)) 
                                      


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

        self.KrayRendererUIUpdateCallback("environment")                
        self.KrayRendererUIUpdateCallback("background")                

        pm.scriptJob(attributeChange=[self.renderGlobalsNode.backgroundType, pm.Callback(self.KrayRendererUIUpdateCallback, "background")])
        pm.scriptJob(attributeChange=[self.renderGlobalsNode.environmentType, pm.Callback(self.KrayRendererUIUpdateCallback, "environment")])
Esempio n. 18
0
 def KrayRendererUIUpdateCallback(self, what=None):
     self.createGlobalsNode()
     #self.updateEnvironment()
     log.debug("KrayRendererUIUpdateCallback(): " + str(what))
     if what == "environment":
         log.debug("Update environment")
         eDict = self.rendererTabUiDict['environment']
         
     if what == "background":
         log.debug("Update background")
         eDict = self.rendererTabUiDict['background']
         eType = self.renderGlobalsNode.backgroundType.get()
         for key in eDict:
             eDict[key].setEnable(val=False)
         
         if eType == 0: #color
             eDict['environmentColor'].setEnable(val=True)
         if eType == 1 or eType == 2: #physSky
             eDict['sunDir'].setEnable(val=True)
             eDict['orientation'].setEnable(val=True)
             eDict['turbidity'].setEnable(val=True)
             eDict['exposure'].setEnable(val=True)
         if eType == 2: #physSky2
             eDict['groundAlbedo'].setEnable(val=True)
         if eType == 3 or eType == 4: #sky
             eDict['gradientHorizon'].setEnable(val=True)
             eDict['gradientZenit'].setEnable(val=True)
             eDict['nadir'].setEnable(val=True)
             eDict['zenithDir'].setEnable(val=True)
         if eType == 4: #sky2
             eDict['skyGamma'].setEnable(val=True)
             eDict['groundGamma'].setEnable(val=True)
         if eType == 5 or eType == 6: #bitmap
             eDict['environmentMap'].setEnable(val=True)
         if eType == 6: #bitmap2
             eDict['environmentMap2'].setEnable(val=True)
         if eType == 7: #directionsMap
             pass
         if eType == 8: #lightMap
             pass
         if eType == 9: #sphericalMap
             eDict['environmentMap'].setEnable(val=True)
         
         
     if what == "sampling":
         print "Update sampling"
         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)
Esempio n. 19
0
    def KrayRendererCreateTab(self):
        log.debug("KrayRendererCreateTab()")
        self.createGlobalsNode()
        sDict = {}
        self.rendererTabUiDict['sampling'] = sDict        
        parentForm = pm.setParent(query=True)

        pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True)
        pm.setUITemplate("attributeEditorTemplate", pushTemplate=True)
        scLo = self.rendererName + "ScrollLayout"
        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                with pm.frameLayout(label="Image format", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayoutA", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".diffuseModel")
                        ui = pm.attrEnumOptionMenuGrp(label="Diffuse Model", at=self.renderGlobalsNodeName + ".diffuseModel", ei=self.getEnumList(attr)) 
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".qLuminosityModel")
                        ui = pm.attrEnumOptionMenuGrp(label="Luminosity Model", at=self.renderGlobalsNodeName + ".qLuminosityModel", ei=self.getEnumList(attr)) 
                        pm.separator()
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".imageFormat")
                        ui = pm.attrEnumOptionMenuGrp(label="Image format", at=self.renderGlobalsNodeName + ".imageFormat", ei=self.getEnumList(attr)) 
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".bitdepth")
                        sDict['bitdepth'] = pm.attrEnumOptionMenuGrp(label="Bit depth", at=self.renderGlobalsNodeName + ".bitdepth", ei=self.getEnumList(attr)) 
                        sDict['jpgQuality'] = pm.intFieldGrp(label="Jpg Quality:", numberOfFields=1)
                        pm.connectControl(sDict['jpgQuality'], self.renderGlobalsNodeName + ".jpgQuality", index=2)                     
                
                with pm.frameLayout(label="Sampling", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayoutA", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".samplingType")
                        ui = pm.attrEnumOptionMenuGrp(label="Sampling Type", at=self.renderGlobalsNodeName + ".samplingType", ei=self.getEnumList(attr)) 
                        sDict['fullScreenAA'] = pm.checkBoxGrp(label="Full Screen AA:", value1=False)
                        pm.connectControl(sDict['fullScreenAA'], self.renderGlobalsNodeName + ".fullScreenAA", index=2)
                        pm.separator()
                        sDict['gridSize'] = pm.intFieldGrp(label="Grid Size:", numberOfFields=1)
                        pm.connectControl(sDict['gridSize'], self.renderGlobalsNodeName + ".gridSize", index=2)                     
                        sDict['gridRotate'] = pm.checkBoxGrp(label="Grid Rotate:", value1=False)
                        pm.connectControl(sDict['gridRotate'], self.renderGlobalsNodeName + ".rotateGrid", index=2) 
                        pm.separator()
                        ui = pm.intFieldGrp(label="Rays:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_rays", index=2)                     
                        ui = pm.intFieldGrp(label="Min Rays:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_minRays", index=2)                     
                        ui = pm.intFieldGrp(label="Max Rays:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_maxRays", index=2)                     
                        pm.separator()
                        ui = pm.intFieldGrp(label="Edge Thickness:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_thickness", index=2)                     
                        ui = pm.floatFieldGrp(label="Edge Absulut:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_edgeAbsolute", index=2)                     
                        ui = pm.floatFieldGrp(label="Edge Relative:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_relative", index=2)                     
                        pm.separator()
                        ui = pm.floatFieldGrp(label="Normal Sentitivity:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_normal", index=2)                     
                        ui = pm.floatFieldGrp(label="Z Sensitivity:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_z", index=2)                  
                        ui = pm.floatFieldGrp(label="Max Brightness:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_overburn", index=2)                    
                        ui = pm.floatFieldGrp(label="Threshold:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_threshold", index=2)                     
                        pm.separator()
                        ui = pm.intFieldGrp(label="Upsample:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_upsample", index=2)      
                        ui = pm.floatFieldGrp(label="Mb Subframes:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".mb_subframes", index=2)                     
                        pm.separator()
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".pixelOrder")
                        ui = pm.attrEnumOptionMenuGrp(label="Pixel Order", at=self.renderGlobalsNodeName + ".pixelOrder", ei=self.getEnumList(attr)) 
                    
                with pm.frameLayout(label="Filtering", collapsable=True, collapse=False):
                    attr = pm.Attribute(self.renderGlobalsNodeName + ".filtertype")
                    ui = pm.attrEnumOptionMenuGrp(label="Filter Type", at=self.renderGlobalsNodeName + ".filtertype", ei=self.getEnumList(attr)) 
                    sDict['filterSize'] = pm.floatFieldGrp(label="Filter Size:", numberOfFields=1)
                    pm.connectControl(sDict['filterSize'], self.renderGlobalsNodeName + ".filtersize", index=2)
                                        
                with pm.frameLayout(label="Features", collapsable=True, collapse=False):
                    sDict['doMb'] = pm.checkBoxGrp(label="Motion Blur:")
                    pm.connectControl(sDict['doMb'], self.renderGlobalsNodeName + ".doMb", index=2)
                    sDict['doDof'] = pm.checkBoxGrp(label="Depth Of Field:")
                    pm.connectControl(sDict['doDof'], self.renderGlobalsNodeName + ".doDof", index=2)
                    sDict['camSingleSided'] = pm.checkBoxGrp(label="Render Single Sided:")
                    pm.connectControl(sDict['camSingleSided'], self.renderGlobalsNodeName + ".camSingleSided", index=2)
                    
        pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
        pm.setUITemplate("renderGlobalsTemplate", popTemplate=True)
        pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
        self.KrayRendererUpdateTab()

        self.KrayRendererUIUpdateCallback("sampling")                
        
        pm.scriptJob(attributeChange=[self.renderGlobalsNode.samplingType, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")])
        pm.scriptJob(attributeChange=[self.renderGlobalsNode.filtertype, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")])
        pm.scriptJob(attributeChange=[self.renderGlobalsNode.imageFormat, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")])
Esempio n. 20
0
    def KrayPhotonsCreateTab(self):
        log.debug("KrayPhotonsCreateTab()")
        self.createGlobalsNode()
        photonsDict = {}
        self.rendererTabUiDict['photons'] = photonsDict
        causticDict = {}
        self.rendererTabUiDict['caustic'] = causticDict

        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", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        ui = pm.floatFieldGrp(label="GI Resolution:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".giResolution", index=2)                     
                        ui = pm.checkBoxGrp(label="GI Resolution Auto:")
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".giResolutionAuto", index=2)                     
                        ui = pm.checkBoxGrp(label="Preview Photons:")
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".previewPhotons", index=2)                     
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".photonMapType")
                        ui = pm.attrEnumOptionMenuGrp(label="Photon Map Type", at=self.renderGlobalsNodeName + ".photonMapType", ei=self.getEnumList(attr)) 
                        ui = pm.intFieldGrp(label="Photons:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonCount", index=2)                         
                        ui = pm.floatFieldGrp(label="Power:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonPower", index=2)                     
                        ui = pm.floatFieldGrp(label="NBlur:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonNBlur", index=2) 
                        ui = pm.floatFieldGrp(label="Precache Dist:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonPrecacheDist", index=2) 
                        ui = pm.floatFieldGrp(label="Precache Blur:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonPrecacheBlur", index=2) 
                        pm.separator() 
                        ui = pm.checkBoxGrp(label="Auto Photons:")
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonUseAutoPhotons", index=2)                     
                        ui = pm.floatFieldGrp(label="Auto Photons Low:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonAutoPhotonsLow", index=2)                     
                        ui = pm.floatFieldGrp(label="Auto Photons High:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonAutoPhotonsHigh", index=2)                     
                        ui = pm.floatFieldGrp(label="Auto Photons Steps:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".photonAutoPhotonsSteps", index=2)                     
                        
                with pm.frameLayout(label="Caustics", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        ui = pm.checkBoxGrp(label="Add To Lightmap:")
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAddToLightmap", index=2)                     
                        pm.separator()
                        ui = pm.intFieldGrp(label="Caustic Photons:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsCount", index=2)                         
                        ui = pm.floatFieldGrp(label="Caustic Power:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsPower", index=2)                     
                        ui = pm.floatFieldGrp(label="Caustic NBlur:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsNBlur", index=2)                     
                        pm.separator()
                        ui = pm.checkBoxGrp(label="Caustic Auto Photons:")
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsUseAutoPhotons", index=2)                     
                        ui = pm.floatFieldGrp(label="Caustic Auto Low:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAutoPhotonsLow", index=2)                     
                        ui = pm.floatFieldGrp(label="Caustic Auto High:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAutoPhotonsHigh", index=2)                     
                        ui = pm.floatFieldGrp(label="Caustic Auto Steps:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAutoPhotonsSteps", 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) ])
Esempio n. 21
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()
Esempio n. 22
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"
        with pm.scrollLayout(scLo, horizontalScrollBarThickness=0):
            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                with pm.frameLayout(label="Sampling", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        ui = pm.checkBoxGrp(label="Adaptive Sampling:", value1=False, cc=self.AppleseedRendererUpdateTab)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".adaptiveSampling", index=2)
                        self.rendererTabUiDict['minSamples'] = pm.intFieldGrp(label="Samples min:", value1=2, numberOfFields=1)
                        pm.connectControl(self.rendererTabUiDict['minSamples'], self.renderGlobalsNodeName + ".minSamples", index=2)
                        ui = pm.intFieldGrp(label="Samples max:", value1=16, numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".maxSamples", index=2)
                        self.rendererTabUiDict['maxError'] = pm.floatFieldGrp(label="Max Error:", value1=0.01, numberOfFields=1)
                        pm.connectControl(self.rendererTabUiDict['maxError'], self.renderGlobalsNodeName + ".maxError", index=2)
                        pm.separator()
                        ui = pm.checkBoxGrp(label="Motionblur:", value1=False)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".doMotionBlur", index=2)
                        ui = pm.checkBoxGrp(label="Depth Of Field:", value1=False)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".doDof", index=2)
                    
                with pm.frameLayout(label="Output", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        #attr = pm.Attribute(self.renderGlobalsNodeName + ".imageFormat")
                        #ui = pm.attrEnumOptionMenuGrp(label = "Image Format", at=self.renderGlobalsNodeName + ".imageFormat", ei = self.getEnumList(attr)) 
                        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="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)) 
                        ui = pm.intFieldGrp(label="Filter Size:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".filtersize", index=2)

                with pm.frameLayout(label="Lighting", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".lightingEngine")
                        ui = pm.attrEnumOptionMenuGrp(label="Lighting Engine", at=self.renderGlobalsNodeName + ".lightingEngine", ei=self.getEnumList(attr)) 
                        ui = pm.intFieldGrp(label="Max Trace Depth:", value1=4, numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".maxTraceDepth", index=2)
                        ui = pm.checkBoxGrp(label="Caustics:", value1=False)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".caustics", index=2)
                        with pm.frameLayout(label="Advanced Lighting", collapsable=True, collapse=True):
                            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                                ui = pm.intFieldGrp(label="Diffuse Depth:", value1=4, numberOfFields=1)
                                pm.connectControl(ui, self.renderGlobalsNodeName + ".diffuseDepth", index=2)
                                ui = pm.intFieldGrp(label="Glossy Depth:", value1=4, numberOfFields=1)
                                pm.connectControl(ui, self.renderGlobalsNodeName + ".glossyDepth", index=2)
                                ui = pm.intFieldGrp(label="Direct Light Samples:", value1=4, numberOfFields=1)
                                pm.connectControl(ui, self.renderGlobalsNodeName + ".directLightSamples", index=2)

                    
                with pm.frameLayout(label="Renderer", collapsable=True, collapse=False):
                    with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                        ui = pm.intFieldGrp(label="Threads:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".threads", index=2)
                        ui = pm.intFieldGrp(label="Verbosity:", numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".rendererVerbosity", index=2)
                        ui = pm.intFieldGrp(label="Tile Size:", value1=32, numberOfFields=1)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".tilesize", index=2)
                        ui = pm.checkBoxGrp(label="Use SBVH Acceleration for mb:", value1=False)
                        pm.connectControl(ui, self.renderGlobalsNodeName + ".assemblySBVH", index=2)
                    
        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()
Esempio n. 23
0
    def OpenMayaCommonGlobalsCreateTab(self):
        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:
            with pm.columnLayout("commonTabColumn", adjustableColumn=True, width=400) as ctc:
                with pm.frameLayout(label="File Output", collapsable=True, collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        uiDict["fileNamePrefixField"] = pm.textFieldGrp(
                            label="File Name Prefix:", cc=self.updateFileNamePrefix
                        )
                        pm.connectControl(
                            uiDict["fileNamePrefixField"], pm.SCENE.defaultRenderGlobals.imageFilePrefix, index=2
                        )
                        pm.attrEnumOptionMenuGrp(
                            "imageMenuMayaSW", label="Image Format:", attribute=self.renderNode.imageFormat
                        )
                        formats = self.renderNode.imageFormat.getEnums().keys()
                        if "EXR" in formats:
                            with pm.columnLayout("exrOptionsLayout", adjustableColumn=True, width=400) as uiDict[
                                "exrOptionsLayout"
                            ]:
                                self.addRenderGlobalsUIElement(
                                    attName="exrDataTypeHalf",
                                    uiType="bool",
                                    displayName="Half Float",
                                    default="false",
                                    uiDict={},
                                )
                                self.addRenderGlobalsUIElement(
                                    attName="exrMergeChannels",
                                    uiType="bool",
                                    displayName="Merge passes",
                                    default="true",
                                    uiDict={},
                                )

                        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="byFrameStep", uiType="float", displayName="By Frame:", uiDict=uiDict
                        )

                with pm.frameLayout(label="Renderable Cameras", collapsable=True, collapse=False) as uiDict[
                    "camerasFrame"
                ]:
                    self.createCamerasUI(uiDict)

                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])

                        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"),
                        )

                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.OpenMayaCommonGlobalsUpdateTab()
        self.updateExrUI()
        self.updateImageSize(["width"])
        self.updateFileNamePrefix()
        pm.scriptJob(attributeChange=(self.renderNode.imageFormat, self.updateExrUI), parent=parentForm)
        defrw = pm.SCENE.defaultResolution.width
        defrh = pm.SCENE.defaultResolution.height
        defrd = pm.SCENE.defaultResolution.deviceAspectRatio
        pm.scriptJob(attributeChange=(defrw, pm.Callback(self.updateImageSize, ["width"])), runOnce=True)
        pm.scriptJob(attributeChange=(defrh, pm.Callback(self.updateImageSize, ["height"])), runOnce=True)
        pm.scriptJob(attributeChange=(defrd, pm.Callback(self.updateImageSize, ["devAsp"])), runOnce=True)
        pm.scriptJob(event=("SelectionChanged", self.selectionChangedEvent))
Esempio n. 24
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()
Esempio n. 25
0
    def initialize_moduleSettings(self):
        """ Places all UI widgets in the Modules Options Layout """

        button_width = self.moduleOptionsWidth / 2 - 12
        button_height = 28
        module_distance = (self.moduleLayoutHeight / 2) / 7

        self.UIwidgets["moduleOptions_formLayout"] = pm.formLayout(
            numberOfDivisions=100, parent=self.UIwidgets["modulesOptions_frameLayout"]
        )

        self.UIwidgets["moduleOptions_name_textField"] = pm.textFieldGrp(
            label="Module Name: ",
            text="Module Name",
            parent=self.UIwidgets["moduleOptions_formLayout"],
            enable=False,
            changeCommand=self.rename_module,
        )

        self.UIwidgets["moduleOptions_parent_button"] = pm.button(
            label="Parent Module",
            width=button_width,
            height=button_height,
            parent=self.UIwidgets["moduleOptions_formLayout"],
            enable=True,
            command=self.find_reParentModule,
        )

        self.UIwidgets["moduleOptions_group_button"] = pm.button(
            label="Group Module",
            width=button_width,
            height=button_height,
            parent=self.UIwidgets["moduleOptions_formLayout"],
            enable=False,
        )

        self.UIwidgets["moduleOptions_mirrorPlane_attrControl"] = pm.attrEnumOptionMenuGrp(
            l="Mirror Plane: ",
            ei=[(0, "YZ"), (1, "YX"), (2, "XZ"), (3, "None")],
            parent=self.UIwidgets["moduleOptions_formLayout"],
            enable=False,
        )
        self.UIwidgets["moduleOptions_mirrorType_attrControl"] = pm.attrEnumOptionMenuGrp(
            l="Mirror Type: ",
            ei=[(0, "Behavior"), (1, "Orientation")],
            parent=self.UIwidgets["moduleOptions_formLayout"],
            enable=False,
        )
        self.UIwidgets["moduleOptions_mirror_button"] = pm.button(
            label="Mirror Module",
            width=button_width,
            height=button_height,
            parent=self.UIwidgets["moduleOptions_formLayout"],
            enable=False,
        )

        self.UIwidgets["moduleOptions_duplicate_button"] = pm.button(
            label="Duplicate Module",
            width=button_width,
            height=button_height,
            parent=self.UIwidgets["moduleOptions_formLayout"],
            enable=False,
        )
        self.UIwidgets["moduleOptions_delete_button"] = pm.button(
            label="Delete Module",
            width=button_width,
            height=button_height,
            parent=self.UIwidgets["moduleOptions_formLayout"],
            command=self.delete_module,
            enable=False,
        )

        pm.textFieldGrp(
            self.UIwidgets["moduleOptions_name_textField"],
            edit=True,
            columnWidth=[(1, 90), (2, self.moduleOptionsWidth - 108)],
            columnAttach2=["left", "left"],
        )
        pm.attrEnumOptionMenuGrp(
            self.UIwidgets["moduleOptions_mirrorPlane_attrControl"],
            edit=True,
            columnWidth=[(1, 75), (2, 50)],
            columnAlign2=["left", "left"],
            columnOffset2=[0, 0],
        )
        pm.attrEnumOptionMenuGrp(
            self.UIwidgets["moduleOptions_mirrorType_attrControl"],
            edit=True,
            columnWidth=[(1, 75), (2, 50)],
            columnAlign2=["left", "left"],
            columnOffset2=[0, 0],
        )

        #  MODULE NAME TEXT FIELD
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_name_textField"], "top", 28),
                (self.UIwidgets["moduleOptions_name_textField"], "left", 0),
            ],
        )

        #  PARENT BUTTON
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_parent_button"], "top", module_distance * 2),
                (self.UIwidgets["moduleOptions_parent_button"], "left", 5),
            ],
        )

        #  GROUP AND UNGROUP BUTTON
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_group_button"], "top", module_distance * 3),
                (self.UIwidgets["moduleOptions_group_button"], "left", 5),
            ],
        )

        #  MIRROR OPTIONS
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_mirrorPlane_attrControl"], "top", module_distance * 4 + 5),
                (self.UIwidgets["moduleOptions_mirrorPlane_attrControl"], "left", 5),
            ],
        )
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_mirrorType_attrControl"], "top", module_distance * 4.9),
                (self.UIwidgets["moduleOptions_mirrorType_attrControl"], "left", 5),
            ],
        )
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_mirror_button"], "top", module_distance * 5.7),
                (self.UIwidgets["moduleOptions_mirror_button"], "left", 5),
            ],
        )

        #  DUPLICATE BUTTON
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_duplicate_button"], "top", module_distance * 7),
                (self.UIwidgets["moduleOptions_duplicate_button"], "left", 5),
            ],
        )

        #  DELETE MODULE
        pm.formLayout(
            self.UIwidgets["moduleOptions_formLayout"],
            edit=True,
            attachForm=[
                (self.UIwidgets["moduleOptions_delete_button"], "top", module_distance * 7),
                (self.UIwidgets["moduleOptions_delete_button"], "right", 5),
            ],
        )
Esempio n. 26
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)
                        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):
                        attr = pm.Attribute(self.renderGlobalsNodeName + ".lightingEngine")
                        ui = pm.attrEnumOptionMenuGrp(label="Lighting Engine", at=self.renderGlobalsNodeName + ".lightingEngine", ei=self.getEnumList(attr)) 
                        with pm.frameLayout(label="Common Settings", collapsable=True, collapse=False):
                            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                                self.addRenderGlobalsUIElement(attName='maxTraceDepth', uiType='int', displayName='Max Trace Depth', uiDict=uiDict)                        
                                self.addRenderGlobalsUIElement(attName='rr_min_path_length', uiType='float', displayName='RR Min Path Len', uiDict=uiDict)                        
                                self.addRenderGlobalsUIElement(attName='enable_caustics', uiType='bool', displayName='Enable Caustics', default=False, uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='enable_ibl', uiType='bool', displayName='Enable IBL', default=False, uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='enable_dl', uiType='bool', displayName='Enable Direct Light', default=False, uiDict=uiDict)
                                
                                self.addRenderGlobalsUIElement(attName='directLightSamples', uiType='int', displayName='Direct Light Samples', uiDict=uiDict)                        
                                self.addRenderGlobalsUIElement(attName='environmentSamples', uiType='int', displayName='Environment Samples', uiDict=uiDict)                        
                                
                                self.addRenderGlobalsUIElement(attName='diffuseDepth', uiType='int', displayName='Diffuse Depth', uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='glossyDepth', uiType='int', displayName='Glossy Depth', uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='max_ray_intensity', uiType='float', displayName='Max Ray Intensity', uiDict=uiDict)                        

                        uiDict["SPPM Settings"] = pm.frameLayout(label="SPPM Settings", collapsable=True, collapse=False)
                        with uiDict["SPPM Settings"]:
                            with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400):
                                self.addRenderGlobalsUIElement(attName='sppmAlpha', uiType='float', displayName='Alpha', uiDict=uiDict)                        
                                self.addRenderGlobalsUIElement(attName='env_photons_per_pass', uiType='int', displayName='Env Photons PP', uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='light_photons_per_pass', uiType='int', displayName='Light Photons PP', uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='photons_per_pass', uiType='int', displayName='Photons PP', uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='max_photons_per_estimate', uiType='int', displayName='Max Photons Per Estimate', uiDict=uiDict)
                                self.addRenderGlobalsUIElement(attName='initial_radius', uiType='float', displayName='Initial Radius', uiDict=uiDict)                        
                                
                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()
Esempio n. 27
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="Pixel Samples", numberOfFields=1),
                                          attrName="samples")
                        self.__addControl(ui=pm.intFieldGrp(
                            label="Render Passes", numberOfFields=1),
                                          attrName="passes")
                        self.__addControl(ui=pm.intFieldGrp(label="Tile Size",
                                                            numberOfFields=1),
                                          attrName="tileSize")

                with pm.frameLayout(label="Shading",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout("appleseedColumnLayout",
                                         adjustableColumn=True,
                                         width=columnWidth):
                        attr = pm.Attribute(
                            "appleseedRenderGlobals.diagnostics")
                        menuItems = [
                            (i, v)
                            for i, v in enumerate(attr.getEnums().keys())
                        ]
                        self.__addControl(ui=pm.attrEnumOptionMenuGrp(
                            label="Override Shaders",
                            enumeratedItem=menuItems),
                                          attrName="diagnostics")

                with pm.frameLayout(label="Lighting",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout("appleseedColumnLayout",
                                         adjustableColumn=True,
                                         width=columnWidth):
                        attr = pm.Attribute(
                            "appleseedRenderGlobals.lightingEngine")
                        menuItems = [
                            (i, v)
                            for i, v in enumerate(attr.getEnums().keys())
                        ]
                        self.__addControl(ui=pm.attrEnumOptionMenuGrp(
                            label="Lighting Engine", enumeratedItem=menuItems),
                                          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="Caustics"),
                                    attrName="caustics")
                                self.__addControl(ui=pm.floatFieldGrp(
                                    label="Max Ray Intensity",
                                    numberOfFields=1),
                                                  attrName="maxRayIntensity")

                with pm.frameLayout(label="Environment",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout("appleseedColumnLayout",
                                         adjustableColumn=True,
                                         width=columnWidth):
                        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(label=envLight)

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

                        self.__addControl(
                            ui=pm.checkBoxGrp(label="Background Emits Light"),
                            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")

        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()
Esempio n. 28
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()     
Esempio n. 29
0
    def UI_refreshAttributes(self):
        """Display the attributes of the shader that has been selected in the list
        
        Keyword arguments:
        none
        
        Return:
        none
        """
        
        # Set the current shader we're working on
        self.selectedShader = self.sListWidgets['list'].getSelectItem()[0]
        
        # Remove previous shader attributes
        self.UI_removeAttributes()
   
        # Main layout for shader attributes
        self.sAttrWidgets['layout'] = pc.columnLayout(parent=self.globalWidgets['sAttrLayout'], cal="left")
        
        # Buttons for selecting shader in AA and assign material to current selection
        self.sAttrWidgets['selectedShaderLayout'] = pc.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 50), (2, 170)], parent=self.sAttrWidgets['layout'])
        pc.text(l="Selected: ", parent=self.sAttrWidgets['selectedShaderLayout'])
        pc.textField(enable=False, parent=self.sAttrWidgets['selectedShaderLayout'], text=self.selectedShader)

        self.sAttrWidgets['miscButtonsLayout'] = pc.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 50), (2, 60), (3, 120)], parent=self.sAttrWidgets['layout'])
        pc.button(label="Select", parent=self.sAttrWidgets['miscButtonsLayout'], c=self.Maya_selectShader)
        pc.button(label="Rename", parent=self.sAttrWidgets['miscButtonsLayout'], c=self.Maya_renameShader)
        pc.button(label="Assign to selection", parent=self.sAttrWidgets['miscButtonsLayout'], c=self.Maya_assignToSelection)
        self.sAttrWidgets['miscButtonsLayout2'] = pc.rowColumnLayout(nc=2, cw=[(1,150)], parent=self.sAttrWidgets['layout'])
        pc.button(label="Select objects w/ mat", parent=self.sAttrWidgets['miscButtonsLayout2'], c=self.Maya_selectObjWithMat)
    
        # DIFFUSE
        ###################
        # Label
        self.sAttrWidgets['diffuseLabelLayout'] = pc.rowColumnLayout(nc=2, columnAlign=(1, 'center'), columnAttach=(2, 'both', 0), columnWidth=[(1, 60), (2, 150)], parent=self.sAttrWidgets['layout'])
        pc.text(label='Diffuse ', fn='boldLabelFont', parent=self.sAttrWidgets['diffuseLabelLayout'])
        pc.separator(height=20, style='in', parent=self.sAttrWidgets['diffuseLabelLayout'])
        
        # Controls
        self.sAttrWidgets['diffuseControlsLayout'] = pc.rowColumnLayout(nc=2, cw=[(1, 200), (2, 30)], parent=self.sAttrWidgets['layout'])
        pc.attrColorSliderGrp(label="Color", w=200, cw=[(1, 50), (2, 30)], at='%s.color' % self.selectedShader, parent=self.sAttrWidgets['diffuseControlsLayout'])
        self.dynamicButtons['colorToggle'] = pc.iconTextButton(style='iconOnly', h=20, image1="disableForRendering.png", c=partial(self.Maya_toggleConnection, 'color'))
        pc.attrFieldSliderGrp(label="Weight", w=200, cw=[(1, 50), (2, 50)], min=0, max=1.0, at='%s.Kd' % self.selectedShader, pre=3, parent=self.sAttrWidgets['diffuseControlsLayout'])
        pc.text(l="")
        pc.attrFieldSliderGrp(label="Rough", w=200, cw=[(1, 50), (2, 50)], min=0, max=1.0, at='%s.diffuseRoughness' % self.selectedShader, pre=3, parent=self.sAttrWidgets['diffuseControlsLayout'])
        pc.text(l="")
        
        # SPECULAR
        ###################
        # Label
        self.sAttrWidgets['specularLabelLayout'] = pc.rowColumnLayout(numberOfColumns=2, columnAlign=(1, 'center'), columnAttach=(2, 'both', 0), columnWidth=[(1, 60), (2, 150)], parent=self.sAttrWidgets['layout'])
        pc.text(label='Specular ', fn='boldLabelFont', parent=self.sAttrWidgets['specularLabelLayout'])
        pc.separator(height=20, style='in')
        
        # Controls
        self.sAttrWidgets['specularControlsLayout'] = pc.rowColumnLayout(nc=2, cw=[(1, 200), (2, 30)], parent=self.sAttrWidgets['layout'])
        pc.attrColorSliderGrp(label="Color", w=200, cw=[(1, 50), (2, 30)], at='%s.KsColor' % self.selectedShader, parent=self.sAttrWidgets['specularControlsLayout'])
        self.dynamicButtons['KsColorToggle'] = pc.iconTextButton(style='iconOnly', h=20, image1="disableForRendering.png", c=partial(self.Maya_toggleConnection, 'KsColor'))
        pc.attrFieldSliderGrp(label="Weight", w=200, cw=[(1, 50), (2, 50)], pre=3, at='%s.Ks' % self.selectedShader, parent=self.sAttrWidgets['specularControlsLayout'])
        pc.text(l="")
        pc.attrEnumOptionMenuGrp(label="BRDF", w=200, cw=[(1, 50)], ei=[(0, 'stretched_phong'), (1, 'ward_duer'), (2, 'cook_torrance')], at='%s.specularBrdf' % self.selectedShader, parent=self.sAttrWidgets['specularControlsLayout'])
        pc.text(l="")
        pc.attrFieldSliderGrp(label="Rough", w=200, cw=[(1, 50), (2, 50)], pre=4, at='%s.specularRoughness' % self.selectedShader, parent=self.sAttrWidgets['specularControlsLayout'])
        self.dynamicButtons['specularRoughnessToggle'] = pc.iconTextButton(style='iconOnly', h=20, image1="disableForRendering.png", c=partial(self.Maya_toggleConnection, 'specularRoughness'))
        pc.attrEnumOptionMenuGrp(label="Fresnel", w=200, cw=[(1, 50)], ei=[(0, 'No'), (1, 'Yes')], at='%s.specularFresnel' % self.selectedShader, parent=self.sAttrWidgets['specularControlsLayout'])
        pc.text(l="")
        pc.attrFieldSliderGrp(label="% at N", w=200, cw=[(1, 50), (2, 50)], pre=3, at='%s.Ksn' % self.selectedShader, parent=self.sAttrWidgets['specularControlsLayout'])
        self.dynamicButtons['reflectance'] = pc.iconTextButton(style='iconOnly', h=20, image1="calculator.png", c=self.Maya_calculateReflectance)
        # BUMP MAPPING
        ###################
        # Label
        self.sAttrWidgets['bumpLabelLayout'] = pc.rowColumnLayout(numberOfColumns=2, columnAlign=(1, 'center'), columnAttach=(2, 'both', 0), columnWidth=[(1, 60), (2, 150)], parent=self.sAttrWidgets['layout'])
        pc.text(label='Bump ', fn='boldLabelFont', parent=self.sAttrWidgets['bumpLabelLayout'])
        pc.separator(height=20, style='in')
        
        # Controls
        self.sAttrWidgets['bumpControlsLayout'] = pc.rowColumnLayout(nc=2, cw=[(1, 200), (2, 30)], columnAlign=[(1,'right')], parent=self.sAttrWidgets['layout'])
        pc.attrNavigationControlGrp(label="Map", cw=[(1, 50), (2, 120)], at='%s.normalCamera' % self.selectedShader, parent=self.sAttrWidgets['bumpControlsLayout'])
        self.dynamicButtons['normalCameraToggle'] = pc.iconTextButton(style='iconOnly', h=20, image1="disableForRendering.png", c=partial(self.Maya_toggleConnection, 'normalCamera'))
        pc.button(l='Select bump node', p=self.sAttrWidgets['bumpControlsLayout'], w=50, c=self.Maya_selectBumpNode)

        # Refresh connection state icons
        self.UI_refreshIcons()
Esempio n. 30
0
    def OpenMayaCommonGlobalsCreateTab(self):
        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:
            with pm.columnLayout("commonTabColumn",
                                 adjustableColumn=True,
                                 width=400) as ctc:
                with pm.frameLayout(label="File Output",
                                    collapsable=True,
                                    collapse=False):
                    with pm.columnLayout(adjustableColumn=True, width=400):
                        uiDict['fileNamePrefixField'] = pm.textFieldGrp(
                            label="File Name Prefix:",
                            cc=self.updateFileNamePrefix)
                        pm.connectControl(
                            uiDict['fileNamePrefixField'],
                            pm.SCENE.defaultRenderGlobals.imageFilePrefix,
                            index=2)
                        pm.attrEnumOptionMenuGrp(
                            "imageMenuMayaSW",
                            label="Image Format:",
                            attribute=self.renderNode.imageFormat)
                        formats = self.renderNode.imageFormat.getEnums().keys()
                        if "EXR" in formats:
                            with pm.columnLayout(
                                    "exrOptionsLayout",
                                    adjustableColumn=True,
                                    width=400) as uiDict['exrOptionsLayout']:
                                self.addRenderGlobalsUIElement(
                                    attName='exrDataTypeHalf',
                                    uiType='bool',
                                    displayName='Half Float',
                                    default='false',
                                    uiDict={})
                                self.addRenderGlobalsUIElement(
                                    attName='exrMergeChannels',
                                    uiType='bool',
                                    displayName='Merge passes',
                                    default='true',
                                    uiDict={})

                        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='byFrameStep',
                            uiType='float',
                            displayName='By Frame:',
                            uiDict=uiDict)

                with pm.frameLayout(label="Renderable Cameras",
                                    collapsable=True,
                                    collapse=False) as uiDict['camerasFrame']:
                    self.createCamerasUI(uiDict)

                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])

                        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"))

                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.OpenMayaCommonGlobalsUpdateTab()
        self.updateExrUI()
        self.updateImageSize(["width"])
        self.updateFileNamePrefix()
        pm.scriptJob(attributeChange=(self.renderNode.imageFormat,
                                      self.updateExrUI),
                     parent=parentForm)
        defrw = pm.SCENE.defaultResolution.width
        defrh = pm.SCENE.defaultResolution.height
        defrd = pm.SCENE.defaultResolution.deviceAspectRatio
        pm.scriptJob(attributeChange=(defrw,
                                      pm.Callback(self.updateImageSize,
                                                  ["width"])),
                     runOnce=True)
        pm.scriptJob(attributeChange=(defrh,
                                      pm.Callback(self.updateImageSize,
                                                  ["height"])),
                     runOnce=True)
        pm.scriptJob(attributeChange=(defrd,
                                      pm.Callback(self.updateImageSize,
                                                  ["devAsp"])),
                     runOnce=True)
        pm.scriptJob(event=("SelectionChanged", self.selectionChangedEvent))