在Blender外运行Python脚本

11 投票
4 回答
6972 浏览
提问于 2025-04-17 17:26

我想把一些科学数据可视化,目前的效果只是一些不同颜色和大小的球体动画。

我已经在Mathematica里写了一个脚本,可以生成POV-Ray需要的输入。

但我对POV-Ray的结果质量不太满意,所以我想写一个Python脚本,来设置相应的Blender场景并进行渲染。一个重要的限制是,我想在没有显示器的机器上渲染,所以不能使用Blender的内部控制台。

我的问题是:能不能通过外部控制台使用Blender的API,达到类似POV-Ray的效果呢?


在阅读了George Profenza的回答后,我进一步研究,发现了Blender文档中的一条建议:不要使用Blender!

与我之前的想法相反,实际上需要创建一个Python脚本,这个脚本会在Blender的后台模式下执行。

./blender --background --python myscript.py

4 个回答

1

Blender可以在Docker容器中以“无头”模式运行。你可以在这里查看Dockerfile。

如果你对Docker不太了解,可以先下载Dockerfile,然后运行:

docker build -t blender .
docker run -it -v your_folder/:/scripts bash

现在你可以在无头的Blender中运行你的脚本了。

5

这里有两个选择:

  • 第一个是你可能已经听说过的,就是在后台模式下运行Blender。
  • 第二个选择是非常实验性的,使用Blender作为一个Python模块 - BlenderAsPyModule

在这两种情况下,导入Mathematica场景应该都很简单 - 你可以使用 bpy.ops.import_scene.*。然后渲染这个场景可以用 bpy.ops.render.render

8

我记得你可以通过命令行来运行Blender,而不需要打开它的界面或窗口系统,希望这对你的设置有帮助。你不仅可以让Blender渲染一个文档,还可以运行一个脚本来生成这个文档,或者用几何图形、灯光等填充场景。

另外,你也可以直接为渲染器生成内容,完全跳过3D编辑器或Blender。有很多免费的渲染器可以选择,比如:

  1. Yafaray
  2. Sunflow
  3. Mitsuba
  4. LuxRender
  5. Pixie

yafaray

YAFARAY

sunflow

SUNFLOW

luxRender LUX

pixie

PIXIE

撰写回答