跟踪流程直到完成

时间:2017-04-10 15:44:36

标签: c++ qt blender

这是大学的最终项目。我正在制作一个独立的基于GUI的应用程序,它允许您通过在命令行中启动来为渲染作业排队并为Blender启动背景渲染。我想在我的应用程序上添加一个进度条来跟踪渲染的状态。完成渲染后,它会标记完成,并继续进入队列中的下一个渲染,但我不确定是否有办法从Blender接收进度信号。这不是附加组件。这是C ++和QT Quick中的单独应用程序。

如果我至少可以了解如何继续ping该过程直到它结束,这将是一个很好的开始。我可以让应用程序将其标记为渲染或完成。单独使用C ++的解决方案就像我可以通过QT实现这个概念一样有用。

但最复杂的解决方案是获取渲染进度的状态,以便跟踪完成的百分比。

1 个答案:

答案 0 :(得分:1)

当您启动blender进程进行渲染时,您希望捕获STDOUT(可能是通过使用管道)来获取渲染期间的混合器进度输出。然后解析输出以查看它的位置。

搅拌机内部和循环的输出稍有不同,但足够容易解析。

BI进度线 -

Fra:1 Mem:14.83M (0.00M, Peak 14.93M) | Time:00:00.01 | Scene, Part 3-240

循环进度线 -

Fra:1 Mem:22.75M (0.00M, Peak 46.20M) | Time:00:00.51 | Remaining:00:02.63 | Mem:8.81M, Peak:32.25M | Scene, RenderLayer | Path Tracing Tile 7/240

两者都在初始化期间以一些额外的行开始。第一个数字是正在渲染的帧,而最后两个数字是刚刚完成的磁贴和要渲染的总磁贴,这些很少以数字顺序完成,因此您需要一个列表或完成磁贴的计数来了解进度。 / p>

最后一行将是Blender quit

另请注意,您可以使用搅拌机CLI arguments来调整正在进行的渲染。这意味着您可以使用-a渲染动画中的所有帧,您可以使用-s 5 -e 10 -a渲染一系列帧,也可以通过单独添加帧来渲染帧列表-f 5 -f 7 -f 12