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
bpycan 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:
- You can find basic examples in the unit tests.
- Notebook examples (point clouds, mesh face colors, ...)
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)
| File | Size | Uploaded | |
|---|---|---|---|
| blenderless-0.1.8.tar.gz | 24.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|