46 import maya.OpenMaya
as OpenMaya
47 import maya.OpenMayaAnim
as OpenMayaAnim
48 import maya.OpenMayaMPx
as OpenMayaMPx
50 kPluginNodeTypeName =
"spyTwistNode"
52 yTwistNodeId = OpenMaya.MTypeId(0x8702)
55 class yTwistNode(OpenMayaMPx.MPxDeformerNode):
57 angle = OpenMaya.MObject()
60 OpenMayaMPx.MPxDeformerNode.__init__(self)
62 def deform(self,dataBlock,geomIter,matrix,multiIndex):
65 angleHandle = dataBlock.inputValue( self.angle )
66 angleValue = angleHandle.asDouble()
69 envelope = OpenMayaMPx.cvar.MPxDeformerNode_envelope
70 envelopeHandle = dataBlock.inputValue( envelope )
71 envelopeValue = envelopeHandle.asFloat()
74 while geomIter.isDone() ==
False:
75 point = geomIter.position()
76 ff = angleValue * point.y * envelopeValue
80 tt= point.x*cct-point.z*cst
81 point.z= point.x*cst + point.z*cct
83 geomIter.setPosition( point )
88 return OpenMayaMPx.asMPxPtr( yTwistNode() )
91 def nodeInitializer():
93 nAttr = OpenMaya.MFnNumericAttribute()
94 yTwistNode.angle = nAttr.create(
"angle",
"fa", OpenMaya.MFnNumericData.kDouble, 0.0 )
96 nAttr.setKeyable(
True)
99 yTwistNode.addAttribute( yTwistNode.angle )
100 outputGeom = OpenMayaMPx.cvar.MPxDeformerNode_outputGeom
101 yTwistNode.attributeAffects( yTwistNode.angle, outputGeom )
103 sys.stderr.write(
"Failed to create attributes of %s node\n", kPluginNodeTypeName )
106 def initializePlugin(mobject):
107 mplugin = OpenMayaMPx.MFnPlugin(mobject)
109 mplugin.registerNode( kPluginNodeTypeName, yTwistNodeId, nodeCreator, nodeInitializer, OpenMayaMPx.MPxNode.kDeformerNode )
111 sys.stderr.write(
"Failed to register node: %s\n" % kPluginNodeTypeName )
114 def uninitializePlugin(mobject):
115 mplugin = OpenMayaMPx.MFnPlugin(mobject)
117 mplugin.deregisterNode( yTwistNodeId )
119 sys.stderr.write(
"Failed to unregister node: %s\n" % kPluginNodeTypeName )