繁体   English   中英

跟踪由特定过程创建的文件

[英]Keep track of which files are created by a certain process

我正在使用Python(3.3)脚本运行一个命令,该命令将为动画电影渲染一堆图像文件。

在渲染时,它每次启动动画的新帧时都会创建一个空的图像文件,完成渲染该帧后,它将图像保存在该空文件上并移至下一帧。

python脚本通过使用以下命令运行另一个脚本来启动此渲染过程:

proc = subprocess.Popen(cmd, shell=True)

是否可以检查在此过程中创建了哪些文件?

原因是,有人可能希望在渲染完成之前停止渲染,但是这样做时,将留下一个空的图像文件。 我想让脚本按下红色的大“ 停止渲染”按钮时删除空白图像,但是我不能简单地删除所有空白图像,因为可能有其他计算机正在渲染-那里的空白图像是为了防止多台计算机渲染相同的图像框架(如果存在其图像文件,则跳过该框架)。

如果有帮助,则所有计算机都使用Windows 7,并且进行渲染的动画程序为Maya(2014)。

如果没有简单的方法,我很乐意使用任何丑陋的技巧来完成工作:)

如果在Maya中进行此操作,则可以使用Maya随附的mayapy交错器(而不是mayaBatch或maya -r)。 在独立版本中,您可以运行设置渲染,执行渲染以及对结果进行后处理所需的任何脚本。 至少可以让您一次处理一帧,并使用python一次提交一幅图像。

基本设置为:

  1. 创建一个Python脚本,该脚本可以执行所需的操作,并且可以在maya python interpeter中正常工作。 该脚本将像在maya侦听器中一样运行,因此您可以导入maya.cmds并根据需要使用maya功能。

  2. 如果脚本需要命令行参数,请使用sys.argv检索它们。 运行脚本时,您传入的所有参数都将在sys.argv中可用。

  3. 通过导入maya.standalone并调用它的initialize方法,您的脚本可以访问Maya的所有功能( 此处有更多详细信息)

  4. 从命令行运行Maya安装的bin文件夹中的mayapy.exe。 -s标志允许您指定要运行的脚本,因此您将在python脚本中作为参数传递,后跟所需的任何其他参数:诸如"path/to/mayapy.exe" -s "path/to/yourscript.py" arg1 arg2 arg3

  5. 您将无法通过control-c捕获用户取消,但是您可以使用与Maya命令端口的TCP连接从外部请求取消,甚至可以仅在每帧之后提示用户输入

对于更简单的操作,您可以使用ZeroMQRpyC之类的东西在Maya中运行rpc服务器。 您也可以使用WSGI服务器监听http端口来制作自己的服务器

您也可以查看3d party渲染管理系统。 有一些开源的人在这里

暂无
暂无

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

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