Python 如何使用MEL命令保存多幅图像

Python 如何使用MEL命令保存多幅图像,python,maya,mel,Python,Maya,Mel,我不熟悉MEL脚本,正在使用MAYA处理海量文件(超过10000个)的批渲染,基本原型如下: 将maya.mel导入为mel 将maya.cmds作为mc导入 mc.file(“D:/render/abc.mb”,i=True) mel.eval('RenderIntoNewWindow;') mc.renderwinoweditor('renderView',e=True,wi='D:/render/abc')您可能不想使用RenderIntoNewWindow,因为这是一个批处理脚本。只需

我不熟悉MEL脚本,正在使用MAYA处理海量文件(超过10000个)的批渲染,基本原型如下:

将maya.mel导入为mel
将maya.cmds作为mc导入
mc.file(“D:/render/abc.mb”,i=True)
mel.eval('RenderIntoNewWindow;')

mc.renderwinoweditor('renderView',e=True,wi='D:/render/abc')
您可能不想使用RenderIntoNewWindow,因为这是一个批处理脚本。只需使用cmds.render()并传入要渲染的摄影机。下面是一个非常简单的示例:

cmds.setAttr("defaultRenderGlobals.imageFormat", 32)
result = cmds.render('persp', x=512, y=512)
第一行将渲染格式设置为PNG,第二行渲染图像并将文件名放入变量“result”

Maya使控制文件的结尾位置、格式等操作变得非常笨拙。最简单的方法是在“渲染全局”(render globals)窗口中设置适用于您的选项,并检查脚本侦听器的设置更改,或参考“渲染全局”(renderGlobals)的设置,例如,要指定文件名而不是在渲染时重复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)非常复杂。如果您希望必须对文件进行复杂的配置,那么最好投资一个商业批处理渲染管理器,该管理器具有一个良好的UI,可用于所有需要使用的选项。对于简单的情况(尤其是文件已经正确设置,您只需渲染它们),上述操作应该可以。

非常感谢您的回答。另一个问题。cmds.render只能使用MAYA默认渲染。但是如果我需要使用arnold,我应该怎么做?尝试在defaultRenderGlobals对象上设置currentRenderer属性。(手动设置一次,然后通过检查属性查看正确的字符串)。