1 from __future__
import division
67 from builtins
import range
68 import maya.OpenMaya
as OpenMaya
69 import maya.OpenMayaMPx
as OpenMayaMPx
70 import maya.OpenMayaRender
as OpenMayaRender
74 kImagePluginName =
"spSimpleImageFile"
77 glRenderer = OpenMayaRender.MHardwareRenderer.theRenderer()
78 glFT = glRenderer.glFunctionTable()
82 class SimpleImageFile(OpenMayaMPx.MPxImageFile):
86 OpenMayaMPx.MPxImageFile.__init__(self)
95 def open( self, pathname, info ):
101 info.pixelType( OpenMaya.MImage.kFloat )
105 info.hardwareType( OpenMaya.MImageFileInfo.kHwTexture2D)
114 def load( self, image, idx ):
121 image.create( width, height, 3, OpenMaya.MImage.kFloat )
122 self.populateTestImage( image.floatPixels(), width, height )
131 def glLoad( self, info, imageNumber ):
139 image.create( w, h, 3, OpenMaya.MImage.kFloat )
140 self.populateTestImage( image.floatPixels(), w, h )
143 glFT.glTexImage2D( OpenMayaRender.MGL_TEXTURE_2D, 0, \
144 OpenMayaRender.MGL_RGB, w, h, 0, OpenMayaRender.MGL_RGB, \
145 OpenMayaRender.MGL_FLOAT, pixelsPtr )
153 def populateTestImage( self, pixels, w, h ):
157 for y
in range( 0, h ):
158 g = rainbowScale * y / float(h)
159 for x
in range( 0, w ):
160 r = rainbowScale * x / float(w)
161 OpenMaya.MScriptUtil.setFloatArray( pixels, index, r )
163 OpenMaya.MScriptUtil.setFloatArray( pixels, index, g )
165 b = rainbowScale * 1.5 - r - g
166 OpenMaya.MScriptUtil.setFloatArray( pixels, index, b )
171 return OpenMayaMPx.asMPxPtr( SimpleImageFile() )
175 def initializePlugin( mObject ):
176 mPlugin = OpenMayaMPx.MFnPlugin(mObject,
"Autodesk",
"1.0",
"Any")
180 mPlugin.registerImageFile( kImagePluginName, creator, extensions )
182 sys.stderr.write(
"Failed to register image plugin: %s" % kImagePluginName )
186 def uninitializePlugin( mObject ):
187 mPlugin = OpenMayaMPx.MFnPlugin( mObject )
189 mPlugin.deregisterImageFile( kImagePluginName )
191 sys.stderr.write(
"Failed to deregister image: %s" % kImagePluginName )