예제 #1
0
    def _updateSlider(self, sliderName, lightShape, attribute, state):
        # Checking for hidden attributes and skipping
        try:
            if pmc.Attribute('%s.%s' % (lightShape, attribute)).isHidden():
                pmc.attrFieldSliderGrp(sliderName, edit=True, visible=False)
                return
        except pmc.MayaAttributeError:
            pass

        if sliderName == 'lcColorSlider':
            pmc.attrColorSliderGrp(sliderName,
                                   edit=True,
                                   visible=True,
                                   at='%s.%s' % (lightShape, attribute))
            pmc.attrColorSliderGrp(sliderName, edit=True, cw4=[60, 70, 10, 10])
            pmc.attrColorSliderGrp(sliderName, edit=True, en=state)
            return

        if sliderName == 'lcScaleSlider':
            pmc.attrFieldGrp(sliderName,
                             edit=True,
                             cw4=[60, 65, 65, 65],
                             visible=True,
                             at='%s.%s' % (lightShape, attribute))
            pmc.attrFieldGrp(sliderName, edit=True, en=state)
            return

        pmc.attrFieldSliderGrp(sliderName, edit=True, cw=[1, 60])
        pmc.attrFieldSliderGrp(sliderName, edit=True, cw=[2, 70])

        try:
            pmc.attrFieldSliderGrp(sliderName,
                                   edit=True,
                                   visible=True,
                                   at='%s.%s' % (lightShape, attribute))
        except RuntimeError:
            pmc.attrFieldSliderGrp(sliderName, edit=True, visible=False)

        pmc.attrFieldSliderGrp(sliderName, edit=True, en=state)
예제 #2
0
    def _deleteExisting(self):

        for key, value in self.controller.iteritems():
            slider, name = value

            if slider == 'lcColorSlider' and pmc.attrColorSliderGrp(slider,
                                                                    ex=True):
                pmc.deleteUI(slider)
            elif slider == 'lcScaleSlider' and pmc.attrFieldGrp(slider,
                                                                ex=True):
                pmc.deleteUI(slider)
            else:
                if pmc.attrFieldSliderGrp(slider, ex=True):
                    pmc.deleteUI(slider)
예제 #3
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("..")
예제 #4
0
    def _addControls(self):
        self._deleteExisting()

        # Converting and Adding maya slider
        self.controlBoxLayout.addWidget(LightControl._addSeparator())
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrColorSliderGrp('lcColorSlider',
                                       label='{:>10}'.format('Color:'),
                                       cw4=[55, 60, 60, 40],
                                       visible=False)))

        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcTemperatureSlider',
                                       label='{:>10}'.format('Kelvin:'),
                                       pre=0,
                                       visible=False,
                                       min=-99999,
                                       max=99999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcIntensitySlider',
                                       label='{:>10}'.format('Intensity:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcExposureSlider',
                                       label='{:>10}'.format('Exposure:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcSpreadSlider',
                                       label='{:>10}'.format('Spread:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcRoundnessSlider',
                                       label='{:>10}'.format('Roundness:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcSoftEdgeSlider',
                                       label='{:>10}'.format('Soft Edge:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcConeAngleSlider',
                                       label='{:>10}'.format('Cone:'),
                                       pre=2,
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcPenumbraAngleSlider',
                                       label='{:>10}'.format('Penumbra:'),
                                       pre=2,
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcDropoffSlider',
                                       label='{:>10}'.format('Dropoff:'),
                                       pre=2,
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcSampleSlider',
                                       label='{:>10}'.format('Samples:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(LightControl._addSeparator())
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcDiffuseSlider',
                                       label='{:>10}'.format('Diffuse:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lsSpecularSlider',
                                       label='{:>10}'.format('Specular:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcSssSlider',
                                       label='{:>10}'.format('SSS:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcIndirectSlider',
                                       label='{:>10}'.format('Indirect:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldSliderGrp('lcVolumeSlider',
                                       label='{:>10}'.format('Volume:'),
                                       visible=False,
                                       min=-9999,
                                       max=9999)))
        self.controlBoxLayout.addWidget(LightControl._addSeparator())
        self.controlBoxLayout.addWidget(
            getQObject(
                pmc.attrFieldGrp('lcScaleSlider',
                                 label='{:>10}'.format('Scale:'),
                                 pre=3,
                                 visible=False)))
        self.controlBoxLayout.addWidget(LightControl._addSeparator())
        self.controlBoxLayout.addItem(
            QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding,
                                  QtWidgets.QSizePolicy.Expanding))
예제 #5
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")])
예제 #6
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("..")