39 import maya.OpenMaya
as OpenMaya
40 import maya.OpenMayaMPx
as OpenMayaMPx
42 kPluginNodeName =
"spGeomShader"
43 kPluginNodeClassify =
"utility/color"
44 kPluginNodeId = OpenMaya.MTypeId(0x8700E)
46 class geomShader(OpenMayaMPx.MPxNode):
48 OpenMayaMPx.MPxNode.__init__(self)
49 aOutColor = OpenMaya.MObject()
50 aPoint = OpenMaya.MObject()
51 aScale = OpenMaya.MObject()
52 aOffset = OpenMaya.MObject()
54 def compute(self, plug, block):
55 if plug == geomShader.aOutColor
or plug.parent() == geomShader.aOutColor:
56 resultColor = OpenMaya.MFloatVector(0.0,0.0,0.0)
58 point = block.inputValue( geomShader.aPoint ).asFloatVector()
59 scale = block.inputValue( geomShader.aScale ).asFloatVector()
60 offset = block.inputValue( geomShader.aOffset ).asFloatVector()
62 resultColor.x = point.x * scale.x + offset.x
63 resultColor.y = point.y * scale.y + offset.y
64 resultColor.x = point.z * scale.z + offset.z
66 outColorHandle = block.outputValue( geomShader.aOutColor )
67 outColorHandle.setMFloatVector(resultColor)
68 outColorHandle.setClean()
70 return OpenMaya.kUnknownParameter
74 return OpenMayaMPx.asMPxPtr( geomShader() )
76 def nodeInitializer():
77 nAttr = OpenMaya.MFnNumericAttribute()
80 geomShader.aPoint = nAttr.createPoint(
"pointObj",
"p")
84 geomShader.aScale = nAttr.createPoint(
"scale",
"s")
89 nAttr.setDefault(1.0, 1.0, 1.0)
91 geomShader.aOffset = nAttr.createPoint(
"offset",
"o")
97 geomShader.aOutColor = nAttr.createColor(
"outColor",
"oc")
104 sys.stderr.write(
"Failed to create attributes\n")
108 geomShader.addAttribute(geomShader.aPoint)
109 geomShader.addAttribute(geomShader.aScale)
110 geomShader.addAttribute(geomShader.aOffset)
111 geomShader.addAttribute(geomShader.aOutColor)
113 sys.stderr.write(
"Failed to add attributes\n")
117 geomShader.attributeAffects (geomShader.aPoint, geomShader.aOutColor)
118 geomShader.attributeAffects (geomShader.aScale, geomShader.aOutColor)
119 geomShader.attributeAffects (geomShader.aOffset, geomShader.aOutColor)
121 sys.stderr.write(
"Failed in setting attributeAffects\n")
126 def initializePlugin(mobject):
127 mplugin = OpenMayaMPx.MFnPlugin(mobject)
129 mplugin.registerNode( kPluginNodeName, kPluginNodeId, nodeCreator,
130 nodeInitializer, OpenMayaMPx.MPxNode.kDependNode, kPluginNodeClassify )
132 sys.stderr.write(
"Failed to register node: %s" % kPluginNodeName )
136 def uninitializePlugin(mobject):
137 mplugin = OpenMayaMPx.MFnPlugin(mobject)
139 mplugin.deregisterNode( kPluginNodeId )
141 sys.stderr.write(
"Failed to deregister node: %s" % kPluginNodeName )