简体   繁体   English

Maya-使用Python渲染序列

[英]Maya - Using Python to render a sequence

I am making a test render script in Python and am having problems getting my render calls to output sequences, and not just one frame. 我正在用Python做一个测试渲染脚本,在将渲染调用输出到输出序列而不是一帧时遇到了问题。

I am working in Maya 2015 on a Windows 7 machine. 我正在Windows 7计算机上的Maya 2015中工作。

I have tried using the ogsRender() (Hardware 2.0) and render() (Software Render) commands. 我尝试使用ogsRender()(硬件2.0)和render()(软件渲染)命令。 And while both of them proclaim to be able to output sequences in the docs, I can't seem to get them to do so. 尽管他们两个都宣称能够在文档中输出序列,但我似乎无法让他们这样做。

import maya.cmds as cmds
cmds.render()
cmds.ogsRender()

Being a test render script, it doesn't need to be pretty--just fast. 作为测试渲染脚本,它不需要很漂亮-只是很快。

hwRender() (old Hardware Render) seems to work fine, outputting frames according to render settings. hwRender()(旧的硬件渲染)似乎工作正常,根据渲染设置输出帧。 However, I get a lot of white artifacts from any intersections when using that render, making it hard to see if things are correct. 但是,在使用该渲染器时,我从任何交叉点都会得到很多白色的假象,这使得很难看清事情是否正确。

Does anyone know how to get render() or ogsRender() to output sequences? 有谁知道如何获取render()或ogsRender()来输出序列?

Or maybe remove the white artifacts hwRender() produces? 还是删除hwRender()产生的白色假象?

Thanks for your time! 谢谢你的时间!

Just incase this is what you're after, here's a rough approach you could use where you jog the frame and make your own batch-ish render system. 以防万一,这是您要追求的目标,这是一种粗略的方法,可用于点动框架并制作自己的批处理渲染系统。

The only reason I've used renderfn rather than hardcoding maya.cmds.render is just incase you wanted to hook into something else (like, I dunno, dropping out some kind of scenefile that you'd feed into a renderfarm or suchlike) 我使用renderfn而不是对maya.cmds.render进行硬编码的唯一原因是,以防万一您想挂入其他内容(例如,我不知道,放弃某种场景文件,将其输入到renderfarm之类的东西)

import maya.cmds as mc
def render_seq(startframe = 1, endframe = 10, renderfn = mc.render, renderfn_args = None):
    '''render out a sequence of frames as per global settings

    defaults to using maya.cmds.render for frames 1-10'''

    # save state
    now = mc.currentTime(q=True)

    for x in xrange(startframe, endframe):
        mc.currentTime(x)
        renderfn(renderfn_args)

    # restore state
    mc.currentTime(now)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM