48 import maya.OpenMaya
as OpenMaya
49 import maya.OpenMayaMPx
as OpenMayaMPx
51 kPluginNodeName =
"spAnimCube"
52 kPluginNodeId = OpenMaya.MTypeId(0x8700B)
54 class animCube(OpenMayaMPx.MPxNode):
55 time = OpenMaya.MObject()
56 outputMesh = OpenMaya.MObject()
59 OpenMayaMPx.MPxNode.__init__(self)
61 def createMesh(self, tempTime, outData):
62 frame = int(tempTime.asUnits(OpenMaya.MTime.kFilm))
66 cubeSize = 0.5 * float(frame % 10)
72 vtx_1 = OpenMaya.MFloatPoint(-cubeSize, -cubeSize, -cubeSize)
73 vtx_2 = OpenMaya.MFloatPoint( cubeSize, -cubeSize, -cubeSize)
74 vtx_3 = OpenMaya.MFloatPoint( cubeSize, -cubeSize, cubeSize)
75 vtx_4 = OpenMaya.MFloatPoint(-cubeSize, -cubeSize, cubeSize)
76 vtx_5 = OpenMaya.MFloatPoint(-cubeSize, cubeSize, -cubeSize)
77 vtx_6 = OpenMaya.MFloatPoint(-cubeSize, cubeSize, cubeSize)
78 vtx_7 = OpenMaya.MFloatPoint( cubeSize, cubeSize, cubeSize)
79 vtx_8 = OpenMaya.MFloatPoint( cubeSize, cubeSize, -cubeSize)
81 points = OpenMaya.MFloatPointArray()
92 faceConnects = OpenMaya.MIntArray()
93 faceConnects.setLength(numFaceConnects)
94 faceConnects.set(0, 0)
95 faceConnects.set(1, 1)
96 faceConnects.set(2, 2)
97 faceConnects.set(3, 3)
98 faceConnects.set(4, 4)
99 faceConnects.set(5, 5)
100 faceConnects.set(6, 6)
101 faceConnects.set(7, 7)
102 faceConnects.set(3, 8)
103 faceConnects.set(2, 9)
104 faceConnects.set(6, 10)
105 faceConnects.set(5, 11)
106 faceConnects.set(0, 12)
107 faceConnects.set(3, 13)
108 faceConnects.set(5, 14)
109 faceConnects.set(4, 15)
110 faceConnects.set(0, 16)
111 faceConnects.set(4, 17)
112 faceConnects.set(7, 18)
113 faceConnects.set(1, 19)
114 faceConnects.set(1, 20)
115 faceConnects.set(7, 21)
116 faceConnects.set(6, 22)
117 faceConnects.set(2, 23)
119 faceCounts = OpenMaya.MIntArray()
120 faceCounts.setLength(6)
128 meshFS = OpenMaya.MFnMesh()
129 newMesh = meshFS.create(numVertices, numFaces, points, faceCounts, faceConnects, outData)
133 def compute(self, plug, data):
134 if plug == animCube.outputMesh:
135 timeData = data.inputValue(animCube.time)
136 tempTime = timeData.asTime()
138 outputHandle = data.outputValue(animCube.outputMesh)
140 dataCreator = OpenMaya.MFnMeshData()
141 newOutputData = dataCreator.create()
143 self.createMesh(tempTime, newOutputData)
145 outputHandle.setMObject(newOutputData)
148 return OpenMaya.kUnknownParameter
151 return OpenMayaMPx.asMPxPtr( animCube() )
153 def nodeInitializer():
154 unitAttr = OpenMaya.MFnUnitAttribute()
155 typedAttr = OpenMaya.MFnTypedAttribute()
157 animCube.time = unitAttr.create(
"time",
"tm", OpenMaya.MFnUnitAttribute.kTime, 0.0)
158 animCube.outputMesh = typedAttr.create(
"outputMesh",
"out", OpenMaya.MFnData.kMesh)
160 animCube.addAttribute(animCube.time)
161 animCube.addAttribute(animCube.outputMesh)
163 animCube.attributeAffects(animCube.time, animCube.outputMesh)
167 def initializePlugin(mobject):
168 mplugin = OpenMayaMPx.MFnPlugin(mobject)
170 mplugin.registerNode( kPluginNodeName, kPluginNodeId, nodeCreator, nodeInitializer)
172 sys.stderr.write(
"Failed to register node: %s" % kPluginNodeName )
176 def uninitializePlugin(mobject):
177 mplugin = OpenMayaMPx.MFnPlugin(mobject)
179 mplugin.deregisterNode( kPluginNodeId )
181 sys.stderr.write(
"Failed to deregister node: %s" % kPluginNodeName )