83 import maya.OpenMaya
as OpenMaya
84 import maya.OpenMayaMPx
as OpenMayaMPx
86 kPluginNodeTypeName =
"spCircle"
91 class circle(OpenMayaMPx.MPxNode):
101 OpenMayaMPx.MPxNode.__init__(self)
104 def compute(self, plug, data):
106 if (plug == circle.aSOutput
or plug == circle.aCOutput):
108 inputData = data.inputValue(circle.aInput)
109 scaleData = data.inputValue(circle.aScale)
110 framesData = data.inputValue(circle.aFrames)
113 currentFrame = inputData.asFloat()
114 scaleFactor = scaleData.asFloat()
115 framesPerCircle = framesData.asFloat()
116 angle = 6.2831853 * (currentFrame/framesPerCircle)
117 sinResult = math.sin(angle) * scaleFactor
118 cosResult = math.cos(angle) * scaleFactor
121 sinHandle = data.outputValue(circle.aSOutput)
122 cosHandle = data.outputValue(circle.aCOutput)
123 sinHandle.setFloat(sinResult)
124 cosHandle.setFloat(cosResult)
127 return OpenMaya.kUnknownParameter
134 return OpenMayaMPx.asMPxPtr( circle() )
138 def nodeInitializer():
142 circle.aInput = nAttr.create(
"input",
"in", OpenMaya.MFnNumericData.kFloat, 0.0)
143 nAttr.setStorable(
True)
145 circle.aScale = nAttr.create(
"scale",
"sc", OpenMaya.MFnNumericData.kFloat, 10.0)
146 nAttr.setStorable(
True)
148 circle.aFrames = nAttr.create(
"frames",
"fr", OpenMaya.MFnNumericData.kFloat, 48.0)
149 nAttr.setStorable(
True)
152 circle.aSOutput = nAttr.create(
"sineOutput",
"so", OpenMaya.MFnNumericData.kFloat, 0.0)
153 nAttr.setWritable(
False)
154 nAttr.setStorable(
False)
156 circle.aCOutput = nAttr.create(
"cosineOutput",
"co", OpenMaya.MFnNumericData.kFloat, 0.0,)
157 nAttr.setWritable(
False)
158 nAttr.setStorable(
False)
161 circle.addAttribute(circle.aInput)
162 circle.addAttribute(circle.aScale)
163 circle.addAttribute(circle.aFrames)
164 circle.addAttribute(circle.aSOutput)
165 circle.addAttribute(circle.aCOutput)
168 circle.attributeAffects(circle.aInput, circle.aSOutput)
169 circle.attributeAffects(circle.aInput, circle.aCOutput)
170 circle.attributeAffects(circle.aScale, circle.aSOutput)
171 circle.attributeAffects(circle.aScale, circle.aCOutput)
172 circle.attributeAffects(circle.aFrames, circle.aSOutput)
173 circle.attributeAffects(circle.aFrames, circle.aCOutput)
177 def initializePlugin(mobject):
178 mplugin = OpenMayaMPx.MFnPlugin(mobject,
"Autodesk",
"1.0",
"Any")
180 mplugin.registerNode( kPluginNodeTypeName, kPluginNodeId, nodeCreator, nodeInitializer )
182 sys.stderr.write(
"Failed to register node: %s" % kPluginNodeTypeName )
187 def uninitializePlugin(mobject):
188 mplugin = OpenMayaMPx.MFnPlugin(mobject)
190 mplugin.deregisterNode( kPluginNodeId )
192 sys.stderr.write(
"Failed to deregister node: %s" % kPluginNodeTypeName )