有没有办法在命令行渲染过程中基本打印我自己的输出?
假设我不需要/想要默认情况下可能吐出的所有其他输出,我知道你可以改变详细级别,但是我想输出非常具体的东西,但是我无法想象它出。我目前将详细程度输出呈现给文件,所以我想在终端(我正在使用MAC)中打印渲染当前所在的帧。
这可能只是一个简单的想法,但这是我尝试的:
Render -preFrame "print `currentTime -q`;" -s 1 -e 20 -rd /render/directory/ maya_file.mb
显然,-preFrame
需要一个字符串,根据文档可以采用mel命令,但显然这仅限于某些命令,我假设currentTime命令是从maya的时间轴中提取信息,不要自己从渲染器中排队...当我立即运行上面的命令时,它会吐出这个:-bash: currentTime: command not found
并且在渲染失败后不久/不会启动。
理想情况下,我想在每帧开始时打印以下内容:
"Started rendering frame XXXX at TIME GOES HERE"
,就这样,我可以快速查看终端,看看渲染器是否出现故障,卡住或者出现在何处以及何时启动它。
所以我的问题是,看到currentTime是在Maya中使用的mel命令,还有另一种方法可以打印这些信息吗?
干杯, 香农
答案 0 :(得分:1)
经过几个小时的搜索,我最终发现你可以将maya作为一个交互式shell启动。通过这样做,我可以在打开脚本时获取脚本,然后在内存中运行我想要的任何内容,如果我当时打开了Maya。
/Applications/Autodesk/maya2014/Maya.app/Contents/MacOS/maya -prompt -script "/Volumes/raid/farm_script/setupRender.mel"
在setupRender.mel
文件中,我能够分配变量,包含渲染选项等,在这样做时,我还能够为帧编号创建一个全局变量,并在preFrame回调期间递增它,像这样:
int $startFrame = 100;
int $endFrame = 1110;
global int $frameCount = 0;
string $preRenderStatistics = "'global int $frameCount; $frameCount = " + $startFrame + ";'";
string $preFrameStatistics = "'print(\"Rendering frame: \" + $frameCount++)'";
string $additionalFlags = "";
string $sceneFilePath = "'/Volumes/path/to/file/intro_video_001.mb'";
system("Render -preRender " + $preRenderStatistics + " -preFrame " + $preFrameStatistics + " -s " + $startFrame + " -e " + $endFrame + " -x " + $additionalFlags + " " + $sceneFilePath);
这是我目前拥有的一个非常简化的版本,但希望如果他们偶然发现它,这将有助于其他人。
答案 1 :(得分:0)
查看渲染设置的pre render layer MEL
和/或pre render frame MEL
部分。
它需要MEL,因此您需要在MEL中编写它或将您的python包装在MEL中。对于这么简单的用法,我只想把它写在MEL中:
print `currentTime -q`