1 import maya.api.OpenMaya
as om
2 import maya.api.OpenMayaAnim
as oma
3 import maya.api.OpenMayaUI
as omui
4 import maya.api.OpenMayaRender
as omr
6 import maya.cmds
as cmds
16 def iconFunc( drawMgr, userData ):
17 drawMgr.beginDrawable()
19 path = mel.eval(
'getenv("MAYA_LOCATION")') +
"/icons/mayaico.png"
20 drawMgr.icon( om.MPoint(0.0, 0.0, 3.0), path, 3.14 )
26 def textFunc( drawMgr, userData ):
27 drawMgr.beginDrawable()
29 drawMgr.text( om.MPoint(200.1, 200.2, 0.3),
"left", omr.MUIDrawManager.kLeft, [200,200])
30 drawMgr.setColor( om.MColor( (1.0, 0.0, 0.0, 1.0) ) )
31 drawMgr.text( om.MPoint(200.1, 150.2, 0.3),
"center", omr.MUIDrawManager.kCenter, [200,200])
32 drawMgr.setColor( om.MColor( (0.0, 1.0, 0.0, 1.0) ) )
33 drawMgr.text( om.MPoint(200.1, 200.2, 0.3),
"right", omr.MUIDrawManager.kRight, [200,200])
37 drawMgr.setFontSize( omr.MUIDrawManager.kSmallFontSize )
38 drawMgr.setColor( om.MColor( (0.0, 0.0, 1.0, 1.0) ) )
39 drawMgr.text( om.MPoint(700.1, 50.2, 0.3),
"small", omr.MUIDrawManager.kLeft, [200,200], om.MColor((0., 1., 1., 1.)),
False )
46 def rectFunc( drawMgr, userData ):
47 drawMgr.beginDrawable()
49 drawMgr.setColor( om.MColor( (1.0, 0.0, 1.0, 1.0) ) )
50 drawMgr.rect2d( om.MPoint(50, 150, 0.3), om.MVector(0.0,1.0,0.0), 100, 300,
False )
52 drawMgr.setColor( om.MColor( (0.0, 1.0, 1.0, 1.0) ) )
53 drawMgr.rect2d( om.MPoint(450.1, 500.2, 0.3), om.MVector(-0.5,0.866025,0.0), 100, 300,
True )
59 def arcFunc( drawMgr, userData ):
60 drawMgr.beginDrawable()
62 drawMgr.setColor( om.MColor( (1.0, 1.0, 1.0, 1.0) ) )
63 drawMgr.arc2d( om.MPoint(750.1, 500.2, 0.3), om.MVector(0.866025, 0.5, 0.0), om.MVector(-0.5,0.866025,0.0), 100,
False )
65 drawMgr.setColor( om.MColor( (1.0, 1.0, 0.5, 1.0) ) )
66 drawMgr.arc2d( om.MPoint(750.1, 500.2, 0.3), om.MVector(-0.866025, -0.5, 0.0), om.MVector(0.5,-0.866025,0.0), 100,
True )
73 def circleFunc( drawMgr, userData ):
74 drawMgr.beginDrawable()
76 drawMgr.setColor( om.MColor( (0.5, 1.0, 1.0, 1.0) ) )
77 drawMgr.circle2d( om.MPoint(500.1, 200.2, 0.3), 75,
False )
78 drawMgr.setColor( om.MColor( (0.5, 1.0, 0.5, 1.0) ) )
79 drawMgr.circle2d( om.MPoint(675.1, 675.2, 0.3), 50,
True )
84 def otherFunc( drawMgr, userData ):
92 cmds.file(force=1,new=1)
93 myCyl = cmds.polyCylinder()
94 cmds.setAttr(
"pCylinder1.s",1, 3.3522764559816802, 1, type=
"double3" )
96 cmds.playbackOptions(min=0, ast=0, max=30, aet=30)
98 cmds.setAttr(
'pCylinder1.tz', 12 )
99 cmds.setAttr(
'pCylinder1.rx', 30 )
100 cmds.setKeyframe( [
'pCylinder1.tz',
'pCylinder1.rx'])
103 cmds.setAttr(
'pCylinder1.tz', 0 )
104 cmds.setAttr(
'pCylinder1.rx', 0 )
105 cmds.setKeyframe( [
'pCylinder1.tz',
'pCylinder1.rx'])
108 cmds.setAttr(
'pCylinder1.tz', -12 )
109 cmds.setAttr(
'pCylinder1.rx', -30 )
110 cmds.setKeyframe( [
'pCylinder1.tz',
'pCylinder1.rx'])
112 def createGraphEditor():
115 geName =
'myGraphEditorGraphEd';
116 if( cmds.scriptedPanel(
'myGraphEditor', exists=1) ):
117 cmds.deleteUI(
'myGraphEditor')
119 geWindow = cmds.window(width=1200,height=800)
120 gePane = cmds.paneLayout(parent=geWindow)
121 cmds.scriptedPanel(
'myGraphEditor',type=
'graphEditor', parent=gePane,tearOff=
False)
123 cmds.showWindow(geWindow)
124 return [geName, geWindow]
126 def maya_useNewAPI():
129 def initializePlugin( mobject ):
132 this method is called when the plug-in is loaded into Maya. It
133 registers all of the services that this plug-in provides with
137 mobject - a handle to the plug-in object (use MFnPlugin to access it)
140 [geName, geWindow] = createGraphEditor()
141 geCanvas = omui.MPanelCanvas(geName)
143 myCanvas = [geCanvas, geName, geWindow]
144 geCanvas.setAutoRefresh(
False )
174 layers = [ omui.MPanelCanvas.kGraphEditorBackground+55
175 , omui.MPanelCanvas.kGraphEditorGrid+55
176 , omui.MPanelCanvas.kGraphEditorAxisLabels+55
177 , omui.MPanelCanvas.kGraphEditorCurves+55
178 , omui.MPanelCanvas.kGraphEditorCurveNames+55
179 , omui.MPanelCanvas.kGraphEditorTimeMarker+55
180 , omui.MPanelCanvas.kGraphEditorTimeMarker+55
181 , omui.MPanelCanvas.kGraphEditorRetimeToolText+55
184 props = omui.MDrawProperties()
185 props.color = om.MColor( [0.2, 0.8, 0.6])
186 props.lineWidth = 0.5
187 props.lineStyle = omr.MUIDrawManager.kDotted
188 props.pointSize = 12.0
192 half_diags = [300-30*n
for n
in range(0,8)]
196 reds = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]
197 greens = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
198 blues = [0.0, 0.0, 1.0, 1.0, 0.25, 0.25, 0.75, 0.75]
203 starts = [6*n
for n
in range(0,8)]
217 for r,g,b,h
in zip(reds, greens, blues, half_diags):
218 xArray += [cx-h, cx, cx+h, cx+h, cx, cx-h]
219 yArray += [cy, cy-h, cy, cy, cy+h, cy]
220 cArray += [ [r*.25, g*.25, b, a], [r*.50, g*.50, b, a], [r*.75, g*.75, b, a], [r*.75, g*.75, b, a], [r, g, b, a], [r*.25, g*.25, b, a]]
222 floatId = geCanvas.createFloatVertexBuffer( xArray, yArray, cArray )
226 for s,l
in zip(starts, layers):
227 p = geCanvas.createPrimitive( omr.MGeometry.kTriangles, floatId, s, 6, props )
228 geCanvas.addPrimitive( p, l )
234 layers = [ omui.MPanelCanvas.kGraphEditorCurves+55
235 , omui.MPanelCanvas.kGraphEditorCurves+55
236 , omui.MPanelCanvas.kGraphEditorAxisLabels+55
237 , omui.MPanelCanvas.kGraphEditorAxisLabels+55
238 , omui.MPanelCanvas.kGraphEditorCurveNames+55
239 , omui.MPanelCanvas.kGraphEditorTimeMarker+55
241 patterns = [omr.MUIDrawManager.kDotted, omr.MUIDrawManager.kShortDotted, omr.MUIDrawManager.kDashed, omr.MUIDrawManager.kShortDashed, omr.MUIDrawManager.kSolid, omr.MUIDrawManager.kDotted]
245 half_sides = half_diags = [300-30*n
for n
in range(0,6)]
249 reds = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]
250 greens = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
251 blues = [0.5, 0.5, 1.0, 1.0, 0.25, 0.25]
256 starts = [5*n
for n
in range(0,6)]
268 for r,g,b,h
in zip(reds, greens, blues, half_sides):
269 xArray += [cx-h, cx+h, cx+h, cx-h, cx-h]
270 yArray += [cy-h, cy-h, cy+h, cy+h, cy-h]
271 cArray += [ [r*.40, g*.40, b, a], [r*.50, g*.50, b, a], [r*.60, g*.60, b, a], [r*.75, g*.75, b, a], [r, g, b, a]]
273 floatId = geCanvas.createFloatVertexBuffer( xArray, yArray, cArray )
277 for s,l,p
in zip(starts, layers, patterns):
279 id = geCanvas.createPrimitive( omr.MGeometry.kLineStrip, floatId, s, 5, props )
280 geCanvas.addPrimitive( id, l )
301 layers = [ omui.MPanelCanvas.kGraphEditorAxisLabels+55
302 , omui.MPanelCanvas.kGraphEditorCurves+55
303 , omui.MPanelCanvas.kGraphEditorCurveNames+55
304 , omui.MPanelCanvas.kGraphEditorTimeMarker+55
307 props = omui.MDrawProperties()
308 props.color = om.MColor( [0.2, 0.8, 0.6])
309 props.lineWidth = 0.5
310 props.lineStyle = omr.MUIDrawManager.kDotted
311 props.pointSize = 12.0
315 half_diags_t = [6-n
for n
in range(0,4)]
316 half_diags_y = [40, 36, 20, 18]
320 reds = [1.0, 0.0, 1.0, 0.0]
321 greens = [0.0, 1.0, 0.0, 1.0]
322 blues = [0.25, 0.25, 0.75, 0.75]
327 starts = [6*n
for n
in range(0,4)]
331 cxArray = [6, 6, 16, 16]
340 for cx, r,g,b,ht, hy
in zip(cxArray, reds, greens, blues, half_diags_t, half_diags_y):
341 tArray += [om.MTime(t)
for t
in [cx-ht, cx, cx+ht, cx+ht, cx, cx-ht]]
342 yArray += [0, -hy, 0, 0, hy, 0]
343 cArray += [ [r*.25, g*.25, b, a], [r*.50, g*.50, b, a], [r*.75, g*.75, b, a], [r*.75, g*.75, b, a], [r, g, b, a], [r*.25, g*.25, b, a]]
345 timeId = geCanvas.createTimeVertexBuffer( tArray, yArray, cArray )
349 for s,l
in zip(starts, layers):
350 p = geCanvas.createPrimitive( omr.MGeometry.kTriangles, timeId, s, 6, props )
351 geCanvas.addPrimitive( p, l )
359 tArray = [om.MTime(t)
for t
in [0,30,30,0,0]]
360 yArray = [30,30,-30,-30,30]
361 cArray = [[r*.2,1.0,1.0,1.0]
for r
in range(1,6)]
363 timeId = geCanvas.createTimeVertexBuffer( tArray, yArray, cArray )
365 props = omui.MDrawProperties()
366 props.color = om.MColor( [0.2, 0.8, 0.6])
367 props.lineWidth = 0.5
368 props.lineStyle = omr.MUIDrawManager.kDashed
369 props.pointSize = 12.0
371 primId = geCanvas.createPrimitive( omr.MGeometry.kLineStrip, timeId, 0, 5, props )
373 geCanvas.addPrimitive( primId, omui.MPanelCanvas.kGraphEditorCurveNames+56 )
377 geCanvas.registerDrawUICallback( omui.MPanelCanvas.kGraphEditorBackground+56, otherFunc )
379 geCanvas.registerDrawUICallback( omui.MPanelCanvas.kGraphEditorGrid+56, iconFunc )
381 geCanvas.registerDrawUICallback( omui.MPanelCanvas.kGraphEditorAxisLabels+56, textFunc )
383 geCanvas.registerDrawUICallback( omui.MPanelCanvas.kGraphEditorCurves+56, rectFunc )
385 geCanvas.registerDrawUICallback( omui.MPanelCanvas.kGraphEditorCurveNames+54, arcFunc )
387 geCanvas.registerDrawUICallback( omui.MPanelCanvas.kGraphEditorTimeMarker+54, circleFunc )
389 geCanvas.registerDrawUICallback( omui.MPanelCanvas.kGraphEditorRetimeToolText+56, otherFunc )
391 geCanvas.setAutoRefresh(
True )
393 print geCanvas.isValid()
396 def uninitializePlugin( mobject ):
399 this method is called when the plug-in is unloaded from Maya. It
400 deregisters all of the services that it was providing.
403 mobject - a handle to the plug-in object (use MFnPlugin to access it)
406 [geCanvas, geName, geWindow] = myCanvas
407 cmds.deleteUI(geWindow)
408 print geCanvas.isValid()