Exemplo n.º 1
0
def arnoldBatchRender(option):
    # Make sure the aiOptions node exists
    core.createOptions()
    # Parse option string
    kwargs = {}
    options = option.split(" ")
    i, n = 0, len(options)
    if cmds.objExists("defaultResolution.mtoaCommandPort"):
        kwargs["port"] = cmds.getAttr("defaultResolution.mtoaCommandPort")
    if cmds.objExists("defaultArnoldRenderOptions.mtoaOrigFileName"):
        kwargs["ofn"] = cmds.getAttr("defaultArnoldRenderOptions.mtoaOrigFileName")
    while i < n:
        if options[i] in ["-w", "-width"]:
            i += 1
            if i >= n:
                break
            kwargs["width"] = int(options[i])

        elif options[i] in ["-h", "-height"]:
            i += 1
            if i >= n:
                break
            kwargs["height"] = int(options[i])

        elif options[i] in ["-cam", "-camera"]:
            i += 1
            if i >= n:
                break
            kwargs["camera"] = options[i]
        i += 1
    try:
        cmds.arnoldRender(batch=True, **kwargs)
    except RuntimeError, err:
        print err
Exemplo n.º 2
0
        def arnold_render(self):
            sky_transform = None

            # store original settings
            prev_width = cmds.getAttr('defaultResolution.width')
            prev_height = cmds.getAttr('defaultResolution.height')
            prev_device_aspect_ratio = cmds.getAttr('defaultResolution.deviceAspectRatio')
            driver = cmds.ls('defaultArnoldDriver')
            prev_format = cmds.getAttr(driver[0] + '.aiTranslator')
            prev_cam_type = cmds.getAttr(self.render_camera + '.aiTranslator')

            # apply new settings
            cmds.setAttr('defaultResolution.width', 2000)
            cmds.setAttr('defaultResolution.height', 1000)
            cmds.setAttr('defaultResolution.deviceAspectRatio', 2000 / 1000)
            cmds.setAttr(driver[0] + '.aiTranslator', 'exr', type='string')
            cmds.setAttr("%s.aiTranslator" % self.render_camera, "spherical", type="string")

            dome_light = cmds.ls(type="aiSkyDomeLight")
            sky = cmds.ls(type="aiSky")

            if dome_light:
                dome_transform = cmds.listRelatives(dome_light, parent=True, fullPath=True)
                if not sky:
                    '''if domelight exists but no sky (background), create one (making the HDRI visible in render)
                    and set dome texture, rotation and intensity values'''

                    dome_texture = cmds.listConnections(dome_light[0] + '.color')[0]

                    if dome_texture is not None:
                        # create new aiSky and plug in dome texture
                        ai_sky = cmds.shadingNode("aiSky", asUtility=True)
                        sky_transform = cmds.listRelatives(ai_sky, allParents=True)
                        cmds.connectAttr("%s.message" % ai_sky, "defaultArnoldRenderOptions.background", f=True)
                        cmds.connectAttr("%s.outColor" % dome_texture, "%s.color" % ai_sky, f=True)

                        # query dome light attrs
                        dome_intensity = cmds.getAttr(dome_light[0] + '.intensity')
                        dome_format = cmds.getAttr(dome_light[0] + '.format')
                        dome_rotation = cmds.getAttr(dome_transform[0] + '.rotateY')

                        # set as aiSky attrs
                        cmds.setAttr('aiSky1.format', dome_format)
                        cmds.setAttr('aiSky1.intensity', dome_intensity)
                        cmds.setAttr(sky_transform[0] + '.rotateY', dome_rotation)

            # render...
            cmds.arnoldRender(cam=self.render_camera)

            if sky_transform is not None:
                cmds.delete(sky_transform)

            cmds.setAttr('defaultResolution.width', prev_width)
            cmds.setAttr('defaultResolution.height', prev_height)
            cmds.setAttr('defaultResolution.deviceAspectRatio', prev_device_aspect_ratio)
            cmds.setAttr(driver[0] + '.aiTranslator', prev_format, type='string')
            cmds.setAttr(self.render_camera + '.aiTranslator', prev_cam_type, type='string')
Exemplo n.º 3
0
def reRender(*args):

    if currentRender == 'arnold':
        cmds.arnoldRender(cam=camera1)

    elif currentRender == 'vray':
        vrendCommand = 'vrend -camera %s' % (camera0)
        mel.eval(vrendCommand)

    elif currentRender == 'mentalRay':
        cmds.Mayatomr(pv=True, cam=camera0)

    else:
        cmds.warning(
            'Render engine not supported. Rendering using Maya Software renderer.'
        )
        cmds.render(camera1)
Exemplo n.º 4
0
        def arnold_render(self):
            sky_transform = None

            # store original settings
            prev_width = cmds.getAttr('defaultResolution.width')
            prev_height = cmds.getAttr('defaultResolution.height')
            prev_device_aspect_ratio = cmds.getAttr(
                'defaultResolution.deviceAspectRatio')
            driver = cmds.ls('defaultArnoldDriver')
            prev_format = cmds.getAttr(driver[0] + '.aiTranslator')
            prev_cam_type = cmds.getAttr(self.render_camera + '.aiTranslator')

            # apply new settings
            cmds.setAttr('defaultResolution.width', 2000)
            cmds.setAttr('defaultResolution.height', 1000)
            cmds.setAttr('defaultResolution.deviceAspectRatio', 2000 / 1000)
            cmds.setAttr(driver[0] + '.aiTranslator', 'exr', type='string')
            cmds.setAttr("%s.aiTranslator" % self.render_camera,
                         "spherical",
                         type="string")

            dome_light = cmds.ls(type="aiSkyDomeLight")
            sky = cmds.ls(type="aiSky")

            if dome_light:
                dome_transform = cmds.listRelatives(dome_light,
                                                    parent=True,
                                                    fullPath=True)
                if not sky:
                    '''if domelight exists but no sky (background), create one (making the HDRI visible in render)
                    and set dome texture, rotation and intensity values'''

                    dome_texture = cmds.listConnections(dome_light[0] +
                                                        '.color')[0]

                    if dome_texture is not None:
                        # create new aiSky and plug in dome texture
                        ai_sky = cmds.shadingNode("aiSky", asUtility=True)
                        sky_transform = cmds.listRelatives(ai_sky,
                                                           allParents=True)
                        cmds.connectAttr(
                            "%s.message" % ai_sky,
                            "defaultArnoldRenderOptions.background",
                            f=True)
                        cmds.connectAttr("%s.outColor" % dome_texture,
                                         "%s.color" % ai_sky,
                                         f=True)

                        # query dome light attrs
                        dome_intensity = cmds.getAttr(dome_light[0] +
                                                      '.intensity')
                        dome_format = cmds.getAttr(dome_light[0] + '.format')
                        dome_rotation = cmds.getAttr(dome_transform[0] +
                                                     '.rotateY')

                        # set as aiSky attrs
                        cmds.setAttr('aiSky1.format', dome_format)
                        cmds.setAttr('aiSky1.intensity', dome_intensity)
                        cmds.setAttr(sky_transform[0] + '.rotateY',
                                     dome_rotation)

            # render...
            cmds.arnoldRender(cam=self.render_camera)

            if sky_transform is not None:
                cmds.delete(sky_transform)

            cmds.setAttr('defaultResolution.width', prev_width)
            cmds.setAttr('defaultResolution.height', prev_height)
            cmds.setAttr('defaultResolution.deviceAspectRatio',
                         prev_device_aspect_ratio)
            cmds.setAttr(driver[0] + '.aiTranslator',
                         prev_format,
                         type='string')
            cmds.setAttr(self.render_camera + '.aiTranslator',
                         prev_cam_type,
                         type='string')
Exemplo n.º 5
0
def getRegion(rrStart_x, rrStart_y, rrLast_x, rrLast_y):

    values = [rrStart_x, rrStart_y, rrLast_x, rrLast_y]

    camOverscan = cmds.camera(camera0, q=1, ovr=1)

    if LockedAttr() == 'locked':
        cmds.warning('Unlock you camera\'s main attributtes')
        return False

    if cmds.window("vpRenderWindow", exists=1) == False:
        getRvStatus()
        getPaneLayoutStatus()

    if values[3] < 0:
        values[3] = 0

    if values[2] > formX:
        values[2] = formX

    if values[2] - values[0] < 20 or values[1] - values[3] < 20:
        cmds.warning('Region is too small')
    else:
        leftW = marLeft + values[0]
        topW = marTop + (formY - values[1])
        resoX = values[2] - values[0]
        resoY = values[1] - values[3]

        main(values)

        if "Viewport_RenderShape" not in cmds.ls(ca=1):
            setToolBegin()
        else:
            cmds.setAttr('defaultResolution.width', resoX)
            cmds.setAttr('defaultResolution.height', resoY)

            aspRatio = float(cmds.getAttr('defaultResolution.width')) / float(
                cmds.getAttr('defaultResolution.height'))

            cmds.setAttr('defaultResolution.deviceAspectRatio', aspRatio)

        ScaleToCrop = float(formX) / resoX
        ScaleToCrop2 = float(formY) / resoY

        cmds.setAttr(camera0 + '.preScale', float(ScaleToCrop) / camOverscan)

        if 'OverScanExpression' not in cmds.ls(et='expression'):
            cmds.expression(name='OverScanExpression',
                            s=camera0 +
                            '.overscan = Viewport_RenderShape.overscan',
                            o=camera0,
                            ae=1)

        # Pixel Offset
        pixoffX = (float(formX) / 2) - (values[0] + float(resoX) / 2)
        pixoffY = (float(formY) / 2) - (formY - values[1]) - (float(resoY) / 2)

        # Film Translate
        FxOff = float(pixoffX) / (formX / 2)
        FxOff = FxOff * ScaleToCrop

        if FxOff > 0:
            FxOff = FxOff * -1
        else:
            FxOff = -FxOff

        cmds.setAttr(camera0 + '.filmTranslateH', FxOff)

        unitY = float(formY) / 2 * float(formX) / formY
        FyOff = float(pixoffY) / unitY
        FyOff = FyOff * ScaleToCrop

        cmds.setAttr(camera0 + '.filmTranslateV', FyOff)

        cmds.setAttr('defaultResolution.width', resoX)
        cmds.setAttr('defaultResolution.height', resoY)

        aspRatio = float(cmds.getAttr('defaultResolution.width')) / float(
            cmds.getAttr('defaultResolution.height'))
        cmds.setAttr('defaultResolution.deviceAspectRatio', aspRatio)

        cmds.layout('scrollBarForm', e=1, vis=0)

        cmds.renderWindowEditor(renderViews,
                                e=True,
                                snp=(currentPanel, resoX, resoY))
        cmds.renderWindowEditor(renderViews, e=True, rs=True, cap=0, pca=0)
        cmds.renderWindowEditor(renderViews, e=1, cl=(resoX, resoY, 0, 0, 0))

        if currentRender == 'arnold':
            cmds.arnoldRender(cam=camera1)

        elif currentRender == 'vray':

            if cmds.getAttr("vraySettings.vfbOn") == 1:
                cmds.setAttr("vraySettings.vfbOn", 0)

            cmds.setAttr('vraySettings.width', resoX)
            cmds.setAttr('vraySettings.height', resoY)
            mel.eval('vraySetPixelDeviceAspect();')

            vrendCommand = 'vrend -camera %s' % (camera0)
            mel.eval(vrendCommand)

        elif currentRender == 'mentalRay':

            cmds.Mayatomr(pv=True, cam=camera0)

        else:
            cmds.warning(
                'Render engine not supported. Rendering using Maya Software renderer.'
            )
            cmds.render(camera1, x=resoX, y=resoY)

        reRenderVals.append(resoX)
        reRenderVals.append(resoY)
import maya.cmds as cmds

# set: Render Settings/Common/FrameAnimation ext: name#.ext


camera_list = {'cameraShape1':[1,2], 'cameraShape2':[3,4], 'cameraShape3':[5,6]}

for cam, frames in camera_list.items():
    print cam, "{}..{}".format(*frames)
    
    #cmds.arnoldRender(b=True, cam=cam, seq="{}..{}".format(*frames))
    cmds.arnoldRender(b=True, cam=cam, seq="{}..{}".format(*frames))
Exemplo n.º 7
0
def render(startFrame = None,endFrame = None,frameStep = 1,
           render_dir = None,
           renderLayer = None,camera = None,
           renderer = 'sw',**kwargs):

    # 解析输入参数
    startFrame           = startFrame       if startFrame not in ['None'] else None
    endFrame             = endFrame         if endFrame not in ['None'] else None
    render_dir           = render_dir       if render_dir not in ['None'] else None
    renderLayer          = renderLayer      if renderLayer not in ['None'] else None
    camera               = camera           if camera not in ['None'] else None
    renderer             = renderer         if renderer not in ['None'] else None

    # 渲染相关设置
    scenepath = os.path.abspath(kwargs['scene_path'])
    print("\nSTEP 0 获取场景路径: {}\n".format(scenepath))
    workspace = cmds.workspace(q=True,fullName = True)  # /maya/projects/default
    print("\nSTEP 1 获取工作空间: {}\n".format(workspace))

    if not render_dir:
        render_dir = '/'.join([workspace,'images'])
        print("\nSTEP 2.1 设置渲染图片路径: {}\n".format(render_dir))
    if not os.path.isdir(render_dir):
        try:
            os.makedirs(render_dir)
            print("\nSTEP 2.2 新建图片路径: {}\n".format(render_dir))
        except:
            raise Exception('can not make Folder named: %s ' % render_dir)
    
    
    open_scene(scenepath)
    refs = list_referenced_files()
    print("\nSTEP 4 场景相关文件: {} \n".format(refs))
    # 设置起始和结束帧
    if not startFrame:
        startFrame = int(cmds.currentTime(query = True))
    
    if (not endFrame) or (endFrame < startFrame):
        endFrame = startFrame
    # startFrame,endFrame = playback_selection_range()
    print("\nSTEP 5 起始帧: {} 结束帧: {}\n".format(startFrame,endFrame))

    # 设置渲染层, 不同的渲染器对渲染层有不同的配置参数 
    if not renderLayer:
        renderLayer = cmds.editRenderLayerGlobals(q = True,currentRenderLayer = True)
        print("\nSTEP 6.1 未指定渲染层,获取当前渲染层: {}\n".format(renderLayer))

    elif renderLayer not in cmds.ls(type = 'renderLayer'):
        renderLayer = cmds.editRenderLayerGlobals(q = True,currentRenderLayer = True)
        print('\nSTEP 6.2 指定的渲染层不在当前maya环境上, 使用默认的渲染层: %s\n' %(renderLayer))

    else:
        if cmds.editRenderLayerGlobals(q = True,currentRenderLayer = True) != renderLayer:
            cmds.editRenderLayerGlobals(currentRenderLayer = renderLayer)
        print('\nSTEP 6.3 指定的渲染层在当前maya环境上,但不是当前默认渲染层,设置为默认渲染层: %s\n' %(renderLayer))

    # 设置摄像机
    render_cam = 'persp'     
    change_render_cam(render_cam)
    print("\nSTEP 7 设置默认摄像机: {}\n".format(render_cam))
    # get camera  获取摄像机
    if not camera:
        _cameras = [i for i in cmds.listCameras(p = True) if cmds.getAttr('%s.renderable' % i)]
        if _cameras:
            camera = _cameras[0]
        else:
            camera = 'persp'
    print("\nSTEP 8 当前使用的摄像机: {}\n".format(camera))

    #打印当前渲染器设置
    # render_glob = "defaultRenderGlobals"
    # list_Attr = cmds.listAttr(render_glob, r=True, s=True)
    # print("\n")
    # for attr in list_Attr:
    #     get_attr_name = "%s.%s"%(render_glob, attr)
    #     print("STEP 9 默认Render的全局配置信息: {} = {}".format(get_attr_name, cmds.getAttr(get_attr_name)))
    # print("\n")

    # load renderer  加载渲染器
    currenders = cmds.renderer(q=True, namesOfAvailableRenderers=True)
    print('\nSTEP 9 当前可用的渲染器有: {} \n'.format(currenders))

    print("\nSTEP 10 当前插件路径: {} \n".format(os.environ['MAYA_PLUG_IN_PATH']))
    cmds.loadPlugin( allPlugins=True )
    
    if renderer:
        if renderer:
            if renderer != cmds.getAttr('defaultRenderGlobals.currentRenderer'):
                renderer_dict = {'vray':'vrayformaya',
                             'arnold':'mtoa',
                             'mentalRay':'Mayatomr'}
                for key in renderer_dict.keys():
                    if renderer == key:
                        if not cmds.pluginInfo(renderer_dict[key], q=True, l=True):
                            try:
                                cmds.loadPlugin(renderer_dict[key])
                                break
                            except:
                                raise Exception('can not load vray renderer')
        try:
            cmds.setAttr('defaultRenderGlobals.currentRenderer',renderer,type = 'string')
        except:
            raise Exception('error: set currentRenderer %s fail' % renderer)
    else:
        renderer = cmds.getAttr('defaultRenderGlobals.currentRenderer')
        print('\nSTEP 12 指定的渲染器位当前默认渲染器: %s\n' %(renderer))

        
    w, h = scene_resolution()
    print('\nSTEP 13 当前图片分辨率:X={} Y={} .\n'.format(w,h))

    # 设置图像输出格式  cmds.getAttr('defaultRenderGlobals.imageFormat',asString = True)
    _format = getFormatType("PNG")
    print('\nSTEP 14 设置输出图像的格式: %s\n' %(_format))

    print('# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #') 
    print('STEP 15 开始执行渲染任务...\n')

    cd = int(endFrame) + 1
    for i in range(int(startFrame), int(cd)):
        cmds.currentTime(i, u = True)
        if renderer == 'sw':
            cmds.render()
        elif renderer == 'mr':
            out = cmds.Mayatomr(preview = True, camera = camera)
            print("cmds.Mayatomr:",out)
        else:
            pass

    if renderer == 'vray':
        cmds.setAttr ('defaultRenderGlobals.animation', 1 )
        cmds.setAttr ('defaultRenderGlobals.startFrame', startFrame )
        cmds.setAttr ('defaultRenderGlobals.endFrame', endFrame )
        print(cmds.setAttr ('vraySettings.animBatchOnly', 0))
        
        out = pm.vrend(preview = True,camera = camera)
        print("pm.vrend:",out)
    
    elif renderer == 'arnold':
        for i in range(startFrame,endFrame+1,1):
            cmds.currentTime(i)
            out = cmds.arnoldRender(seq=str(i),camera = camera )
        print("cmds.arnoldRender:",out)

    print('# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #') 
Exemplo n.º 8
0
def startRender():
    if core.ACTIVE_CAMERA != None:
        cmds.arnoldRender(cam=core.ACTIVE_CAMERA)
Exemplo n.º 9
0
def startRender():
    if core.ACTIVE_CAMERA != None:
        cmds.arnoldRender(cam=core.ACTIVE_CAMERA)
Exemplo n.º 10
0
def arnoldRender(width, height, doShadows, doGlowPass, camera, options):
    # Make sure the aiOptions node exists
    core.createOptions()
    cmds.arnoldRender(cam=camera, w=width, h=height)