Skip to main content

Blenderless is the python package for easy headless rendering using blender.

Project description

Blenderless

Blenderless is the Python package for easy headless rendering using Blender.

While Blender is a fantastic open-source 3D modeling software which can be run from the command line, there are still some inconveniences when rendering from a headless server:

  • the blender python interface bpy can only be imported a single time,
  • and, there is no framebuffer for blender to write to.

Furthermore, the bpy interface has a steep learning curve.

This package is meant to overcome these issues in a easy-to-use manner. It does so by first defining the entire scene and only interacting with the bpy at render time in a separate thread using a virtual framebuffer.

Example use cases:

  • Generating thumbnails or previews from 3D files.
  • Batch generation of views from 3D files.
  • Automatic generation of compositions of a set of meshes into a single scene
  • Converting meshes and labels into .blend files
  • Export GIF animations of a camera looping around an object.

How to use this

Resources:

Python module

The blenderless package can be loaded as a module. The main functionality is exposed using the Blenderless class. There is support for Jupyter Notebooks as the images/gifs will be shown as IPython Image objects automatically.

from blenderless import Blenderless

# Set the following property if you want to export the generated blender workspace.
Blenderless.export_blend_path = 'export.blend'

# Render single STL file
path_to_foo_png = Blenderless.render('meshpath.stl', dest_path=None, azimuth=45, elevation=30, theta=0)

# Render from config, note that objects and cameras are defined within the YAML config.
path_to_foo_png = Blenderless.render_from_config('config.yml', dest_path=None)

# Render GIF animation, note that azimuth is defined by number of frames.
path_to_foo_gif = Blenderless.gif(cls, mesh_path, dest_path=None, elevation=30, theta=0, frames=60, duration=2)

Command-line interface

Render geometry file to image

$ blenderless image foo.stl output.png
$ blenderless --export-blend-path export.blend image foo.stl output.png # If .blend needs to be exported

Render geometry to gif with a camera looping around an object.

$ blenderless gif foo.stl output.gif

The following command rendera a YAML config to an image

$ blenderless config scene.yml output.png

YAML configuration files

More advanced scenes can be defined using a YAML configuration file. In this file objects, cameras, labels, materials and presets can be defined.

Example:

scene: # See options in blenderless.scene.Scene
  preset_path: ../../preset.blend

cameras: # See options in blenderless.camera
  - _target_: blenderless.camera.SphericalCoordinateCamera # Instantiate one camera with following arguments
    azimuth: 45
    elevation: 30
    theta: 0
    distance: 1

objects: # See blenderless.geometry and blenderless.material
  - _target_: blenderless.geometry.Mesh # Refers to classes within the blenderless package
    mesh_path: ../../mesh/3DBenchy.stl # Constructor argument
    material: # Constructor argument pointing towards another class within the blenderless package
      _target_: blenderless.material.MaterialFromName
      material_name: test_material # Link to material name known in present.blend

  - _target_: blenderless.geometry.BlenderLabel
    label_value: '42'

Export blender file

Install

sudo apt-get install xvfb
pipx install poetry==1.1.5
make .venv

Testing

make test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blenderless-0.1.8.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blenderless-0.1.8-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file blenderless-0.1.8.tar.gz.

File metadata

  • Download URL: blenderless-0.1.8.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.7.12 Linux/5.4.0-1063-azure

File hashes

Hashes for blenderless-0.1.8.tar.gz
Algorithm Hash digest
SHA256 3e335a728960bd11eb461ebf87e91414d44c3ad912917fd166f18aaa67f62f1f
MD5 ca9969d2be50f51504c23f739b8676ef
BLAKE2b-256 d940729273452d330999ca35e5a4a4c2998b4a0b285fdef61b320c953eec60e9

See more details on using hashes here.

File details

Details for the file blenderless-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: blenderless-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.7.12 Linux/5.4.0-1063-azure

File hashes

Hashes for blenderless-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 626ded16096e2c6f6a96c8fc9fac47725f939b8637775f77fd2a1d7b63faa07e
MD5 5e26e090285c3c7ecd8b3c3510d9fb58
BLAKE2b-256 4618cad9e91cdc3faced8faa6ff14d4bed8fb96b23ed8dd9a692ad3a6e586449

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page