66 import maya.OpenMaya
as OpenMaya
67 import maya.OpenMayaMPx
as OpenMayaMPx
68 import maya.OpenMayaRender
as OpenMayaRender
72 kImagePluginName =
"spSimpleImageFile"
75 glRenderer = OpenMayaRender.MHardwareRenderer.theRenderer()
76 glFT = glRenderer.glFunctionTable()
80 class SimpleImageFile(OpenMayaMPx.MPxImageFile):
84 OpenMayaMPx.MPxImageFile.__init__(self)
93 def open( self, pathname, info ):
99 info.pixelType( OpenMaya.MImage.kFloat )
103 info.hardwareType( OpenMaya.MImageFileInfo.kHwTexture2D)
112 def load( self, image, idx ):
119 image.create( width, height, 3, OpenMaya.MImage.kFloat )
120 self.populateTestImage( image.floatPixels(), width, height )
129 def glLoad( self, info, imageNumber ):
137 image.create( w, h, 3, OpenMaya.MImage.kFloat )
138 self.populateTestImage( image.floatPixels(), w, h )
141 glFT.glTexImage2D( OpenMayaRender.MGL_TEXTURE_2D, 0, \
142 OpenMayaRender.MGL_RGB, w, h, 0, OpenMayaRender.MGL_RGB, \
143 OpenMayaRender.MGL_FLOAT, pixelsPtr )
151 def populateTestImage( self, pixels, w, h ):
155 for y
in range( 0, h ):
156 g = rainbowScale * y / float(h)
157 for x
in range( 0, w ):
158 r = rainbowScale * x / float(w)
159 OpenMaya.MScriptUtil.setFloatArray( pixels, index, r )
161 OpenMaya.MScriptUtil.setFloatArray( pixels, index, g )
163 b = rainbowScale * 1.5 - r - g
164 OpenMaya.MScriptUtil.setFloatArray( pixels, index, b )
169 return OpenMayaMPx.asMPxPtr( SimpleImageFile() )
173 def initializePlugin( mObject ):
174 mPlugin = OpenMayaMPx.MFnPlugin(mObject,
"Autodesk",
"1.0",
"Any")
178 mPlugin.registerImageFile( kImagePluginName, creator, extensions )
180 sys.stderr.write(
"Failed to register image plugin: %s" % kImagePluginName )
184 def uninitializePlugin( mObject ):
185 mPlugin = OpenMayaMPx.MFnPlugin( mObject )
187 mPlugin.deregisterImageFile( kImagePluginName )
189 sys.stderr.write(
"Failed to deregister image: %s" % kImagePluginName )