69 import maya.OpenMaya
as OpenMaya
70 import maya.OpenMayaAnim
as OpenMayaAnim
71 import maya.OpenMayaMPx
as OpenMayaMPx
72 import maya.cmds
as cmds
74 kPluginNodeTypeName =
"spyTwistNode"
78 kApiVersion = cmds.about(apiVersion=
True)
79 if kApiVersion < 201600:
80 outputGeom = OpenMayaMPx.cvar.MPxDeformerNode_outputGeom
81 envelope = OpenMayaMPx.cvar.MPxDeformerNode_envelope
83 outputGeom = OpenMayaMPx.cvar.MPxGeometryFilter_outputGeom
84 envelope = OpenMayaMPx.cvar.MPxGeometryFilter_envelope
87 class yTwistNode(OpenMayaMPx.MPxDeformerNode):
92 OpenMayaMPx.MPxDeformerNode.__init__(self)
94 def deform(self,dataBlock,geomIter,matrix,multiIndex):
97 angleHandle = dataBlock.inputValue( self.angle )
98 angleValue = angleHandle.asDouble()
101 envelopeHandle = dataBlock.inputValue( envelope )
102 envelopeValue = envelopeHandle.asFloat()
105 while geomIter.isDone() ==
False:
106 point = geomIter.position()
107 ff = angleValue * point.y * envelopeValue
111 tt= point.x*cct-point.z*cst
112 point.z= point.x*cst + point.z*cct
114 geomIter.setPosition( point )
119 return OpenMayaMPx.asMPxPtr( yTwistNode() )
122 def nodeInitializer():
125 yTwistNode.angle = nAttr.create(
"angle",
"fa", OpenMaya.MFnNumericData.kDouble, 0.0 )
127 nAttr.setKeyable(
True)
130 yTwistNode.addAttribute( yTwistNode.angle )
131 yTwistNode.attributeAffects( yTwistNode.angle, outputGeom )
133 sys.stderr.write(
"Failed to create attributes of %s node\n", kPluginNodeTypeName )
136 def initializePlugin(mobject):
137 mplugin = OpenMayaMPx.MFnPlugin(mobject)
139 mplugin.registerNode( kPluginNodeTypeName, yTwistNodeId, nodeCreator, nodeInitializer, OpenMayaMPx.MPxNode.kDeformerNode )
141 sys.stderr.write(
"Failed to register node: %s\n" % kPluginNodeTypeName )
144 def uninitializePlugin(mobject):
145 mplugin = OpenMayaMPx.MFnPlugin(mobject)
147 mplugin.deregisterNode( yTwistNodeId )
149 sys.stderr.write(
"Failed to unregister node: %s\n" % kPluginNodeTypeName )