Domanda

I want to visualize some scientific data, which is, at the moment, only an animation of some spheres with different colours and sizes.

I already created a script within Mathematica which creates the input for POV-Ray.

My problem is, that I'm not satisfied with the quality of POV-Ray's results and wanted to write a Python script, which could set up the corresponding blender scenes and render them. An important constraint is, that I want to render on a headless machine, so I can't use Blender's internal console.

My question: Is it possible to use Blender's api from an external console to get POV-Ray-like behaviour?


After reading George Profenza's answer I did further research and found Don’t Use Blender! in Blender's documentation.

In contrast to my thoughts, one has to create a python script which is executed by blender in background mode.

./blender --background --python myscript.py
È stato utile?

Soluzione

As far as I remember you can run Blender from the command line without opening the interface/windowing system, which I hope works for your setup. Not only you can tell Blender to render a document, but you can also run a script that generates that document/populates the scene with geometry, lights, etc.

Alternatively you could generate content straight for a renderer (and skip a 3D Editor/Blender completely). There are quite a few free renderers out there like:

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

yafaray

YAFARAY

sunflow

SUNFLOW

luxRender LUX

pixie

PIXIE

Altri suggerimenti

There are two options,

  • The first which you have come across is which is to run Blender in background mode,
  • The second, which is very experimental, using Blender as a python module - BlenderAsPyModule

In both cases this should be a simple operation to import the Mathematica scene - bpy.ops.import_scene.* Then render the scene bpy.ops.render.render

Blender can be run "headless" inside a Docker container. Check the Dockerfile here

In case you are not familiar with Docker, download the Dockerfile and run:

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

Now you can run your scripts inside a headless Blender

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top