2 import maya.api.OpenMayaRender
as omr
3 import maya.api.OpenMaya
as om
51 class frameContextTest(omr.MRenderOverride):
52 ''' Sample class which prints some trace information about the current frame context during setup()
54 def __init__(self, name):
55 omr.MRenderOverride.__init__(self, name)
56 self.mRenderOperations = collections.OrderedDict()
57 self.mUIName =
"Frame Context Test Override"
58 self.mCurrentOperationIndex = -1
60 def supportedDrawAPIs(self):
61 return ( omr.MRenderer.kAllDevices )
63 def startOperationIterator(self):
64 self.mCurrentOperationIndex = 0
67 def renderOperation(self):
68 if self.mCurrentOperationIndex >= 0
and self.mCurrentOperationIndex < len(self.mRenderOperations):
69 return self.mRenderOperations[list(self.mRenderOperations.keys())[self.mCurrentOperationIndex]]
73 def nextRenderOperation(self):
74 self.mCurrentOperationIndex += 1
75 return self.mCurrentOperationIndex < len(self.mRenderOperations)
77 def setup(self, panelName ):
82 frameCtx = self.getFrameContext()
84 print(
'> MRenderOverride Frame Information Extraction Trace')
85 print(
'> --------------------------------------------------')
86 dim = frameCtx.getViewportDimensions()
91 print(
'> Destination: ' + panelName)
92 print(
'> Viewport: ' + str(originX) +
',' + str(originY) +
',' + str(width) +
',' + str(height))
93 cameraPath = frameCtx.getCurrentCameraPath()
94 cameraName = cameraPath.fullPathName()
95 print(
'> Camera path: ' + cameraName)
96 ufeCameraPath = frameCtx.getCurrentUfeCameraPath()
97 print(
'> Ufe Camera path: ' + ufeCameraPath)
98 projection = frameCtx.getMatrix(omr.MFrameContext.kProjectionMtx)
99 print(
'> Projection matrix:' + str(projection))
100 projection = frameCtx.getMatrix(omr.MFrameContext.kViewMtx)
101 print(
'> View matrix:' + str(projection))
103 bparams = frameCtx.getBackgroundParameters();
104 print(
"> Background:")
105 print(
"> - gradient = " + str(bparams[0]))
106 print(
"> - colorColor1 = " + str(bparams[4]))
107 print(
"> - colorColor2 = " + str(bparams[5]))
109 print(
"> Display style: " + str(frameCtx.getDisplayStyle()))
110 print(
"> Wire on shaded: " + str(frameCtx.wireOnShadedMode()))
111 print(
"> Lighting mode: " + str(frameCtx.getLightingMode()))
112 print(
"> Light limit: " + str(frameCtx.getLightLimit()))
114 if frameCtx.getPostEffectEnabled( omr.MFrameContext.kAmbientOcclusion ):
115 print(
"> SSAO enabled")
116 if frameCtx.getPostEffectEnabled( omr.MFrameContext.kMotionBlur ):
117 print(
"> Motion blur enabled");
118 if frameCtx.getPostEffectEnabled( omr.MFrameContext.kViewColorTransformEnabled ):
119 print(
"> Color management enabled")
120 if frameCtx.getPostEffectEnabled( omr.MFrameContext.kDepthOfField ):
121 dofParams = frameCtx.getDOFParameters()
122 print(
"> Depth-of-field enabled: " + str(dofParams[0]))
123 print(
"> - Focus distance: " + str(dofParams[1]))
124 print(
"> - Alpha: " + str(dofParams[2]))
125 if frameCtx.getPostEffectEnabled( omr.MFrameContext.kAntiAliasing ):
126 print(
"> Anti-aliasing enabled")
127 fogParams = frameCtx.getHwFogParameters()
129 print(
"> Fog Enabled:")
130 print(
"> - Fog mode: " + str(fogParams[1]))
131 print(
"> - Fog start: " + str(fogParams[2]))
132 print(
"> - Fog end: " + str(fogParams[3]))
133 print(
"> - Fog density: " + str(fogParams[4]))
134 print(
"> - Fog color: " + str(fogParams[5]))
137 if not self.mRenderOperations:
138 self.mRenderOperations[
'SceneRender'] = omr.MSceneRender(
'SceneRender')
139 self.mRenderOperations[
'Present'] = omr.MPresentTarget(
'Present')
142 self.mCurrentOperationIndex = -1
144 mFrameContextInstance =
None
146 def initializePlugin(obj):
147 plugin = om.MFnPlugin(obj)
148 global mFrameContextInstance
149 mFrameContextInstance = frameContextTest(
'my_frame_context_test_py')
150 omr.MRenderer.registerOverride(mFrameContextInstance)
152 def uninitializePlugin(obj):
153 plugin = om.MFnPlugin(obj)
154 global mFrameContextInstance
155 if mFrameContextInstance
is not None:
156 omr.MRenderer.deregisterOverride(mFrameContextInstance)
157 mFrameContextInstance =
None