Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (18.1%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: hoenigpeter
  • License: gpl-3.0
  • Language: Python
  • Default Branch: main
  • Size: 94.9 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

BlenderProc2

Documentation Open In Collab License: GPL v3

Front readme image

A procedural Blender pipeline for photorealistic rendering.

Documentation | Tutorials | Examples | ArXiv paper | Workshop paper

Features

  • Loading: *.obj, *.ply, *.blend, BOP, ShapeNet, Haven, 3D-FRONT, etc.
  • Objects: Set or sample object poses, apply physics and collision checking.
  • Materials: Set or sample physically-based materials and textures
  • Lighting: Set or sample lights, automatic lighting of 3D-FRONT scenes.
  • Cameras: Set, sample or load camera poses from file.
  • Rendering: RGB, stereo, depth, normal and segmentation images/sequences.
  • Writing: .hdf5 containers, COCO & BOP annotations.

Installation

Via pip

The simplest way to install blenderproc is via pip:

bash pip install blenderproc

Git clone

If you need to make changes to blenderproc or you want to make use of the most recent version on the main-branch, clone the repository:

bash git clone https://github.com/DLR-RM/BlenderProc

To still make use of the blenderproc command and therefore use blenderproc anywhere on your system, make a local pip installation:

bash cd BlenderProc pip install -e .

Usage

BlenderProc has to be run inside the blender python environment, as only there we can access the blender API. Therefore, instead of running your script with the usual python interpreter, the command line interface of BlenderProc has to be used.

bash blenderproc run <your_python_script>

In general, one run of your script first loads or constructs a 3D scene, then sets some camera poses inside this scene and renders different types of images (RGB, distance, semantic segmentation, etc.) for each of those camera poses. Usually, you will run your script multiple times, each time producing a new scene and rendering e.g. 5-20 images from it. With a little more experience, it is also possible to change scenes during a single script call, read here how this is done.

Quickstart

You can test your BlenderProc pip installation by running

bash blenderproc quickstart

This is an alias to blenderproc run quickstart.py where quickstart.py is:

```python import blenderproc as bproc import numpy as np

bproc.init()

Create a simple object:

obj = bproc.object.create_primitive("MONKEY")

Create a point light next to it

light = bproc.types.Light() light.setlocation([2, -2, 0]) light.setenergy(300)

Set the camera to be in front of the object

campose = bproc.math.buildtransformationmat([0, -5, 0], [np.pi / 2, 0, 0]) bproc.camera.addcamerapose(campose)

Render the scene

data = bproc.renderer.render()

Write the rendering into an hdf5 file

bproc.writer.write_hdf5("output/", data) ```

BlenderProc creates the specified scene and renders the image into output/0.hdf5. To visualize that image, simply call:

bash blenderproc vis hdf5 output/0.hdf5

Thats it! You rendered your first image with BlenderProc!

Debugging in the Blender GUI

To understand what is actually going on, BlenderProc has the great feature of visualizing everything inside the blender UI. To do so, simply call your script with the debug instead of run subcommand: bash blenderproc debug quickstart.py

Now the Blender UI opens up, the scripting tab is selected and the correct script is loaded. To start the BlenderProc pipeline, one now just has to press Run BlenderProc (see red circle in image). As in the normal mode, print statements are still printed to the terminal.

Front readme image

The pipeline can be run multiple times, as in the beginning of each run the scene is cleared.

Breakpoint-Debugging in IDEs

As blenderproc runs in blenders separate python environment, debugging your blenderproc script cannot be done in the same way as with any other python script. Therefore, remote debugging is necessary, which is explained for vscode and PyCharm in the following:

Debugging with vscode

First, install the debugpy package in blenders python environment.

blenderproc pip install debugpy

Now add the following configuration to your vscode launch.json.

json { "name": "Attach", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 } }

Finally, add the following lines to the top (after the imports) of your blenderproc script which you want to debug.

python import debugpy debugpy.listen(5678) debugpy.wait_for_client()

Now run your blenderproc script as usual via the CLI and then start the added "Attach" configuration in vscode. You are now able to add breakpoints and go through the execution step by step.

Debugging with PyCharm Professional

In Pycharm, go to Edit configurations... and create a new configuration based on Python Debug Server. The configuration will show you, specifically for your version, which pip package to install and which code to add into the script. The following assumes Pycharm 2021.3:

First, install the pydevd-pycharm package in blenders python environment.

blenderproc pip install pydevd-pycharm~=212.5457.59

Now, add the following code to the top (after the imports) of your blenderproc script which you want to debug.

python import pydevd_pycharm pydevd_pycharm.settrace('localhost', port=12345, stdoutToServer=True, stderrToServer=True)

Then, first run your Python Debug Server configuration in PyCharm and then run your blenderproc script as usual via the CLI. PyCharm should then go in debug mode, blocking the next code line. You are now able to add breakpoints and go through the execution step by step.

What to do next?

As you now ran your first BlenderProc script, your ready to learn the basics:

Tutorials

Read through the tutorials, to get to know with the basic principles of how BlenderProc is used:

  1. Loading and manipulating objects
  2. Configuring the camera
  3. Rendering the scene
  4. Writing the results to file
  5. How key frames work
  6. Positioning objects via the physics simulator

Examples

We provide a lot of examples which explain all features in detail and should help you understand how BlenderProc works. Exploring our examples is the best way to learn about what you can do with BlenderProc. We also provide support for some datasets.

and much more, see our examples for more details.

Contributions

Found a bug? help us by reporting it. Want a new feature in the next BlenderProc release? Create an issue. Made something useful or fixed a bug? Start a PR. Check the contributions guidelines.

Change log

See our change log.

Citation

If you use BlenderProc in a research project, please cite as follows:

@article{denninger2019blenderproc, title={BlenderProc}, author={Denninger, Maximilian and Sundermeyer, Martin and Winkelbauer, Dominik and Zidan, Youssef and Olefir, Dmitry and Elbadrawy, Mohamad and Lodhi, Ahsan and Katam, Harinandan}, journal={arXiv preprint arXiv:1911.01911}, year={2019} }


Owner

  • Name: Peter
  • Login: hoenigpeter
  • Kind: user
  • Location: Vienna
  • Company: TU Wien

PhD Student at V4R Group - TU Wien

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: "BlenderProc2"
version: 2.0.0
date-released: 2021-10-12
licence: GNU General Public License v3.0
authors:
  - family-names: Denninger
    given-names: Maximilian
    affiliation: "German Aerospace Center (DLR)"
    email: "maximilian.denninger@dlr.de"
    orcid: "https://orcid.org/0000-0002-1557-2234"
  - family-names: Sundermeyer
    given-names: Martin
    affiliation: "German Aerospace Center (DLR)"
    email: "martin.sundermeyer@dlr.de"
    orcid: "https://orcid.org/0000-0003-0587-9643"
  - family-names: Winkelbauer
    given-names: Dominik
    affiliation: "German Aerospace Center (DLR)"
    email: "dominik.winkelbauer@dlr.de"
    orcid: "https://orcid.org/0000-0001-7443-1071"
  - family-names: Olefir
    given-names: Dmitry
    affiliation: "German Aerospace Center (DLR)"
    orcid: "https://orcid.org/0000-0001-5244-9676"
  - family-names: Hodan
    given-names: Tomas
    affiliation: "Visual Recognition Group, Czech Technical University in Prague"
    email: "hodantom@cmp.felk.cvut.cz"
  - family-names: Zidan
    given-names: Youssef
    affiliation: "German Aerospace Center (DLR)"
  - family-names: Elbadrawy
    given-names: Mohamad
    affiliation: "German Aerospace Center (DLR)"
  - family-names: Knauer
    given-names: Markus
    affiliation: "German Aerospace Center (DLR)"
    email: "markus.knauer@dlr.de"
    orcid: "https://orcid.org/0000-0001-8229-9410"
  - family-names: Katam
    given-names: Harinandan
    affiliation: "German Aerospace Center (DLR)"
  - family-names: Lodhi
    given-names: Ahsan
    affiliation: "German Aerospace Center (DLR)"
  - family-names: Penzkofer
    given-names: Anna
    affiliation: "German Aerospace Center (DLR)"
repository-code: "https://github.com/DLR-RM/BlenderProc/"
url: "https://dlr-rm.github.io/BlenderProc/"
abstract: "BlenderProc is a modular procedural pipeline, which helps in generating real looking images for the training of convolutional neural networks. These can be used in a variety of use cases including segmentation, depth, normal and pose estimation and many others. A key feature of our extension of blender is the simple to use modular pipeline, which was designed to be easily extendable. By offering standard modules, which cover a variety of scenarios, we provide a starting point on which new modules can be created."
keywords:
  - "machine learning"
  - "deep learning"
  - "artificial intelligence"
  - "computer vision"
  - "simulation"
  - "photo realistic rendering"
  - "blender"
  - "robot framework"
  - "dataset generation"
references:
  - type: article
    title: "BlenderProc"
    authors:
      - family-names: Denninger
        given-names: Maximilian
        affiliation: "German Aerospace Center (DLR)"
        email: "maximilian.denninger@dlr.de"
        orcid: "https://orcid.org/0000-0002-1557-2234"
      - family-names: Sundermeyer
        given-names: Martin
        affiliation: "German Aerospace Center (DLR)"
        email: "martin.sundermeyer@dlr.de"
        orcid: "https://orcid.org/0000-0003-0587-9643"
      - family-names: Winkelbauer
        given-names: Dominik
        affiliation: "German Aerospace Center (DLR)"
        email: "dominik.winkelbauer@dlr.de"
        orcid: "https://orcid.org/0000-0001-7443-1071"
      - family-names: Zidan
        given-names: Youssef
        affiliation: "German Aerospace Center (DLR)"
      - family-names: Olefir
        given-names: Dmitry
        affiliation: "German Aerospace Center (DLR)"
        orcid: "https://orcid.org/0000-0001-5244-9676"
      - family-names: Elbadrawy
        given-names: Mohamad
        affiliation: "German Aerospace Center (DLR)"
      - family-names: Lodhi
        given-names: Ahsan
        affiliation: "German Aerospace Center (DLR)"
      - family-names: Katam
        given-names: Harinandan
        affiliation: "German Aerospace Center (DLR)"
    year: 2019
    url: https://arxiv.org/abs/1911.01911
  - type: article
    title: "BlenderProc: Reducing the Reality Gap with Photorealistic Rendering"
    authors:
      - family-names: Denninger
        given-names: Maximilian
        affiliation: "German Aerospace Center (DLR)"
        email: "maximilian.denninger@dlr.de"
        orcid: "https://orcid.org/0000-0002-1557-2234"
      - family-names: Sundermeyer
        given-names: Martin
        affiliation: "German Aerospace Center (DLR)"
        email: "martin.sundermeyer@dlr.de"
        orcid: "https://orcid.org/0000-0003-0587-9643"
      - family-names: Winkelbauer
        given-names: Dominik
        affiliation: "German Aerospace Center (DLR)"
        email: "dominik.winkelbauer@dlr.de"
        orcid: "https://orcid.org/0000-0001-7443-1071"
      - family-names: Olefir
        given-names: Dmitry
        affiliation: "German Aerospace Center (DLR)"
        orcid: "https://orcid.org/0000-0001-5244-9676"
      - family-names: Hodan
        given-names: Tomas
        affiliation: "Visual Recognition Group, Czech Technical University in Prague"
        email: "hodantom@cmp.felk.cvut.cz"
      - family-names: Zidan
        given-names: Youssef
        affiliation: "German Aerospace Center (DLR)"
      - family-names: Elbadrawy
        given-names: Mohamad
        affiliation: "German Aerospace Center (DLR)"
      - family-names: Knauer
        given-names: Markus
        affiliation: "German Aerospace Center (DLR)"
        email: "markus.knauer@dlr.de"
        orcid: "https://orcid.org/0000-0001-8229-9410"
      - family-names: Katam
        given-names: Harinandan
        affiliation: "German Aerospace Center (DLR)"
      - family-names: Lodhi
        given-names: Ahsan
        affiliation: "German Aerospace Center (DLR)"
    year: 2020
    conference: "International Conference on Robotics: Sciene and Systems, RSS 2020"
    url: "https://sim2real.github.io/assets/papers/2020/denninger.pdf"




GitHub Events

Total
Last Year

Dependencies

.github/workflows/blenderprochelper.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v3 composite
.github/workflows/draft-pdf.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
setup.py pypi
  • setuptools *