Python Blender 脚本:获取渲染信息

Python script for Blender: Get Render informations

我不知道如何使用 blender,但我需要制作一个脚本来跟踪渲染并在出现问题时发送警报。 我正在使用 Python 3.5(如果需要,我可以使用其他软件)、windows 10 和 Blender 2.79

我遇到了一个大问题,而且我到处都找不到解决办法。我无法读取渲染信息...这可能吗? 我只能读取当前帧:

bpy.context.scene.frame_current

我需要阅读这张图片中包含的所有信息:

特别是:

谢谢!

编辑:

我不知道我是否使用了正确的语言...当我谈论渲染时,我指的是动画渲染。

EDIT2:

我需要控制渲染是否正在进行或由于某种原因崩溃...

不幸的是,blender 在渲染时不向 python 提供信息,反馈仅限于您显示的渲染结果顶部的行。 This answer shows a way of using bpy.app.handlers 在特定阶段获得通知。对于在 blenders gui 中监控渲染的脚本,这可能是您能找到的最好的。

如果您提供了一种从 Blender 外部控制渲染的方法,您还有一些其他选择。您可以将 blender 作为 CLI tool 启动,-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
...

第一个数字是正在渲染的帧,最后两个是刚刚完成的图块和正在渲染的图块总数,您可以看到帧的时间混合器报告,但您想要监控每行之间的时间间隔被接收并在输出行之间花费太长时间时做一些事情。