def registerArnoldRenderer():
    try:
        alreadyRegistered = pm.renderer('arnold', exists=True)
        if not alreadyRegistered:

            pm.evalDeferred(_register)

            # AE Templates
            # the following must occur even in batch mode because they contain calls to registerDefaultTranslator
            pm.evalDeferred(aeUtils.loadAETemplates)
            import rendererCallbacks
            rendererCallbacks.registerCallbacks()
            import mtoa.ui.ae.customShapeAttributes
            import mtoa.ui.ae.customShaderTemplates
            if not pm.about(batch=True):
                # Reload the AE Window if it has already been opened
                pm.evalDeferred(aeUtils.rebuildAE)
                # create the Arnold menu
                createArnoldMenu()

            # version specific overrides or additions
            _overridePythonScripts()
            _overrideMelScripts()

            # Add option box for file translator
            utils.pyToMelProc(exportass.arnoldAssOpts,
                              [('string', 'parent'), ('string', 'action'),
                               ('string', 'initialSettings'),
                               ('string', 'resultCallback')],
                              useName=True)

            # callbacks
            import mtoa.core as core
            core.installCallbacks()
            core.MTOA_GLOBALS['COMMAND_PORT'] = None

            import maya.cmds as cmds
            if not pm.about(batch=True):
                commandPortBase = 4700
                try:
                    commandPortBase = int(os.environ['MTOA_COMMAND_PORT'])
                except:
                    commandPortBase = 4700
                # opening a command port for different tools and maya batch progress messages
                for port in range(commandPortBase, commandPortBase + 100):
                    commandPortName = ':%i' % port
                    try:
                        cmds.commandPort(name=commandPortName)
                        core.MTOA_GLOBALS['COMMAND_PORT'] = port
                        break
                    except:
                        pass
            if not pm.about(batch=True):
                pm.evalDeferred(arnoldShelf.createArnoldShelf)
    except:
        import traceback
        traceback.print_exc(file=sys.__stderr__)
        raise
def registerArnoldRenderer():
    try:
        alreadyRegistered = pm.renderer('arnold', exists=True)
        if not alreadyRegistered:

            pm.evalDeferred(_register)

            # AE Templates
            # the following must occur even in batch mode because they contain calls to registerDefaultTranslator
            pm.evalDeferred(aeUtils.loadAETemplates)
            import rendererCallbacks
            rendererCallbacks.registerCallbacks()
            import mtoa.ui.ae.customShapeAttributes
            import mtoa.ui.ae.customShaderTemplates
            if not pm.about(batch=True):
                # Reload the AE Window if it has already been opened
                pm.evalDeferred(aeUtils.rebuildAE)
                # create the Arnold menu
                createArnoldMenu()

            # version specific overrides or additions
            _overridePythonScripts()
            _overrideMelScripts()

            # Add option box for file translator
            utils.pyToMelProc(exportass.arnoldAssOpts,
                              [('string', 'parent'), ('string', 'action'),
                               ('string', 'initialSettings'), ('string', 'resultCallback')],
                               useName=True)
            
            # callbacks
            import mtoa.core as core
            core.installCallbacks()
            core.MTOA_GLOBALS['COMMAND_PORT'] = None

            import maya.cmds as cmds
            if not pm.about(batch=True):
                commandPortBase = 4700
                try:
                    commandPortBase = int(os.environ['MTOA_COMMAND_PORT'])
                except:
                    commandPortBase = 4700
                # opening a command port for different tools and maya batch progress messages
                for port in range(commandPortBase, commandPortBase + 100):
                    commandPortName = ':%i' % port
                    try:
                        cmds.commandPort(name=commandPortName)
                        core.MTOA_GLOBALS['COMMAND_PORT'] = port
                        break
                    except:
                        pass
            if not pm.about(batch=True):
                pm.evalDeferred(arnoldShelf.createArnoldShelf)
    except:
        import traceback
        traceback.print_exc(file=sys.__stderr__)
        raise
def _addAEHooks():
    """
    in versions of Maya prior to 2013 there is no way to override built-in AE templates.
    """
    # Realflow uses the AEshapeHooks global variable as a convention for sharing AEshapeTemplate overrides,
    # so we will too, unless a more popular convention is found.
    pm.melGlobals.initVar('string[]', 'AEshapeHooks')
    hooks = list(pm.melGlobals['AEshapeHooks'])
    import mtoa.ui.ae.templates
    procName = utils.pyToMelProc(mtoa.ui.ae.templates.loadArnoldTemplate, [('string', 'nodeName')], useName=True)
    hooks.append(procName)
    pm.melGlobals['AEshapeHooks'] = hooks
def _addAEHooks():
    """
    in versions of Maya prior to 2013 there is no way to override built-in AE templates.
    """
    # Realflow uses the AEshapeHooks global variable as a convention for sharing AEshapeTemplate overrides,
    # so we will too, unless a more popular convention is found.
    pm.melGlobals.initVar('string[]', 'AEshapeHooks')
    hooks = list(pm.melGlobals['AEshapeHooks'])
    import mtoa.ui.ae.templates
    procName = utils.pyToMelProc(mtoa.ui.ae.templates.loadArnoldTemplate,
                                 [('string', 'nodeName')],
                                 useName=True)
    hooks.append(procName)
    pm.melGlobals['AEshapeHooks'] = hooks
def _register():
    args = {}
    args['renderProcedure'] = utils.pyToMelProc(arnoldRender.arnoldRender,
                                          [('int', 'width'), ('int', 'height'),
                                           ('int', 'doShadows'), ('int', 'doGlowPass'),
                                           ('string', 'camera'), ('string', 'options')])
    args['renderRegionProcedure'] = 'mayaRenderRegion'
    args['commandRenderProcedure']    = utils.pyToMelProc(arnoldRender.arnoldBatchRender,
                                                    [('string', 'option')])
    args['batchRenderProcedure']        = utils.pyToMelProc(arnoldRender.arnoldBatchRender,
                                                    [('string', 'option')])
    args['batchRenderOptionsStringProcedure'] = utils.pyToMelProc(arnoldRender.arnoldBatchRenderOptionsString, returnType='string')
    args['cancelBatchRenderProcedure']  = utils.pyToMelProc(arnoldRender.arnoldBatchStop)
    args['iprRenderProcedure']          = utils.pyToMelProc(arnoldRender.arnoldIprRender,
                                                    [('int', 'width'), ('int', 'height'),
                                                     ('int', 'doShadows'), ('int', 'doGlowPass'),
                                                     ('string', 'camera')])
    args['isRunningIprProcedure']       = utils.pyToMelProc(arnoldRender.arnoldIprIsRunning, returnType='int')
    args['startIprRenderProcedure']     = utils.pyToMelProc(arnoldRender.arnoldIprStart,
                                                    [('string', 'editor'), ('int', 'resolutionX'),
                                                     ('int', 'resolutionY'), ('string', 'camera')])
    args['stopIprRenderProcedure']      = utils.pyToMelProc(arnoldRender.arnoldIprStop)
    args['refreshIprRenderProcedure']   = utils.pyToMelProc(arnoldRender.arnoldIprRefresh)
    args['pauseIprRenderProcedure']     =   utils.pyToMelProc(arnoldRender.arnoldIprPause,
                                                    [('string', 'editor'), ('int', 'pause')])
    args['changeIprRegionProcedure']    = utils.pyToMelProc(arnoldRender.arnoldIprChangeRegion,
                                                    [('string', 'renderPanel')])
    pm.renderer('arnold', rendererUIName='Arnold Renderer', **args)
        
    pm.renderer('arnold', edit=True, addGlobalsTab=('Common',
                                                      utils.pyToMelProc(createArnoldRendererCommonGlobalsTab, useName=True),
                                                      utils.pyToMelProc(updateArnoldRendererCommonGlobalsTab, useName=True)))
    pm.renderer('arnold', edit=True, addGlobalsTab=('Arnold Renderer',
                                                      utils.pyToMelProc(createArnoldRendererGlobalsTab, useName=True),
                                                      utils.pyToMelProc(updateArnoldRendererGlobalsTab, useName=True)))
    pm.renderer('arnold', edit=True, addGlobalsTab=('System', 
                                                      utils.pyToMelProc(createArnoldRendererSystemTab, useName=True), 
                                                      utils.pyToMelProc(updateArnoldRendererSystemTab, useName=True)))
    pm.renderer('arnold', edit=True, addGlobalsTab=('AOVs', 
                                                      utils.pyToMelProc(createArnoldAOVTab, useName=True), 
                                                      utils.pyToMelProc(updateArnoldAOVTab, useName=True)))
    pm.renderer('arnold', edit=True, addGlobalsTab=('Diagnostics', 
                                                      utils.pyToMelProc(createArnoldRendererDiagnosticsTab, useName=True), 
                                                      utils.pyToMelProc(updateArnoldRendererDiagnosticsTab, useName=True)))
    pm.renderer('arnold', edit=True, addGlobalsTab=('Override', 
                                                      utils.pyToMelProc(createArnoldRendererOverrideTab, useName=True), 
                                                      utils.pyToMelProc(updateArnoldRendererOverrideTab, useName=True)))
    pm.renderer('arnold', edit=True, addGlobalsNode='defaultArnoldRenderOptions')
    utils.pyToMelProc(updateBackgroundSettings, useName=True)
    utils.pyToMelProc(updateAtmosphereSettings, useName=True)
    #We have to source this file otherwise maya will override
    #our mel proc overrides below.
    #
    pm.mel.source('createMayaSoftwareCommonGlobalsTab.mel')
    
    utils.pyToMelProc(addOneTabToGlobalsWindow,
                      [('string', 'renderer'), ('string', 'tabLabel'), ('string', 'createProc')],
                      useName=True)
    utils.pyToMelProc(renderSettingsTabLabel_melToUI,
                      [('string', 'mel')],
                      useName=True)
    utils.pyToMelProc(updateMayaImageFormatControl,
                      useName=True)
Beispiel #6
0
def aeCallback(func):
    return utils.pyToMelProc(func, [('string', 'nodeName')],
                             procPrefix='AEArnoldCallback')
def _register():
    args = {}
    args['renderProcedure'] = utils.pyToMelProc(arnoldRender.arnoldRender,
                                                [('int', 'width'),
                                                 ('int', 'height'),
                                                 ('int', 'doShadows'),
                                                 ('int', 'doGlowPass'),
                                                 ('string', 'camera'),
                                                 ('string', 'options')])
    args['renderRegionProcedure'] = 'mayaRenderRegion'
    args['commandRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldBatchRender, [('string', 'option')])
    args['batchRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldBatchRender, [('string', 'option')])
    args['batchRenderOptionsStringProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldBatchRenderOptionsString, returnType='string')
    args['cancelBatchRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldBatchStop)
    args['iprRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldIprRender, [('int', 'width'), ('int', 'height'),
                                       ('int', 'doShadows'),
                                       ('int', 'doGlowPass'),
                                       ('string', 'camera')])
    args['isRunningIprProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldIprIsRunning, returnType='int')
    args['startIprRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldIprStart, [('string', 'editor'),
                                      ('int', 'resolutionX'),
                                      ('int', 'resolutionY'),
                                      ('string', 'camera')])
    args['stopIprRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldIprStop)
    args['refreshIprRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldIprRefresh)
    args['pauseIprRenderProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldIprPause, [('string', 'editor'), ('int', 'pause')])
    args['changeIprRegionProcedure'] = utils.pyToMelProc(
        arnoldRender.arnoldIprChangeRegion, [('string', 'renderPanel')])
    pm.renderer('arnold', rendererUIName='Arnold Renderer', **args)

    pm.renderer(
        'arnold',
        edit=True,
        addGlobalsTab=('Common',
                       utils.pyToMelProc(createArnoldRendererCommonGlobalsTab,
                                         useName=True),
                       utils.pyToMelProc(updateArnoldRendererCommonGlobalsTab,
                                         useName=True)))
    pm.renderer(
        'arnold',
        edit=True,
        addGlobalsTab=('Arnold Renderer',
                       utils.pyToMelProc(createArnoldRendererGlobalsTab,
                                         useName=True),
                       utils.pyToMelProc(updateArnoldRendererGlobalsTab,
                                         useName=True)))
    pm.renderer('arnold',
                edit=True,
                addGlobalsTab=('System',
                               utils.pyToMelProc(createArnoldRendererSystemTab,
                                                 useName=True),
                               utils.pyToMelProc(updateArnoldRendererSystemTab,
                                                 useName=True)))
    pm.renderer('arnold',
                edit=True,
                addGlobalsTab=('AOVs',
                               utils.pyToMelProc(createArnoldAOVTab,
                                                 useName=True),
                               utils.pyToMelProc(updateArnoldAOVTab,
                                                 useName=True)))
    pm.renderer(
        'arnold',
        edit=True,
        addGlobalsTab=('Diagnostics',
                       utils.pyToMelProc(createArnoldRendererDiagnosticsTab,
                                         useName=True),
                       utils.pyToMelProc(updateArnoldRendererDiagnosticsTab,
                                         useName=True)))
    pm.renderer(
        'arnold',
        edit=True,
        addGlobalsTab=('Override',
                       utils.pyToMelProc(createArnoldRendererOverrideTab,
                                         useName=True),
                       utils.pyToMelProc(updateArnoldRendererOverrideTab,
                                         useName=True)))
    pm.renderer('arnold',
                edit=True,
                addGlobalsNode='defaultArnoldRenderOptions')
    utils.pyToMelProc(updateBackgroundSettings, useName=True)
    utils.pyToMelProc(updateAtmosphereSettings, useName=True)
    #We have to source this file otherwise maya will override
    #our mel proc overrides below.
    #
    pm.mel.source('createMayaSoftwareCommonGlobalsTab.mel')

    utils.pyToMelProc(addOneTabToGlobalsWindow, [('string', 'renderer'),
                                                 ('string', 'tabLabel'),
                                                 ('string', 'createProc')],
                      useName=True)
    utils.pyToMelProc(renderSettingsTabLabel_melToUI, [('string', 'mel')],
                      useName=True)
    utils.pyToMelProc(updateMayaImageFormatControl, useName=True)
Beispiel #8
0
def aeCallback(func):
    return utils.pyToMelProc(func, [('string', 'nodeName')], procPrefix='AEArnoldCallback')
        #
        pm.mel.buildCreateSubMenu(staticClass, '%s %s ""' % (_createNodeCallbackProc,
                                                             runtimeClass) )
        pm.setParent('..', menu=True)

def createNodeCallback(runtimeClassification, postCommand, nodeType):

    node = unicode(createArnoldNode(nodeType, runtimeClassification=runtimeClassification))
    if postCommand:
        postCommand = postCommand.replace('%node', node).replace('%type', nodeType).replace(r'\"','"')
        pm.mel.eval(postCommand)
    return node

_createNodeCallbackProc = utils.pyToMelProc(createNodeCallback, 
                                            [('string', 'runtimeClassification'),
                                             ('string', 'postCommand'),
                                             ('string', 'nodeType')],
                                             returnType='string')

# names of the following procs mirror mental ray naming convention, so the inconsistency is not ours

# make the global proc available for the renderCReateBarUI.mel override
utils.pyToMelProc(createArnoldNodesTreeLister_Content,
                                       [('string', 'renderNodeTreeLister'),
                                        ('string', 'postCommand'),
                                        ('string', 'filterString')], useName=True)

# make the global proc available for the hyperShadePanel.mel override
utils.pyToMelProc(aiHyperShadeCreateMenu_BuildMenu, useName=True)