跟踪流程直到完成

Tracking a process until finished

本文关键字:程直 跟踪      更新时间:2023-10-16

这是针对大学期末项目。我正在努力制作一个独立的基于 GUI 的应用程序,该应用程序可让您排队渲染作业并通过在命令行中启动 Blender 的后台渲染。我想在我的应用程序上添加一个进度条来跟踪渲染的状态。完成渲染后,它会标记完成,并继续队列中的下一个渲染,但我不确定是否有办法从 Blender 接收有关其进度的信号。这是C++和QT Quick中的一个单独的应用程序。

如果我至少能得到一个关于如何继续ping过程直到它结束的线索,那将是一个很好的开始。我可以让应用程序将其标记为渲染或完成。仅针对C++的解决方案将同样有用,然后我可以通过QT实现该概念。

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

当您启动搅拌机进程进行渲染时,您希望捕获 STDOUT,可能通过使用管道,以便在渲染期间获取搅拌机进度输出。然后解析输出以查看其运行位置。

搅拌机内部和周期的输出略有不同,但足够恒定,可以轻松解析。

商业智能进度线 -

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

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

最后一行将Blender quit

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