Skip to main content

No project description provided

Project description

Bounding AI Tool

License: GPL v3

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 bounding_ai_tool is via pip:

pip install bounding_ai_tool

Git clone

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

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

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

cd bounding_ai_tool
pip install -e .

Usage

Bounding AI Tool 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 Bounding AI Tool has to be used.

bounding_ai_tool 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 Bounding AI Tool pip installation by running

bounding_ai_tool quickstart

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

import bounding_ai_tool 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.set_location([2, -2, 0])
light.set_energy(300)

# Set the camera to be in front of the object
cam_pose = bproc.math.build_transformation_mat([0, -5, 0], [np.pi / 2, 0, 0])
bproc.camera.add_camera_pose(cam_pose)

# Render the scene
data = bproc.renderer.render()

# Write the rendering into an hdf5 file
bproc.writer.write_hdf5("output/", data)

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

bounding_ai_tool vis hdf5 output/0.hdf5

Thats it! You rendered your first image with Bounding AI Tool!

Debugging in the Blender GUI

To understand what is actually going on, Bounding AI Tool 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:

bounding_ai_tool debug quickstart.py

Now the Blender UI opens up, the scripting tab is selected and the correct script is loaded. To start the Bounding AI Tool pipeline, one now just has to press Run bounding_ai_tool (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 bounding_ai_tool runs in blenders separate python environment, debugging your bounding_ai_tool 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.

bounding_ai_tool pip install debugpy

Now add the following configuration to your vscode launch.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 bounding_ai_tool script which you want to debug.

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

Now run your bounding_ai_tool 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.

bounding_ai_tool pip install pydevd-pycharm~=212.5457.59

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

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 bounding_ai_tool 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 bounding_ai_tool script, your ready to learn the basics:

Tutorials

Read through the tutorials, to get to know with the basic principles of how Bounding AI Tool 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 Bounding AI Tool works. Exploring our examples is the best way to learn about what you can do with Bounding AI Tool. 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 Bounding AI Tool release? Create an issue. Made something useful or fixed a bug? Start a PR. Check the contributions guidelines.

This repository was forked from BlenderProc, another GPL-licensed project. We intend to build upon the great work of BlenderProc with additional features.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

bounding_ai_tool-0.3.0-py3-none-any.whl (405.5 kB view details)

Uploaded Python 3

File details

Details for the file bounding_ai_tool-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bounding_ai_tool-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31c194ba4cc889075073106f3a3caf806fa04f62626eaeae9169240e626af5d5
MD5 3f7f3a98151c19dfe05dd1a97aca8a14
BLAKE2b-256 23d838e3fe0f1cf152617445a3722009cb3583adb44e9187591d895a0bb06aac

See more details on using hashes here.

Supported by

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