跟踪流程直到完成
Tracking a process until finished
这是针对大学期末项目。我正在努力制作一个独立的基于 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
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 如何将元素添加到数组的线程安全函数?
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 异常属于C++中的线程还是进程
- C++中的线程安全删除
- C++使用params创建线程函数会导致转换错误
- GDB 8.1 无法在单线程简单程序中跟踪 std::string 变量的值
- 在 Linux 平台上以 C/C++ 打印进程的所有线程堆栈跟踪
- 多线程直列组件
- 在不附加GDB的情况下获取所有线程的堆栈跟踪
- 如何获取进程中运行的所有线程的堆栈跟踪
- 来自回溯的堆栈跟踪未显示导致多线程环境下崩溃的方法
- 在不附加GDB的情况下打印所有线程的堆栈跟踪
- 如果一个且只有一个线程被停止,可以从多线程进程中跟踪读/写数据