我正在使用Python(3.3)脚本来运行一个命令,该命令将为动画电影渲染一大堆图像文件。
在渲染时,它会在每次启动动画的新帧时创建一个空图像文件,当它完成渲染该帧时,它会将图像保存在该空文件上并移动到下一帧。
python脚本通过使用以下命令运行另一个脚本来启动此呈现过程:
proc = subprocess.Popen(cmd, shell=True)
是否可以检查在此过程中创建了哪些文件?
原因是,某人可能希望在渲染完成之前停止渲染,但是当他们这样做时,会留下一个空的图像文件。当按下大红色停止渲染按钮时,我想让脚本删除空图像,但我不能简单地删除所有空图像,因为可能有其他计算机渲染 - 空图像在那里防止多台计算机呈现相同的帧(如果它的图像文件存在,它们会跳过该帧)。
如果有帮助,所有计算机都使用Windows 7,执行渲染的动画程序是Maya(2014)。
如果没有简单的方法,我会很高兴使用任何一种丑陋的黑客来完成工作:)
答案 0 :(得分:1)
如果您在Maya中执行此操作,则可以使用Maya附带的mayapy interpeter(而不是mayaBatch或maya -r)。在独立内部,您可以运行设置渲染,执行渲染和后处理结果所需的任何脚本。至少,这将允许您一次处理一个帧并使用python一次提交一个图像。
基本设置如下:
创建一个python脚本,它可以完成你需要做的事情并在maya python interpeter中正常工作。该脚本将像在maya侦听器中一样运行,因此您可以导入maya.cmds
并根据需要使用maya功能。
如果脚本需要命令行参数,请使用sys.argv检索它们。运行脚本时,传入的任何参数都将在sys.argv中可用。
您的脚本可以通过导入maya.standalone
并调用它的初始化方法(更多详情here)
从命令行运行maya安装的bin文件夹中的mayapy.exe。 -s标志允许您指定要运行的脚本,因此您将作为参数传入python脚本,然后传递您需要的任何其他参数:类似"path/to/mayapy.exe" -s "path/to/yourscript.py" arg1 arg2 arg3
。
对于更高级的操作,您可以使用ZeroMQ或RpyC之类的内容在Maya中运行rpc服务器。您也可以使用WSGI server listening to the http port制作自己的作品。
您还可以查看3d派对渲染管理系统。有一些开源的here