【问题标题】:Print current frame during command line render?在命令行渲染期间打印当前帧?
【发布时间】:2014-04-23 06:05:50
【问题描述】:

有没有办法在命令行渲染期间打印我自己的输出?

假设我不需要/想要 Maya 默认输出的所有其他输出,我知道您可以更改详细程度,但是我想输出一些非常具体的东西,但我想不通出去。我目前将详细输出渲染到文件中,所以我想在终端(我使用 MAC)中打印当前渲染的帧。

这可能只是头脑简单,但这是我尝试过的:

Render -preFrame "print `currentTime -q`;" -s 1 -e 20 -rd /render/directory/ maya_file.mb 

显然,-preFrame 需要一个字符串,根据文档,这可以接受 mel 命令,但显然这仅限于某些命令,我​​假设 currentTime 命令正在从 Maya 中的时间轴中提取信息,而不是 queeering它来自渲染器本身...当我立即运行上述命令时,它会吐出:-bash: currentTime: command not found 并且在渲染失败/不启动后不久。

理想情况下,我想在每一帧开始时打印以下内容:

"Started rendering frame XXXX at TIME GOES HERE",这样,我可以快速查看终端,查看渲染器是否出现故障、卡住或在何处以及何时启动。

所以我的问题是,看到 currentTime 是在 Maya 中使用的 mel 命令,是否有另一种方法可以打印此信息?

干杯, 香农

【问题讨论】:

    标签: terminal rendering maya mel


    【解决方案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);
    

    这是我目前拥有的非常简化的版本,但希望如果其他人偶然发现它会有所帮助。

    【讨论】:

      【解决方案2】:

      查看渲染设置的pre render layer MEL 和/或pre render frame MEL 部分。

      它需要 MEL,所以你要么需要用 MEL 编写它,要么需要用 MEL 包装你的 python。对于这样一个简单的用途,我会说只是用 MEL 编写它:

      print `currentTime -q`
      

      【讨论】:

      • 这和我做的不一样吗?还是会有所不同?
      • 试一试并报告:)
      • 不幸的是它没有工作,主要是因为从终端,我指定了不同的启动命令和 preRender 标志,覆盖了文本字段中的内容。不过建议很好!
      猜你喜欢
      • 2012-04-04
      • 1970-01-01
      • 2017-06-29
      • 2021-10-24
      • 2011-03-07
      • 2015-04-29
      • 2017-08-11
      • 2023-03-23
      相关资源
      最近更新 更多