不幸的是,blender 在渲染时不会向 python 提供信息,反馈仅限于您显示的渲染结果顶部的行。此答案显示了一种bpy.app.handlers
用于在某些阶段获取通知的方法。对于监视搅拌机 gui 内渲染的脚本,这可能是您能找到的最好的。
如果您提供一种从搅拌机外部控制渲染的方法,您还有其他一些选择。您可以将 blender 作为CLI 工具启动,-b
参数会将其保留在后台(无 gui)并允许您读取其输出以监视它的位置。
我会先运行一个小脚本来获取帧数
blender -b proj.blend --python-expr "import bpy;print(bpy.context.scene.frame_start, bpy.context.scene.frame_end)"
然后,当您渲染动画时,您将获得进度输出,例如
blender -b project.blend -a
...
Fra:3 Mem:17.40M (0.00M, Peak 23.73M) | Time:00:00.10 | Scene, Part 230-240
Fra:3 Mem:17.37M (0.00M, Peak 23.73M) | Time:00:00.10 | Scene, Part 228-240
Fra:3 Mem:17.35M (0.00M, Peak 23.73M) | Time:00:00.10 | Scene, Part 231-240
...
第一个数字是正在渲染的帧,最后两个是刚刚完成的图块和正在渲染的图块总数,您可以查看搅拌器报告的帧时间,但您希望监控接收到的每条线之间的时间间隔并执行某些操作如果输出线之间的时间过长。