def createOptions(): """ override this with your own function to set defaults """ import mtoa.aovs as aovs import mtoa.hooks as hooks # the shared option ensures that it is only created if it does not exist options = pm.createNode('aiOptions', skipSelect=True, shared=True, name='defaultArnoldRenderOptions') filterNode = pm.createNode('aiAOVFilter', name='defaultArnoldFilter', skipSelect=True, shared=True) driverNode = pm.createNode('aiAOVDriver', name='defaultArnoldDriver', skipSelect=True, shared=True) displayDriverNode = pm.createNode('aiAOVDriver', name='defaultArnoldDisplayDriver', skipSelect=True, shared=True) if (filterNode or driverNode) and not options: options = pm.PyNode('defaultArnoldRenderOptions') # options previously existed, so we need to upgrade upgradeAOVOutput(options, filterNode, driverNode) # if we're just creating the options node, then be sure to connect up the driver and filter if filterNode: # newly created default filter hooks.setupFilter(filterNode) else: filterNode = pm.PyNode('defaultArnoldFilter') if driverNode: # newly created default driver hooks.setupDriver(driverNode) else: driverNode = pm.PyNode('defaultArnoldDriver') if options: # newly created options hooks.setupDefaultAOVs(aovs.AOVInterface(options)) hooks.setupOptions(options) pm.setAttr('defaultArnoldRenderOptions.version', str(cmds.pluginInfo( 'mtoa', query=True, version=True))) else: options = pm.PyNode('defaultArnoldRenderOptions') if displayDriverNode: # options exist, but not display driver: upgrade from older version of mtoa hooks.setupDefaultAOVs(aovs.AOVInterface(options)) if displayDriverNode: # newly created default driver displayDriverNode.aiTranslator.set('maya') # GUI only displayDriverNode.outputMode.set(0) hooks.setupDriver(displayDriverNode) displayDriverNode.message.connect(options.drivers, nextAvailable=True) elif not options.drivers.inputs(): pm.connectAttr('defaultArnoldDisplayDriver.message', options.drivers, nextAvailable=True) try: pm.connectAttr('%s.message' % filterNode.name(), '%s.filter' % options.name(), force=True) except: pass try: pm.connectAttr('%s.message' % driverNode.name(), '%s.driver' % options.name(), force=True) except: pass
def createOptions(): """ override this with your own function to set defaults """ import mtoa.aovs as aovs import mtoa.hooks as hooks # the shared option ensures that it is only created if it does not exist options = pm.createNode('aiOptions', skipSelect=True, shared=True, name='defaultArnoldRenderOptions') filterNode = pm.createNode('aiAOVFilter', name='defaultArnoldFilter', skipSelect=True, shared=True) driverNode = pm.createNode('aiAOVDriver', name='defaultArnoldDriver', skipSelect=True, shared=True) displayDriverNode = pm.createNode('aiAOVDriver', name='defaultArnoldDisplayDriver', skipSelect=True, shared=True) if (filterNode or driverNode) and not options: options = pm.PyNode('defaultArnoldRenderOptions') # options previously existed, so we need to upgrade upgradeAOVOutput(options, filterNode, driverNode) # if we're just creating the options node, then be sure to connect up the driver and filter if filterNode: # newly created default filter hooks.setupFilter(filterNode) else: filterNode = pm.PyNode('defaultArnoldFilter') if driverNode: # newly created default driver hooks.setupDriver(driverNode) else: driverNode = pm.PyNode('defaultArnoldDriver') if options: # newly created options hooks.setupDefaultAOVs(aovs.AOVInterface(options)) hooks.setupOptions(options) pm.setAttr('defaultArnoldRenderOptions.version', str(cmds.pluginInfo('mtoa', query=True, version=True))) else: options = pm.PyNode('defaultArnoldRenderOptions') if displayDriverNode: # options exist, but not display driver: upgrade from older version of mtoa hooks.setupDefaultAOVs(aovs.AOVInterface(options)) if displayDriverNode: # newly created default driver displayDriverNode.aiTranslator.set('maya') # GUI only displayDriverNode.outputMode.set(0) hooks.setupDriver(displayDriverNode) displayDriverNode.message.connect(options.drivers, nextAvailable=True) elif not options.drivers.inputs(): pm.connectAttr('defaultArnoldDisplayDriver.message', options.drivers, nextAvailable=True) try: pm.connectAttr('%s.message' % filterNode.name(), '%s.filter' % options.name(), force=True) except: pass try: pm.connectAttr('%s.message' % driverNode.name(), '%s.driver' % options.name(), force=True) except: pass
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) ])