def register(): logger.info("Registering appleseed renderer.") # Register render. pm.renderer("appleseed", rendererUIName="appleseed") createRenderMelProcedures() # Final Render procedures. pm.renderer( "appleseed", edit=True, renderProcedure="appleseedRenderProcedure", commandRenderProcedure="appleseedBatchRenderProcedure", batchRenderProcedure="appleseedBatchRenderProcedure", cancelBatchRenderProcedure="appleseedCancelBatchRenderProcedure", renderRegionProcedure="mayaRenderRegion") # Ipr Render procedures. pm.renderer( "appleseed", edit=True, iprRenderProcedure="appleseedIprRenderProcedure", isRunningIprProcedure="appleseedIsRunningIprRenderProcedure", startIprRenderProcedure="appleseedStartIprRenderProcedure", stopIprRenderProcedure="appleseedStopIprRenderProcedure", refreshIprRenderProcedure="appleseedRefreshIprRenderProcedure", pauseIprRenderProcedure="appleseedPauseIprRenderProcedure", changeIprRegionProcedure="appleseedChangeIprRegionProcedure", ) # Globals createRenderTabsMelProcedures() renderSettingsBuiltCallback('appleseed') pm.renderer("appleseed", edit=True, addGlobalsNode="defaultRenderGlobals") pm.renderer("appleseed", edit=True, addGlobalsNode="defaultResolution") pm.renderer("appleseed", edit=True, addGlobalsNode="appleseedRenderGlobals") pm.callbacks(addCallback=renderSettingsBuiltCallback, hook="renderSettingsBuilt", owner="appleseed") addRenderGlobalsScriptJobs() # AE templates. pm.callbacks(addCallback=appleseedAETemplateCallback, hook="AETemplateCustomContent", owner="appleseed") # Manually load templates in aetemplate folder. templatesDir = os.path.join(thisDir, "aetemplate") logger.debug("Registering AETemplates in %s" % templatesDir) for file in os.listdir(templatesDir): if fnmatch.fnmatch(file, '*template.py'): templateModule = file.replace(".py", "") logger.debug("Registering AE template %s" % templateModule) mel.eval('python("import appleseedMaya.aetemplate.%s")' % templateModule) # Hypershade callbacks asHypershadeCallbacks = [ ("hyperShadePanelBuildCreateMenu", hyperShadePanelBuildCreateMenuCallback), ("hyperShadePanelBuildCreateSubMenu", hyperShadePanelBuildCreateSubMenuCallback), ("hyperShadePanelPluginChange", hyperShadePanelPluginChangeCallback), ("createRenderNodeSelectNodeCategories", createRenderNodeSelectNodeCategoriesCallback), ("createRenderNodePluginChange", createRenderNodePluginChangeCallback), ("renderNodeClassification", renderNodeClassificationCallback), ("createRenderNodeCommand", createRenderNodeCallback), ("nodeCanBeUsedAsMaterial", nodeCanBeUsedAsMaterialCallback), ("buildRenderNodeTreeListerContent", buildRenderNodeTreeListerContentCallback) ] for h, c in asHypershadeCallbacks: logger.debug("Adding {0} callback.".format(h)) pm.callbacks(addCallback=c, hook=h, owner="appleseed") # appleseed translator. createTranslatorMelProcedures() # Logos. pm.renderer("appleseed", edit=True, logoImageName="appleseed.png") mel.eval(''' global proc appleseedLogoCallback() { evalDeferred("showHelp -absolute \\\"http://appleseedhq.net\\\""); } ''') pm.renderer("appleseed", edit=True, logoCallbackProcedure="appleseedLogoCallback") # Menu if om.MGlobal.mayaState() == om.MGlobal.kInteractive: createMenu() # XGen try: import xgenm as xg for h, c in asXGenCallbacks: xg.registerCallback(h, c) logger.info("appleseedMaya: initialized xgenseed") except Exception as e: logger.info( "appleseedMaya: could not initialize xgenseed. error = %s" % e)
class xgmDescriptionTemplate(templates.ShapeTranslatorTemplate): def setup(self): self.commonShapeAttributes() self.addSeparator() self.addControl("renderMode", label="Render Mode") self.addSeparator() self.addControl("motionBlurOverride", label="Motion Blur Override") self.addControl("motionBlurMode", label="Motion Blur Mode") self.addControl("motionBlurSteps", label="Motion_Blur_Steps") self.addControl("motionBlurFactor", label="Motion Blur Factor") self.addControl("motionBlurMult", label="Motion Blur Multiplier") self.addSeparator() self.addControl("aiMinPixelWidth", label="Min Pixel Width") self.addControl("aiMode", label="Curve Mode") self.addControl("aiUseAuxRenderPatch", label="Use Aux Render Patch") self.addControl("aiAuxRenderPatch", label="Auxilary Render Patch") templates.registerTranslatorUI(xgmDescriptionTemplate, "xgmDescription", "xgenTranslator") # these are used to build the "renderer" callbacks to slot arnold settings into the xgen GUI. the values of these controls # are stored on each description node and can be parsed from there by the translator. # this is mainly to make arnold fit into the XGen workflow better. xg.registerCallback("RenderAPIRendererTabUIInit", "xgenArnoldUI.xgArnoldUI") xg.registerCallback("RenderAPIRendererTabUIRefresh", "xgenArnoldUI.xgArnoldRefresh") if xg.xgGlobal.DescriptionEditor is not None: xg.xgGlobal.DescriptionEditor.refresh("Full")
import xgenm as xg class xgmDescriptionTemplate(templates.ShapeTranslatorTemplate): def setup(self): self.commonShapeAttributes() self.addSeparator() self.addControl("renderMode", label="Render Mode") self.addSeparator() self.addControl("motionBlurOverride", label="Motion Blur Override") self.addControl("motionBlurMode", label="Motion Blur Mode") self.addControl("motionBlurSteps", label="Motion_Blur_Steps") self.addControl("motionBlurFactor", label="Motion Blur Factor") self.addControl("motionBlurMult", label="Motion Blur Multiplier") self.addSeparator() self.addControl("aiMinPixelWidth", label="Min Pixel Width") self.addControl("aiMode", label= "Curve Mode") self.addControl("aiUseAuxRenderPatch", label = "Use Aux Render Patch") self.addControl("aiAuxRenderPatch", label= "Auxilary Render Patch") templates.registerTranslatorUI(xgmDescriptionTemplate, "xgmDescription", "xgenTranslator") # these are used to build the "renderer" callbacks to slot arnold settings into the xgen GUI. the values of these controls # are stored on each description node and can be parsed from there by the translator. # this is mainly to make arnold fit into the XGen workflow better. xg.registerCallback( "RenderAPIRendererTabUIInit", "xgenArnoldUI.xgArnoldUI" ) xg.registerCallback( "RenderAPIRendererTabUIRefresh", "xgenArnoldUI.xgArnoldRefresh" ) if xg.xgGlobal.DescriptionEditor is not None: xg.xgGlobal.DescriptionEditor.refresh( "Full" )
def xgaiArchiveExportInfo(selfid) : self = castSelf(selfid) self.archiveDirs.append( "ass" ) self.archiveLODBeforeExt.append( ".${FRAME}.ass" ) self.archiveLODBeforeExt.append( ".${FRAME}.ass.gz" ) self.archiveLODBeforeExt.append( ".ass" ) self.archiveLODBeforeExt.append( ".ass.gz" ) #def xgaiArchiveExportInit(selfid) : # print "##### xgaiArchiveExportInit ",selfid try: import xgenm as xg xg.registerCallback( "ArchiveExport", "mtoa.cmds.rendererCallbacks.xgaiArchiveExport" ) xg.registerCallback( "ArchiveExportInfo", "mtoa.cmds.rendererCallbacks.xgaiArchiveExportInfo" ) #xg.registerCallback( "ArchiveExportInit", "mtoa.cmds.rendererCallbacks.xgaiArchiveExportInit" ) except: pass # Add the callbacks def registerCallbacks(): if cmds.about(batch=True): return cmds.callbacks(addCallback=aiHyperShadePanelBuildCreateMenuCallback, hook="hyperShadePanelBuildCreateMenu",
def register(): logger.info("Registering appleseed renderer.") # Register render. pm.renderer("appleseed", rendererUIName="Appleseed") # Final Render procedures. createRenderMelProcedures() pm.renderer( "appleseed", edit=True, renderProcedure="appleseedRenderProcedure", commandRenderProcedure="appleseedBatchRenderProcedure", batchRenderProcedure="appleseedBatchRenderProcedure", cancelBatchRenderProcedure="appleseedCancelBatchRenderProcedure", renderRegionProcedure="mayaRenderRegion" ) # Ipr Render procedures. pm.renderer( "appleseed", edit=True, iprRenderProcedure="appleseedIprRenderProcedure", isRunningIprProcedure="appleseedIsRunningIprRenderProcedure", startIprRenderProcedure="appleseedStartIprRenderProcedure", stopIprRenderProcedure="appleseedStopIprRenderProcedure", refreshIprRenderProcedure="appleseedRefreshIprRenderProcedure", pauseIprRenderProcedure="appleseedPauseIprRenderProcedure", changeIprRegionProcedure="appleseedChangeIprRegionProcedure", ) # Globals createRenderTabsMelProcedures() addRenderGlobalsScriptJobs() pm.renderer("appleseed", edit=True, addGlobalsNode="defaultRenderGlobals") pm.renderer("appleseed", edit=True, addGlobalsNode="defaultResolution") pm.renderer("appleseed", edit=True, addGlobalsNode="appleseedRenderGlobals") mel.eval('registerUpdateRendererUIProc("evalDeferred -lp appleseedCurrentRendererChanged");') pm.renderer( "appleseed", edit=True, addGlobalsTab=( "Common", "createMayaSoftwareCommonGlobalsTab", "appleseedUpdateCommonTabProcedure" ) ) pm.renderer( "appleseed", edit=True, addGlobalsTab=( "Appleseed", "appleseedCreateAppleseedTabProcedure", "appleseedUpdateAppleseedTabProcedure" ) ) # AE templates. pm.callbacks( addCallback=appleseedAETemplateCallback, hook="AETemplateCustomContent", owner="appleseed") # Manually load templates in aetemplate folder. templatesDir = os.path.join(thisDir, "aetemplate") logger.debug("Registering AETemplates in %s" % templatesDir) for file in os.listdir(templatesDir): if fnmatch.fnmatch(file, '*template.py'): templateModule = file.replace(".py", "") logger.debug("Registering AE template %s" % templateModule) mel.eval('python("import appleseedMaya.aetemplate.%s")' % templateModule) # Hypershader callbacks pm.callbacks( addCallback=hyperShadePanelBuildCreateMenuCallback, hook="hyperShadePanelBuildCreateMenu", owner="appleseed" ) pm.callbacks( addCallback=hyperShadePanelBuildCreateSubMenuCallback, hook="hyperShadePanelBuildCreateSubMenu", owner="appleseed" ) pm.callbacks( addCallback=buildRenderNodeTreeListerContentCallback, hook='buildRenderNodeTreeListerContent', owner="appleseed" ) pm.callbacks( addCallback=createRenderNodeCallback, hook='createRenderNodeCommand', owner="appleseed") pm.callbacks( addCallback=connectNodeToNodeOverrideCallback, hook='connectNodeToNodeOverrideCallback', owner="appleseed") # Appleseed translator. createTranslatorMelProcedures() # Logos. if appleseedIconsPath(): pm.renderer( "appleseed", edit=True, logoImageName=os.path.join(appleseedIconsPath(), "appleseed.png") ) mel.eval(''' global proc appleseedLogoCallback() { evalDeferred("showHelp -absolute \\\"http://appleseedhq.net\\\""); } ''' ) pm.renderer( "appleseed", edit=True, logoCallbackProcedure="appleseedLogoCallback" ) else: logger.info("appleseedMaya: skipping logo registration. Logo not found") # Menu if om.MGlobal.mayaState() == om.MGlobal.kInteractive: createMenu() # XGen try: import xgenm as xg xg.registerCallback("RenderAPIRendererTabUIInit" , "appleseedMaya.xgenseedui.xgseedUI" ) xg.registerCallback("RenderAPIRendererTabUIRefresh", "appleseedMaya.xgenseedui.xgseedRefresh" ) xg.registerCallback("PostDescriptionCreate" , "appleseedMaya.xgenseedui.xgseedOnCreateDescription" ) xg.registerCallback("ArchiveExport" , "appleseedMaya.xgenseed.xgseedArchiveExport") xg.registerCallback("ArchiveExportInfo", "appleseedMaya.xgenseed.xgseedArchiveExportInfo") xg.registerCallback("ArchiveExportInit", "appleseedMaya.xgenseed.xgseedArchiveExportInit") logger.info("appleseedMaya: initialized xgenseed") except Exception as e: logger.info("appleseedMaya: could not initialize xgenseed. error = %s" % e)