def __init__(self, aovNode=None): self.waitingToRefresh = False self.aovControls = [] self.optionMenus = [] self.aovRows = {} self.renderOptions = aovs.AOVInterface( ) if aovNode is None else aovNode self.mainCol = pm.cmds.columnLayout('arnoldAOVMainColumn') # global drivers pm.cmds.frameLayout('arnoldDisplayDriverFrame', label='Default Drivers', width=WIDTH, collapsable=True, collapse=True) pm.cmds.columnLayout(adj=True) for attr in self.renderOptions.node.drivers: driver = attr.inputs() if driver: pm.cmds.rowLayout(nc=2, columnAttach2=['both', 'right'], adjustableColumn=1, rowAttach=[2, 'top', 5]) pm.cmds.columnLayout(adj=True) templates.createTranslatorMenu(driver[0], label=utils.prettify( driver[0].name()), nodeType='aiAOVDriver') pm.cmds.setParent('..') pm.cmds.symbolButton(image="navButtonConnected.png", command=Callback(pm.select, driver)) pm.cmds.setParent('..') pm.setParent(self.mainCol) pm.cmds.frameLayout('arnoldAOVBrowserFrame', label='AOV Browser', width=WIDTH, collapsable=True, collapse=False, height=200) self.browser = AOVBrowser(self.renderOptions) pm.setParent(self.mainCol) pm.cmds.frameLayout('arnoldAOVPrimaryFrame', label='AOVs', width=WIDTH, collapsable=True, collapse=False) self.aovCol = pm.cmds.columnLayout('arnoldAOVListColumn', adj=True) pm.cmds.rowLayout('arnoldAOVButtonRow', nc=3, columnWidth3=[140, 100, 100], columnAttach3=['right', 'both', 'both']) pm.cmds.text(label='') pm.cmds.button(label='Add Custom', c=lambda *args: shaderTemplate.newAOVPrompt()) pm.cmds.button(label='Delete All', c=lambda *args: (self.renderOptions.removeAOVs(self.aovRows.keys()), \ hooks.setupDefaultAOVs(self.renderOptions))) pm.setParent('..') # rowLayout pm.cmds.separator(style='in') pm.rowLayout(nc=4, columnWidth4=[130, 66, 80, 40], columnAttach4=['both', 'both', 'both', 'both']) pm.cmds.text(label='name') pm.cmds.text(label='data') pm.cmds.text(label='driver') pm.cmds.text(label='filter') pm.cmds.setParent('..') # rowLayout pm.cmds.separator(style='in') # pm.text(_uiName('prefixLbl'), align='center', label='Prefix', parent=form) # pm.textField(_uiName('prefixFld'), enable=False, text='', parent=form, changeCommand=Callback(setAOVPrefix, aovnode)) self.browser.populate() # add all control rows self.addRows() aovs.addAOVChangedCallback(self.refresh, 'aoveditor') # update AOV imageFormat of all rows when the default imageFormat changes. a scriptJob will suffice here pm.scriptJob(parent=self.aovCol, attributeChange=[ self.renderOptions.node.imageFormat.name(), lambda *args: pm.evalDeferred(self.refresh) ])
def __init__(self, aovNode=None): self.waitingToRefresh = False self.aovControls = [] self.optionMenus = [] self.aovRows = {} self.renderOptions = aovs.AOVInterface() if aovNode is None else aovNode self.mainCol = pm.cmds.columnLayout('arnoldAOVMainColumn') # global drivers pm.cmds.frameLayout('arnoldDisplayDriverFrame', label='Default Drivers', width=WIDTH, collapsable=True, collapse=True) pm.cmds.columnLayout(adj=True) for attr in self.renderOptions.node.drivers: driver = attr.inputs() if driver: pm.cmds.rowLayout(nc=2, columnAttach2=['both', 'right'], adjustableColumn=1, rowAttach=[2, 'top', 5]) pm.cmds.columnLayout(adj=True) templates.createTranslatorMenu(driver[0], label=utils.prettify(driver[0].name()), nodeType='aiAOVDriver') pm.cmds.setParent('..') pm.cmds.symbolButton(image="navButtonConnected.png", command=Callback(pm.select, driver)) pm.cmds.setParent('..') pm.setParent(self.mainCol) pm.cmds.frameLayout('arnoldAOVBrowserFrame', label='AOV Browser', width=WIDTH, collapsable=True, collapse=False, height=200) self.browser = AOVBrowser(self.renderOptions) pm.setParent(self.mainCol) pm.cmds.frameLayout('arnoldAOVPrimaryFrame', label='AOVs', width=WIDTH, collapsable=True, collapse=False) self.aovCol = pm.cmds.columnLayout('arnoldAOVListColumn', adj=True) pm.cmds.rowLayout('arnoldAOVButtonRow', nc=3, columnWidth3=[140, 100, 100], columnAttach3=['right', 'both', 'both']) pm.cmds.text(label='') pm.cmds.button(label='Add Custom', c=lambda *args: shaderTemplate.newAOVPrompt()) pm.cmds.button(label='Delete All', c=lambda *args: (self.renderOptions.removeAOVs(self.aovRows.keys()), \ hooks.setupDefaultAOVs(self.renderOptions))) pm.setParent('..') # rowLayout pm.cmds.separator(style='in') pm.rowLayout(nc=4, columnWidth4=[130, 66, 80, 40], columnAttach4=['both', 'both', 'both', 'both']) pm.cmds.text(label='name') pm.cmds.text(label='data') pm.cmds.text(label='driver') pm.cmds.text(label='filter') pm.cmds.setParent('..') # rowLayout pm.cmds.separator(style='in') # pm.text(_uiName('prefixLbl'), align='center', label='Prefix', parent=form) # pm.textField(_uiName('prefixFld'), enable=False, text='', parent=form, changeCommand=Callback(setAOVPrefix, aovnode)) self.browser.populate() # add all control rows self.addRows() aovs.addAOVChangedCallback(self.refresh, 'aoveditor') # update AOV imageFormat of all rows when the default imageFormat changes. a scriptJob will suffice here pm.scriptJob(parent=self.aovCol, attributeChange=[self.renderOptions.node.imageFormat.name(), lambda *args: pm.evalDeferred(self.refresh)])
def createArnoldSamplingSettings(): pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) pm.columnLayout(adjustableColumn=True) pm.text("textAASamples", font="smallBoldLabelFont", align="left") pm.text("textGISamples", font="smallBoldLabelFont", align="left") pm.text("textGlossySamples", font="smallBoldLabelFont", align="left") pm.text("textRefractionSamples", font="smallBoldLabelFont", align="left") pm.text("textTotalSamples", font="smallBoldLabelFont", align="left") pm.separator() pm.intSliderGrp( "ss_AA_samples", label="Camera (AA)", minValue=1, maxValue=10, fieldMinValue=-10, fieldMaxValue=100, cc=lambda *args: pm.evalDeferred(updateComputeSamples), ) pm.connectControl("ss_AA_samples", "defaultArnoldRenderOptions.AASamples", index=1) pm.connectControl("ss_AA_samples", "defaultArnoldRenderOptions.AASamples", index=2) pm.connectControl("ss_AA_samples", "defaultArnoldRenderOptions.AASamples", index=3) pm.intSliderGrp( "ss_hemi_samples", label="Diffuse", maxValue=10, fieldMaxValue=100, cc=lambda *args: pm.evalDeferred(updateComputeSamples), ) pm.connectControl("ss_hemi_samples", "defaultArnoldRenderOptions.GIDiffuseSamples", index=1) pm.connectControl("ss_hemi_samples", "defaultArnoldRenderOptions.GIDiffuseSamples", index=2) pm.connectControl("ss_hemi_samples", "defaultArnoldRenderOptions.GIDiffuseSamples", index=3) pm.intSliderGrp( "ss_glossy_samples", label="Glossy", maxValue=10, fieldMaxValue=100, cc=lambda *args: pm.evalDeferred(updateComputeSamples), ) pm.connectControl("ss_glossy_samples", "defaultArnoldRenderOptions.GIGlossySamples", index=1) pm.connectControl("ss_glossy_samples", "defaultArnoldRenderOptions.GIGlossySamples", index=2) pm.connectControl("ss_glossy_samples", "defaultArnoldRenderOptions.GIGlossySamples", index=3) pm.intSliderGrp( "ss_refraction_samples", label="Refraction", maxValue=10, fieldMaxValue=100, cc=lambda *args: pm.evalDeferred(updateComputeSamples), ) pm.connectControl("ss_refraction_samples", "defaultArnoldRenderOptions.GIRefractionSamples", index=1) pm.connectControl("ss_refraction_samples", "defaultArnoldRenderOptions.GIRefractionSamples", index=2) pm.connectControl("ss_refraction_samples", "defaultArnoldRenderOptions.GIRefractionSamples", index=3) pm.attrControlGrp("ss_sss_bssrdf_samples", label="SSS", attribute="defaultArnoldRenderOptions.sss_bssrdf_samples") pm.attrControlGrp( "ss_volume_indirect_samples", label="Volume Indirect", attribute="defaultArnoldRenderOptions.volume_indirect_samples", ) pm.separator() pm.attrControlGrp( "ss_lock_sampling_noise", label="Lock Sampling Pattern", attribute="defaultArnoldRenderOptions.lock_sampling_noise", ) pm.attrControlGrp( "ss_use_autobump", label="Use Autobump in SSS", attribute="defaultArnoldRenderOptions.sssUseAutobump", annotation="WARNING : Enabling this checkbox triples shader evaluations in SSS.", ) pm.frameLayout(label="Clamping", collapse=True) pm.checkBoxGrp("ss_clamp_sample_values", cc=updateSamplingSettings, label="Clamp Sample Values") pm.connectControl("ss_clamp_sample_values", "defaultArnoldRenderOptions.use_sample_clamp", index=1) pm.connectControl("ss_clamp_sample_values", "defaultArnoldRenderOptions.use_sample_clamp", index=2) pm.checkBoxGrp("ss_clamp_sample_values_AOVs", cc=updateSamplingSettings, label="Affect AOVs") pm.connectControl("ss_clamp_sample_values_AOVs", "defaultArnoldRenderOptions.use_sample_clamp_AOVs", index=1) pm.connectControl("ss_clamp_sample_values_AOVs", "defaultArnoldRenderOptions.use_sample_clamp_AOVs", index=2) pm.attrControlGrp("ss_max_value", label="Max Value", attribute="defaultArnoldRenderOptions.AASampleClamp") pm.setParent("..") pm.frameLayout(label="Filter", collapse=True) createTranslatorMenu("defaultArnoldFilter", label="Type", nodeType="aiAOVFilter", default="gaussian") pm.setParent("..") pm.setParent("..") # column layout pm.setUITemplate(popTemplate=True) updateArnoldFilterOptions()