82 import maya.OpenMaya 
as OpenMaya
 
   83 import maya.OpenMayaMPx 
as OpenMayaMPx
 
   86 kPluginNodeTypeName = 
"spCustomImagePlane" 
   90 class customImagePlane(OpenMayaMPx.MPxImagePlane):
 
   98         OpenMayaMPx.MPxImagePlane.__init__(self)
 
  100     def getInternalValue(self, plug, handle ):
 
  101         if plug == self.aTransparency:
 
  102             handle.setDouble( self.fTransparency )
 
  105         return OpenMayaMPx.MPxImagePlane.getInternalValue(self, plug, handle )
 
  107     def setInternalValue(self, plug, handle ):
 
  108         if plug == self.aTransparency:
 
  109             self.fTransparency = handle.asDouble()
 
  113         return OpenMayaMPx.MPxImagePlane.setInternalValue(self, plug, handle )  
 
  115     def loadImageMap(self, fileName, frame, image):
 
  117             image.readFromFile(fileName)
 
  121             widthUtil = OpenMaya.MScriptUtil(0)
 
  122             widthPtr = widthUtil.asUintPtr()
 
  123             heightUtil = OpenMaya.MScriptUtil(0)
 
  124             heightPtr = heightUtil.asUintPtr()
 
  125             image.getSize( widthPtr, heightPtr )
 
  127             width = widthUtil.getUint(widthPtr)
 
  128             height = heightUtil.getUint(heightPtr)      
 
  129             size = width * height
 
  132             charPixelPtr = image.pixels()
 
  133             for i 
in range( 0, size, 4 ):
 
  135                 alpha = OpenMayaScript.getCharArrayItem(charPixelPtr,alphaIndex)
 
  136                 OpenMayaScript.setCharArray( alpha * (1.0 - self.fTransparency), alphaIndex )
 
  139             thisNode = self.thisMObject()
 
  141             useDepthMap = fnThisNode.attribute(
"useDepthMap")
 
  143             value = depthMap.asBool()
 
  148                 for i 
in range( 0, height ):
 
  149                     for j 
in range( 0, width ):
 
  151                             buffer.insert(c, -1.0)
 
  153                             buffer.insert(c, 0.0)
 
  156                 depthMapArray = OpenMaya.MScriptUtil()
 
  157                 depthMapArray.createFromList( buffer )
 
  158                 depthMapArrayFloatPtr = depthMapArray.asFloatPtr()
 
  159                 image.setDepthMap( depthMapArrayFloatPtr, width, height )
 
  166     return OpenMayaMPx.asMPxPtr( customImagePlane() )
 
  169 def nodeInitializer():
 
  173     customImagePlane.aTransparency = nAttr.create(
"transparency", 
"tp", OpenMaya.MFnNumericData.kDouble, 0.0)
 
  174     nAttr.setStorable(
True)
 
  175     nAttr.setInternal(
True)
 
  178     nAttr.setKeyable(
True)
 
  180     customImagePlane.addAttribute(customImagePlane.aTransparency)
 
  183 def initializePlugin(mobject):
 
  184     mplugin = OpenMayaMPx.MFnPlugin(mobject, 
"Autodesk", 
"1.0", 
"Any")
 
  186         mplugin.registerNode( kPluginNodeTypeName, kPluginNodeId, nodeCreator, nodeInitializer, OpenMayaMPx.MPxNode.kImagePlaneNode )
 
  188         sys.stderr.write( 
"Failed to register node: %s" % kPluginNodeTypeName )
 
  193 def uninitializePlugin(mobject):
 
  194     mplugin = OpenMayaMPx.MFnPlugin(mobject)
 
  196         mplugin.deregisterNode( kPluginNodeId )
 
  198         sys.stderr.write( 
"Failed to register node: %s" % kPluginNodeTypeName )