使用Render命令从mel回调运行python

时间:2014-01-02 20:53:01

标签: python callback render maya mel

我需要通过终端运行批量渲染命令,并使用mel回调来运行python模块。

我正在使用的终端命令是:

Render -preRender "python(\"import sys\nsys.path.append(\"/Volumes/raid/farm_script/\")\nfrom run_os import Farm\nFarm()\")" "/path/to/scene.mb";

基本上,转义字符串中的命令应该如下所示:

import sys
sys.path.append("/Volumes/raid/farm_script/")
from run_os import Farm
Farm()

在Maya的脚本编辑器中,在python选项卡中运行上面的命令会打印出数据。

运行完全相同的脚本,在mel选项卡中,但包含在python函数中,也可以正常工作!

在位于/Volumes/raid/farm_scripts/run_os.py下的“农场”类中,我有一个小小的脚本。

class Farm():
    def __init__(self):
        self.run()
    def run(self, *args):
        print "=== TEST ===\n"

我在脚本编辑器中看到了我的打印测试,但运行此命令,使用批量渲染终端中的MEL回调,给我留下了“意外的缩进错误”,经过大力测试后,我发现它来自from run_os import Farm,所以我的问题是,为什么这一行会产生缩进错误,因为我正在使用\n(换行符)标志,所以根本没有缩进,除非我认真对待错误!

1 个答案:

答案 0 :(得分:1)

这可能是因为你要求shell命令运行包含换行符的参数。尝试将脚本放入mel文件(在渲染机器的脚本目录中),然后只是采购它。或者,如果不这样做,请通过编辑环境变量或在Maya.env中设置它来确保渲染计算机具有正确的sys路径。

如果事情比这更复杂,你可以通过启动Maya.standalone并从外部控制来完成整个事情。如果你走这条路,你可以添加一个使用套接字或wsgi 1的简单服务器,通过网络或本地接受命令。