【问题标题】:how to save multi images by MEL command如何通过 MEL 命令保存多张图像
【发布时间】:2015-02-13 18:25:12
【问题描述】:

我是 MEL 脚本的新手,正在使用 MAYA 处理大量文件(超过 10000 个)的批量渲染,基本原型是这样的:

import maya.mel as mel
import maya.cmds as mc
mc.file("D:/render/abc.mb",i=True)
mel.eval('RenderIntoNewWindow;')
mc.renderWindowEditor('renderView' , e=True , wi='D:/render/abc')

这是一个简单的脚本,它包含三个命令:import、render、saveimage。

这就是问题所在。 RenderIntoNewWindow 似乎是一种异步方法,因此脚本将在渲染过程中继续进行。 然后 Maya 会保存一些不完整的图像。

我还尝试了一个回调方法'renderwindowssaveimagecallback'。

mel.eval('renderWindowSaveImageCallback "renderView" ("D:/render/abc") "image";')

但它也没有工作。 Maya 给出消息“ImageFormats instance has no attribute 'oldOutf' #”。

是否有任何命令可以让我以同步方式渲染图像? 谢谢。

【问题讨论】:

    标签: python maya mel


    【解决方案1】:

    您可能不想使用 RenderIntoNewWindow,因为这是一个批处理脚本。您可以只使用 cmds.render() 并传入要渲染的相机。这是一个非常简单的示例:

    cmds.setAttr("defaultRenderGlobals.imageFormat", 32)
    result = cmds.render('persp', x=512, y=512)
    

    第一行设置渲染格式为PNG,第二行渲染图像并将文件名放入变量'result'中。

    Maya 让控制文件的最终位置、格式等内容变得非常笨重。最简单的做法是在渲染全局窗口中设置适合您的选项并检查您的脚本侦听器以了解设置更改,或咨询node reference 以获得渲染全局例如,指定文件名而不是仅仅重复渲染时的 Maya 文件的名称,您可以这样做:

     cmds.setAttr("defaultRenderGlobals.ifp",  "your_filename_here",type='string')
    

    批处理部分很容易,您只需遍历文件列表并对每个文件执行相同的操作

    filenames = ['c:/batch/a.mb', 'c:/batch/b.mb']
    results = []
    for eachfile in filenames:
        cmds.file(eachfile, open =True, force=True)
        cmds.setAttr("defaultRenderGlobals.imageFormat", 32)
        # other render settings would go here
        result.append( cmds.render('persp', x=512, y=512))
    
    print results # prints out the names of all the rendered files
    

    请注意,渲染设置(因为它支持许多具有自己设置的不同渲染器,从 Maya 到 OpenGL 到 MentalRay 到 Turtle)非常复杂。如果您希望对文件进行复杂的配置,最好投资一个商业批处理渲染管理器,该管理器具有良好的用户界面,可以处理您需要使用的所有选项。对于简单的情况(尤其是文件已经正确设置并且您想要做的只是渲染它们)上面应该没问题。

    【讨论】:

    • 非常感谢您的回答。另一个问题。 cmds.render 只能使用 MAYA 默认渲染。但是如果我需要用户 arnold 我该怎么办?
    • 尝试在 defaultRenderGlobals 对象上设置 currentRenderer 属性。 (手动设置一次,然后通过检查属性查看正确的字符串是什么)。
    猜你喜欢
    • 1970-01-01
    • 2021-07-11
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多