예제 #1
0
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)
예제 #2
0

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")
예제 #3
0
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" )
예제 #4
0
    
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",
예제 #5
0
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)