1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import copy
24 import maya.OpenMaya as OpenMaya
25 import maya.OpenMayaMPx as OpenMayaMPx
26 import maya.OpenMayaUI as OpenMayaUI
27 import maya.OpenMayaRender as OpenMayaRender
28 from shaderBase import *
29 from shaderSurface import *
30 from shaderLight import *
31 from glob import glob
32 import os,sys
33 import slum
34
35 userClassify = {
36 'surface' : 'shader/surface',
37 'displacement' : 'shader/displacement',
38 'float' : 'utility/general',
39 'color' : 'utility/color',
40 'light' : 'light',
41 }
42
44 - def __init__(self, mobj, mobjRender, res):
45 OpenMayaRender.MSwatchRenderBase(self, mobj, mobjRender, res)
46 print mobj, mobjRender, res
47 pass
64
65
67 - def __init__(self, mplugin, pluginName, PluginNodeId, searchPath = ['SLUM_SEARCH_PATH', 'MAYA_SCRIPT_PATH', 'PYTHONPATH'] ):
75
77 '''
78 loop trough all gathered slum classes and register a new node type for each one
79 '''
80 xxx = OpenMayaUI.MHWShaderSwatchGenerator.initialize()
81 for classe in self.classes.keys():
82
83 nodeTypeName = 'slum_%s' % classe
84
85
86
87
88 nodeType = OpenMayaMPx.MPxNode.kHwShaderNode
89
90
91 nodeCreator = shaderSurface.nodeCreator
92 nodeInitializer = shaderSurface.nodeInitializer
93 nodeInitializeCallback = shaderSurface.slumInitializer
94
95
96
97 if OpenMaya.MGlobal.mayaState() != OpenMaya.MGlobal.kBatch:
98 swatchName = "%sRenderSwatchGen" % nodeTypeName
99
100
101 swatchName = "/:swatch/%s" % swatchName
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 slumShader = slum.evalSlumClass(self.classes[classe]['code'], classe)
120
121 if slumShader.type() == 'light':
122 nodeTypeName = 'slumLight_%s' % classe
123 nodeType = OpenMayaMPx.MPxNode.kLocatorNode
124 nodeCreator = shaderLight.nodeCreator
125 nodeInitializer = shaderLight.nodeInitializer
126 nodeInitializeCallback = shaderLight.slumInitializer
127 swatchName = ''
128
129
130
131 self.mplugin.registerNode(
132 nodeTypeName,
133 OpenMaya.MTypeId( self.PluginNodeId + slumShader.ID() ),
134 nodeCreator,
135 nodeInitializer,
136 nodeType,
137 '%s%s' % (userClassify[ slumShader.type() ], swatchName)
138 )
139 self.callbackIDs.append(
140 OpenMaya.MDGMessage.addNodeAddedCallback ( nodeInitializeCallback, nodeTypeName)
141 )
142 del slumShader
143
145 for classe in self.classes.keys():
146 slumShader = slum.evalSlumClass(self.classes[classe]['code'], classe)
147 self.mplugin.deregisterNode( OpenMaya.MTypeId( self.PluginNodeId + slumShader.ID() ) )
148
149 for each in self.callbackIDs:
150 removeCallback( each )
151