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

Posted

技术标签:

【中文标题】Blender 的 Python 脚本:获取渲染信息【英文标题】:Python script for Blender: Get Render informations 【发布时间】:2018-12-14 04:07:54 【问题描述】:

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

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

bpy.context.scene.frame_current

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

特别是:

要渲染的总帧数 图块总数和当前图块

谢谢!

编辑:

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

EDIT2:

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

【问题讨论】:

【参考方案1】:

不幸的是,blender 在渲染时不向 python 提供信息,反馈仅限于您显示的渲染结果顶部的行。 This answer 展示了一种使用 bpy.app.handlers 在某些阶段获取通知的方法。对于一个监控blenders gui内渲染的脚本,这可能是你能找到的最好的了。

如果您提供一种从搅拌机外部控制渲染的方法,您还有其他一些选择。您可以以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
...

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

【讨论】:

好的,可以了!是否也可以拥有搅拌机 GUI? 只有在后台渲染时才会输出渲染进度。

以上是关于Blender 的 Python 脚本:获取渲染信息的主要内容,如果未能解决你的问题,请参考以下文章

blender学习笔记:python脚本使用与离线渲染

blender 命令行渲染

blender学习笔记:python脚本的使用

blender 命令行渲染

在 Blender 脚本中测量路径长度?

Blender Python材质处理入门