OK, I think there might be too few people know how to do this. I will go back to c++. Python is too slow to complete the job.
Thank! Will 2011/9/1 Will Zhou <[email protected]> > Hello, > > This script loads an image file and sends it to Maya RenderView. It can > work, but just too slow when the resolution is larger than 1024x768. Does > anyone know how to speed it up please? Not one pixel by one pixel, but > region by region. Is there any example like using > OpenMayaRender.RV_PIXEL(32) ? I know it's wrong, but how to create a > RV_PIXEL array? Thank you very much. > > ############# CODE BEGIN ################# > ## Author: Will Zhou <[email protected]> > ## Date: 09/01 2011 > > import maya.OpenMaya as OpenMaya > import maya.OpenMayaRender as OpenMayaRender > > > image = OpenMaya.MImage() > #image.readFromFile(r"d:\devroot\lena.jpg") > image.readFromFile(r"D:\devroot\Chrysanthemum.jpg") > wScriptUtil = OpenMaya.MScriptUtil() > widthPtr = wScriptUtil.asUintPtr() > hScriptUtil = OpenMaya.MScriptUtil() > heightPtr = hScriptUtil.asUintPtr() > scriptUtil.setUint(widthPtr, 1) > scriptUtil.setUint(heightPtr, 1) > image.getSize(widthPtr, heightPtr) > width = scriptUtil.getUint(widthPtr) > height = scriptUtil.getUint(heightPtr) > print width, height > > size = width * height > > charPixelPtr = image.pixels() > > OpenMayaRender.MRenderView.startRender(width, height) > > for i in range(0, size): > redIndex = (i*4) + 0 > greenIndex = (i*4) + 1 > blueIndex = (i*4) + 2 > alphaIndex = (i*4) + 3 > red = scriptUtil.getUcharArrayItem(charPixelPtr, redIndex) > green = scriptUtil.getUcharArrayItem(charPixelPtr, greenIndex) > blue = scriptUtil.getUcharArrayItem(charPixelPtr, blueIndex) > alpha = scriptUtil.getUcharArrayItem(charPixelPtr, alphaIndex) > > # FIXME: { > y = int(i/width) > x = int(i-y*width) > > rv_pixels = OpenMayaRender.RV_PIXEL() > rv_pixels.a = alpha > rv_pixels.r = red > rv_pixels.g = green > rv_pixels.b = blue > > if OpenMayaRender.MRenderView.doesRenderEditorExist(): > OpenMayaRender.MRenderView.updatePixels(x, x, y, y, rv_pixels) > # END FIXME: } > > OpenMayaRender.MRenderView.refresh(x, x, y, y) > #OpenMayaRender.MRenderView.refresh(0, width-1, 0, height-1) > OpenMayaRender.MRenderView.endRender() > > ############# CODE END ################# > > Regards, > Will > > -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
