Blender的Python脚本:获取渲染信息

时间:2018-07-05 15:40:03

标签: python rendering blender bpy

我不知道如何使用Blender,但我需要制作一个跟随渲染的脚本,并在出现问题时发送警报。 我正在使用Python 3.5(如果需要,可以使用其他工具),Windows 10和Blender 2.79

我遇到了很大的问题,在任何地方都找不到解决方案。我无法读取渲染信息...可以吗? 我只能读取当前帧:

bpy.context.scene.frame_current

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

enter image description here

特别是:

  • 要渲染的Totale框架
  • 总图块和当前图块

谢谢!

编辑:

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

EDIT2:

我需要控制渲染是由于某种原因还是要崩溃...

1 个答案:

答案 0 :(得分:1)

不幸的是,blender在渲染时没有向python提供信息,反馈仅限于显示的渲染结果顶部的一行。 This answer显示了一种在特定阶段使用bpy.app.handlers获取通知的方法。对于监视混合器gui中的渲染的脚本,可能是您会发现的最好的。

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

第一个数字是正在渲染的帧,后两个数字是刚完成的图块和正在渲染的总图块,您可以看到帧的时间搅拌器报告,但是您想监视每行接收到的时间如果输出行之间的时间太长,请执行一些操作。