Skip to main content

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

Release files for blenderless 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for blenderless 0.1.8
File Size Uploaded
blenderless-0.1.8.tar.gz 24.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for blenderless 0.1.8
File Interpreter ABI Platform
blenderless-0.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 50.1 kB

Release files / blenderless-0.1.8.tar.gz

Download URL blenderless-0.1.8.tar.gz
Size 24.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3e335a728960bd11eb461ebf87e91414d44c3ad912917fd166f18aaa67f62f1f
BLAKE2b-256 checksum
How to use checksums
d940729273452d330999ca35e5a4a4c2998b4a0b285fdef61b320c953eec60e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.5 CPython/3.7.12 Linux/5.4.0-1063-azure

Release files / blenderless-0.1.8-py3-none-any.whl

Download URL blenderless-0.1.8-py3-none-any.whl
Size 25.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
626ded16096e2c6f6a96c8fc9fac47725f939b8637775f77fd2a1d7b63faa07e
BLAKE2b-256 checksum
How to use checksums
4618cad9e91cdc3faced8faa6ff14d4bed8fb96b23ed8dd9a692ad3a6e586449
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.5 CPython/3.7.12 Linux/5.4.0-1063-azure

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page