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 )