BiGMaCHiNe
11-25-2011, 03:11 AM
Hi All, I'm attempting to port code over from an external renderer. Ive got the following code working, but I hate the process of needing to call global proceedures from within a maya.mel.eval( statement. Does anyone know of a way I could edit this to make it a bit tidier. cheers.
import maya.cmds as cmds
import pymel.core as pm
import maya.mel as mel
mel.eval(
'''
global proc Create_ACGlobalsTab()
{
text -label "Test";
}
global proc Update_ACGlobalsTab()
{
}
''')
class MyRenderer:
def __init__(self, name, uiName):
self.Name = name
self.UI_Name = uiName
self.Register()
def Register(self):
try:
pm.renderer(str(self.Name))
print 'registered myRenderer...'
except RuntimeError as detail:
if u'The renderer myRenderer is already registered' in detail:
self.UnRegister()
finally:
pm.renderer(str(self.Name), edit=True,
rendererUIName=str(self.UI_Name),
polyPrelightProcedure='performPrelight',
renderingEditorsSubMenuProcedure='',
iprRenderProcedure='mayaSoftwareIprRender',
iprOptionsProcedure='',
isRunningIprProcedure='mayaSoftwareIsRunningIpr',
startIprRenderProcedure='mayaSoftwareStartIprRender',
stopIprRenderProcedure='mayaSoftwareStopIprRender',
refreshIprRenderProcedure='mayaSoftwareRefreshIprImage',
pauseIprRenderProcedure='mayaSoftwarePauseIprRender',
changeIprRegionProcedure='mayaSoftwareChangeIprRegion',
iprOptionsMenuLabel='IPR Tuning Options',
iprOptionsSubMenuProcedure='mayaSoftwareIprUpdateOptionsSubMenu',
iprRenderSubMenuProcedure='mayaSoftwareIprUpdateRenderSubMenu',
renderProcedure='mayaSoftwareRender',
renderOptionsProcedure='RenderOptions',
renderDiagnosticsProcedure='RenderDiagnostics',
commandRenderProcedure='render -batch',
batchRenderProcedure='BatchRender',
batchRenderOptionsProcedure='BatchRenderOptions',
batchRenderOptionsStringProcedure="mayaSoftwareBatchRenderOptionsString",
cancelBatchRenderProcedure='CancelBatchRender',
showBatchRenderProcedure='ShowBatchRender',
showRenderLogProcedure='',
showBatchRenderLogProcedure='',
renderRegionProcedure='mayaRenderRegion',
textureBakingProcedure='performConvertSolidTx',
logoImageName='',
logoCallbackProcedure='' )
pm.renderer(str(self.Name), edit=True,
addGlobalsTab=("Common", "createMayaSoftwareCommonGlobalsTab", "updateMayaSoftwareCommonGlobalsTab"))
pm.renderer(str(self.Name), edit=True,
addGlobalsTab=("AC_Preferences", "Create_ACGlobalsTab", "Update_ACGlobalsTab"))
def UnRegister(self):
print 'unregistering myRenderer...'
pm.renderer(str(self.Name), unr=True)
import maya.cmds as cmds
import pymel.core as pm
import maya.mel as mel
mel.eval(
'''
global proc Create_ACGlobalsTab()
{
text -label "Test";
}
global proc Update_ACGlobalsTab()
{
}
''')
class MyRenderer:
def __init__(self, name, uiName):
self.Name = name
self.UI_Name = uiName
self.Register()
def Register(self):
try:
pm.renderer(str(self.Name))
print 'registered myRenderer...'
except RuntimeError as detail:
if u'The renderer myRenderer is already registered' in detail:
self.UnRegister()
finally:
pm.renderer(str(self.Name), edit=True,
rendererUIName=str(self.UI_Name),
polyPrelightProcedure='performPrelight',
renderingEditorsSubMenuProcedure='',
iprRenderProcedure='mayaSoftwareIprRender',
iprOptionsProcedure='',
isRunningIprProcedure='mayaSoftwareIsRunningIpr',
startIprRenderProcedure='mayaSoftwareStartIprRender',
stopIprRenderProcedure='mayaSoftwareStopIprRender',
refreshIprRenderProcedure='mayaSoftwareRefreshIprImage',
pauseIprRenderProcedure='mayaSoftwarePauseIprRender',
changeIprRegionProcedure='mayaSoftwareChangeIprRegion',
iprOptionsMenuLabel='IPR Tuning Options',
iprOptionsSubMenuProcedure='mayaSoftwareIprUpdateOptionsSubMenu',
iprRenderSubMenuProcedure='mayaSoftwareIprUpdateRenderSubMenu',
renderProcedure='mayaSoftwareRender',
renderOptionsProcedure='RenderOptions',
renderDiagnosticsProcedure='RenderDiagnostics',
commandRenderProcedure='render -batch',
batchRenderProcedure='BatchRender',
batchRenderOptionsProcedure='BatchRenderOptions',
batchRenderOptionsStringProcedure="mayaSoftwareBatchRenderOptionsString",
cancelBatchRenderProcedure='CancelBatchRender',
showBatchRenderProcedure='ShowBatchRender',
showRenderLogProcedure='',
showBatchRenderLogProcedure='',
renderRegionProcedure='mayaRenderRegion',
textureBakingProcedure='performConvertSolidTx',
logoImageName='',
logoCallbackProcedure='' )
pm.renderer(str(self.Name), edit=True,
addGlobalsTab=("Common", "createMayaSoftwareCommonGlobalsTab", "updateMayaSoftwareCommonGlobalsTab"))
pm.renderer(str(self.Name), edit=True,
addGlobalsTab=("AC_Preferences", "Create_ACGlobalsTab", "Update_ACGlobalsTab"))
def UnRegister(self):
print 'unregistering myRenderer...'
pm.renderer(str(self.Name), unr=True)
