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

Reply via email to