In my code, I start off by doing custom settings in renderer then switching to viewport 2.0
However when switch, it took a while for Maya to process, like 3 to 5 seconds before I see the message 'viewport 2.0 is processing'..
Is there any way that I can catch once the processing is done before I execute my next function?
def set_vp2_settings():
cmds.setAttr('hardwareRenderingGlobals.vertexAnimationCache', 2)
cmds.setAttr('hardwareRenderingGlobals.hwInstancing', 1)
cmds.setAttr('hardwareRenderingGlobals.threadDGEvaluation', 1)
cmds.setAttr('hardwareRenderingGlobals.maxHardwareLights', 1)
cmds.setAttr('hardwareRenderingGlobals.transparencyAlgorithm', 0)
def main():
# Apply viewport 2.0 settings
print 'Apply custim settings for Viewport 2.0'
set_vp2_settings()
# Disabling viewport
#mel.eval("paneLayout -e -manage false $gMainPane")
# Switch to Viewport 2.0
print 'Switching to use Viewport 2.0'
mel.eval('ActivateViewport20;')
# Enable back viewport
#mel.eval("paneLayout -e -manage true $gMainPane")
print 'Done!'
main()
cmds.scriptJob(event='idle', fn)
cmds.evalDeferrred('print "a"')cmds.evalDeferrred('print "b"', lowPriority=True)cmds.evalDeferrred('print "c"', lowestPriority=True)
The cmds equivalent of MEventMessage iscmds.scriptJob(event='idle', fn)I haven't used it for a very long time but I think the fn might need to be a string representing MEL code.Or you might be better off with evalDeferred:cmds.evalDeferrred('print "a"')cmds.evalDeferrred('print "b"', lowPriority=True)cmds.evalDeferrred('print "c"', lowestPriority=True)None of this is exactly what you want, I know. I looked into it briefly last year and didn't see any simple way to do it.