80 import maya.OpenMaya
as OpenMaya
81 import maya.OpenMayaMPx
as OpenMayaMPx
84 kPluginNodeTypeName =
"spCustomImagePlane"
85 kPluginNodeId = OpenMaya.MTypeId(0x87016)
88 class customImagePlane(OpenMayaMPx.MPxImagePlane):
90 aTransparency = OpenMaya.MObject()
96 OpenMayaMPx.MPxImagePlane.__init__(self)
98 def getInternalValueInContext( self, plug, handle, context ):
99 if plug == self.aTransparency:
100 handle.setDouble( self.fTransparency )
103 return OpenMayaMPx.MPxImagePlane.getInternalValueInContext( self, plug, handle, context )
105 def setInternalValueInContext( self, plug, handle, context ):
106 if plug == self.aTransparency:
107 self.fTransparency = handle.asDouble()
111 return OpenMayaMPx.MPxImagePlane.setInternalValueInContext( self, plug, handle, context )
113 def loadImageMap(self, fileName, frame, image):
115 image.readFromFile(fileName)
119 widthUtil = OpenMaya.MScriptUtil(0)
120 widthPtr = widthUtil.asUintPtr()
121 heightUtil = OpenMaya.MScriptUtil(0)
122 heightPtr = heightUtil.asUintPtr()
123 image.getSize( widthPtr, heightPtr )
125 width = widthUtil.getUint(widthPtr)
126 height = heightUtil.getUint(heightPtr)
127 size = width * height
130 charPixelPtr = image.pixels()
131 for i
in range( 0, size, 4 ):
133 alpha = OpenMayaScript.getCharArrayItem(charPixelPtr,alphaIndex)
134 OpenMayaScript.setCharArray( alpha * (1.0 - self.fTransparency), alphaIndex )
137 thisNode = self.thisMObject()
138 fnThisNode = OpenMaya.MFnDependencyNode(thisNode)
139 useDepthMap = fnThisNode.attribute(
"useDepthMap")
140 depthMap = OpenMaya.MPlug( thisNode, useDepthMap )
141 value = depthMap.asBool()
146 for i
in range( 0, height ):
147 for j
in range( 0, width ):
149 buffer.insert(c, -1.0)
151 buffer.insert(c, 0.0)
154 depthMapArray = OpenMaya.MScriptUtil()
155 depthMapArray.createFromList( buffer )
156 depthMapArrayFloatPtr = depthMapArray.asFloatPtr()
157 image.setDepthMap( depthMapArrayFloatPtr, width, height )
164 return OpenMayaMPx.asMPxPtr( customImagePlane() )
167 def nodeInitializer():
168 nAttr = OpenMaya.MFnNumericAttribute()
171 customImagePlane.aTransparency = nAttr.create(
"transparency",
"tp", OpenMaya.MFnNumericData.kDouble, 0.0)
172 nAttr.setStorable(
True)
173 nAttr.setInternal(
True)
176 nAttr.setKeyable(
True)
178 customImagePlane.addAttribute(customImagePlane.aTransparency)
181 def initializePlugin(mobject):
182 mplugin = OpenMayaMPx.MFnPlugin(mobject,
"Autodesk",
"1.0",
"Any")
184 mplugin.registerNode( kPluginNodeTypeName, kPluginNodeId, nodeCreator, nodeInitializer, OpenMayaMPx.MPxNode.kImagePlaneNode )
186 sys.stderr.write(
"Failed to register node: %s" % kPluginNodeTypeName )
191 def uninitializePlugin(mobject):
192 mplugin = OpenMayaMPx.MFnPlugin(mobject)
194 mplugin.deregisterNode( kPluginNodeId )
196 sys.stderr.write(
"Failed to register node: %s" % kPluginNodeTypeName )