- Add URDF loader to define articulated objects and robots
- Add support for more object datasets (ideas are welcomed, just open an issue with a dataset you want to see integrated)
- Support non-rigid physics simulation
- Improve performance
- Deprecate Global Storage
- switch blender version to 3.0.0 instead of 2.93.0
- we now rely on Cycles X, making the rendering much faster than before
- this also depreactes the usage of
bproc.renderer.set_samples()
, this is now replaced withbproc.renderer.set_noise_threshold()
. This fcts allows to set the desired noise ration on a pixel basis, giving a much higher control to ensure a certain consistent noise level in the whole image. - it is still possible to limit the amount of samples per pixel with a new function named:
bproc.renderer.set_max_amount_of_samples()
- as the whole image is now rendered at once we removed the auto-tile addon
- the BLENDER denoiser is no longer available, we recommend using the INTEL denoiser.
- remove the argument
keep_using_base_color
frombproc.lighting.light_surface()
andMaterial.make_emissive()
, now either a emission color or the base color is used - changes for the bop integration
- install bop_toolkit automatically
- add BlenderProc2 python scripts for BOP challenge
- allow to pass list of objects to
write_bop
for which to save pose annotations - divide
load_bop()
intoload_bop_objs()
,load_bop_scene()
andload_bop_intrinsics()
to decouple the functionalit
- fix a bug after uninstalling pip packages they were not truly removed
- add new lens distortion module, adding the possibility to simulate
k1, k2, k3, p1
andp2
parameters. - improve usability of distance rendering, make it the default in all examples
- distance and depth rendering can now be done antialiased and non-antialiased
- add a nocs renderer: paper
- upgrade the shell sampler and rework the usage and documentation
- move
run.py
tocli.py
and support the same CLI arguments as forblenderproc ...
- make caching of pip installs the default (faster start-up) and add option to reset them if needed
- refactor the vishdf5 script using the same content now for saveAsImg
- clean up the scripts folder and move it completely into blenderproc
- include all packages (like vhacd) in the pip install package
- fix bug with light internal blender_obj after an undo operation
- add OPTIX as denoiser option
- add possibility to read
jpeg
- fix
use_ray_trace
inbproc.sampler.upper_region
- added an exception if not the correct python environment is used
- fix
Light
class to work properly withbpy.types.Light
inload_blend
- fix the stereo matching example add missing parameter to fct. call
- moved to a full python API support (
.yaml
files are still supported)- blenderproc can now be installed via pip:
pip install blenderproc
- complete new structure to most of the files
- offer new command line interfaces:
blenderproc run
,blenderproc debug
,blenderproc vis
and many more - optional/flag arguments can now be used in the users python script
- blenderproc can now be installed via pip:
- adds feature to render multiple times in one session (see example
advanced/multi_render
) - added tutorials to get easy start with BlenderProc
- adjusted all examples to explain how the python API would be used there
- restructured the documentation
- fixed a bug with the view layer update, which wasn't done before the scene coverage score was calculated, which caused problems in the 3D-FRONT examples.
- removed a lot of view layer update calls, which makes the whole execution faster, by manually calculation the
matrix_world
. - vertex colors can now be used with a Principled BSDF shader
- all images are now moved into a seperate
image/
directory - all functions now use type hints
- switch to blender 2.93, with that textures are now stored on the GPU between different frames increasing the speed drastically
- moved a lot of modules to the python API
- all camera samplers
- all writer classes
- sampler and getters
- surface lighting
- random room constructor
- all outer API functions work now with numpy arrays instead of mathutils classes
- regroup all examples to make them more easily accessible
- refactoring of the LabelIdMapping class
- sampler.Path now has a
return_all
andrandom_samples
option - add support for the new 3D front labels and script to find them more easily in the future
- AMASS now also supports
torch=1.8.1+cu111
, to better support modern GPUs - refactor download script for haven
- added a flag to not center objects from the ShapeNet dataset
- added a platform independent unzipping function to solve the problems on windows
- add function to return the default_value or the connected node based on the input name of a BSDF shader node of a material
- fix for MacOS, where the blender version was not used in prior installations, leading to the problem that users had to remove blender on their own
- the writer now correctly writes the fov if asked
- fix a bug on mac os, where the blender python path has changed
- fix a bug in the BlenderLoaderModule which caused that the setting of custom properties was not successful
- BlenderProc now can be executed via a python script (experimental, not all modules are supported yet)
- python API extension for the following modules:
- the Entity & Material Manipulation
- the WriterUtility, Hdf5Writer, BopWriterUtility, CocoWriterUtility
- the PostProcessing
- the physic positioning, PoseSampler
- debugging can now be done via the command line, by just typing --debug after a BlenderProc call
- add automatic convex decomposition to speed up physics, object decompositions will be cached
- add a jupyter notebook example for google colab
- add a BasicEmptyInitializer module, which helps creating simple empty objects, these can be used for using a depth of field
- add a depth_of_field option to the CameraInterface (thanks to cuteday)
- add a hide module, so that certain objects can be hidden in a selected range of frames (thanks to Sainan Liu)
- add an option to change the computation type via the config
- blender 2.92 changed depth and distance once again, we use it correctly now and added an explanation
- added a diffuse rendering mode
- added a key frame API
- added a default config, which can be easily changed
- ObjectPoseSampler now can check also against only a limited set of objects
- ObjectReplacer now stops if no objects are left to replace
- SurfaceLighting now reuses the TextureLess material
- preloading in CCTexture now also works perfectly for textures which use an alpha texture
- python packages now are installed by specifying the required packages at the top of each file
- added an example for pasting objects onto random backgrounds
- added a flag to merge BlenderKit objects, while loading, they will be named after the blenderkit file
- reintroduce persistent transformation scaling to improve stability
- improve the clean up at the start of BlenderProc
- fixed a bug in the Front3DLoader, which avoided the correct setting of the custom properties
- fixed a bug with the once_for_all mode for the randomize materials fct.
- add a simple rerun script to show how BlenderProc is used for creating a diverse dataset
- switch to blender 2.92
- rewritten the
BlendLoader
, which is now able to only load objects of a given type, this will break existing config files as theload_from
parameter has been replaced bydatablocks
andobj_types
- the
MaterialManipulator
can now overlay/mix a texture with a selected material - the
MaterialManipulator
can now mix/add a material with another selected material, ideal for creating surface imperfections on other materials - the
MaterialManipulator
can now add a layer of dust on materials, which simulates dust flakes on top of the object, there also exists now an example for it amount_of_repetitions
can now be used with providers- full integration of the blenderkit module, including modules and textures with an example
LoaderInterface
now offers an auto shading mode- the
CCMaterialLoader
uses now a preselected list of probably useful materials by default to avoid non tileable materials - restructure loaders and move their functionality to the utilities (necessary for the API changes for 2.0.0)
- all
Loader
now support setting theadd_material_properties
of the newly loaded objects - each new
.hdf5
file, will contain the git commit hash of BlenderProc - introduce
LightUtility
-> this fulfills our long time goal giving BlenderProc a python API - changed the default stereo mode from
OFFAXIS
toPARALLEL
- adapt to the changes made to 3D Front, as 3D Front does not have a version number, we support the newest version and a version from Summer 2020, if you have errors please open an issue
getter.Material
can now return all materials of a list of objects, selected via thegetter.Entity
- add a
cf_add_*
fct to the MaterialManipulator, which works similar to thecf_set_*
fct. - add
check_empty
togetter.Entity
and togetter.Material
to throw an error if the returned list is empty - added a
cf_add_uv_mapping/forced_recalc_of_uv_maps
option to force to recalculate the uv map of materials, which already have a uv map - added option that randomized materials in
cf_randomize_materials
are added to objects without any materials - change that
cf_randomize_materials
inside theEntityManipulator
now deals with lists and not single elements as before - add auto download for the imageio library, if that fails an exception is thrown with instructions on how to do this yourself
CameraInterface
now supports setting poses for a certain frame -> also needed for the python API- changed the
depth_scale
default value in the BopWriter from0.1
to1.0
, added an option to change via the config - changed the
ignore_dist_thres
default value in the BopWriter from5.0
to100.0
- improved the ShapeNet example, by adding a ShapeNetWriter, which saves which object was used in the
.hdf5
container - fixes a bug with the separation of ceilings and floor objects in SceneNet scenes
- fix a bug, where the
add_alpha_channel_to_texture
fct. couldn't deal with empty material sockets - fix the
pyhsics_positioning
example by using thecollision_shape="MESH"
- fix a bug, where empty material_sockets would have been returned in the
getter.Material
- fix
vis_coco_annotation
script, didn't work anymore after the segmentation map rewrite
- added stereo mode to SegMapRenderer
- switched to using imageio for reading images, as the blender image loading API does not support .exr files written in stereo mode
- added option to write world-to-cam transformations to the BopWriter
- CocoAnnotationWriter does now in the polygon format not write empty segmentation lists anymore and uses iscrowd:0
- type hints are now added to the generated documentation
- extracted reusable rendering code from the renderer modules into utility classes
- fixed a bug in the WriterInterface
- fixed cc_texture downloader script in the case of weird urls
- fixed creating the ceiling when there are rounding errors in the vertices coordinates
- massively improve the documentation, by adding using github pages for our documentation: https://dlr-rm.github.io/BlenderProc/index.html
- add a RandomRoomConstructor:
- This module can generate random floor plans of single rooms, with arbitrary extrusions.
- It can also randomly place loaded objects without collision inside of the room
- By using CCTexture it is also possible to assign random materials to the floor, wall and ceiling
- remove the SceneNetLighting module and replace it with the SurfaceLighting module, to make it more general
- add support for the haven websites and add an example and corresponding loaders:
- The haven environment website: https://hdrihaven.com/
- The haven model website: https://3dmodelhaven.com/
- The haven texture website: https://texturehaven.com/
- add option to the CameraSampler to ensure that a certain object is always in the camera view
- improve the FloorExtractor to extract the floor and ceiling in SceneNet and other scenarios
- improve the skin tones for AMASSLoader
- add a proper scaling to the ikea dataset, by converting all files into SI units
- fix the ikea dataset downloading, by removing and splitting broken pieces, we advise to redownload the dataset
- switch to blender 2.91
- added an example of how to set object poses via a transformation matrix and set camera extrinsics / intrinsics via a transformation matrix and a K matrix
- added camera utility class which makes it easier to set and retrieve intrinsics via any K matrix
- added loader for Pix3D dataset
- added loader for AMASS dataset
- added loader for the ikea dataset
- added community driven support for Windows
- added motion blur and rolling shutter support
- fixed collision checks between meshes, so the ObjectPoseSampler is not generating colliding object poses anymore
- fixed cleanup of temporary directories in the case of an error
- set pixel origin to the center of a pixel, slightly affecting intrinsics and depth outputs
- fixed coco annotations if background is not visible
- added support for transparent background
- fixed wrong image size in coco annotations
- fixed blender proc if non-english language is configured
- when loading ply files a default material is now added
- fixed setting matrix_world via the entity manipulator
- fixed the scenenet examples (corrects physics positioning and camera sampling)
- fixed bbox computation in the Coco Annotations
- fixed visualization of Coco Annotations
- add set properties fct. to BlenderLoader
- adds a script to download all materials from BlenderKit (not used yet)
- added an
TextureLoader
, which can load images and store them as blender textures - added a provider to access these loaded textures
- removed the
MaterialRandomizer
- moved the whole functionality from the
MaterialRandomizer
to theEntityManipulator
- fixed a bug in the SUNCG material loading, where for a few objects the diffuse material was confused with an alpha material
- add set_properties for
Front3DLoader
- fixed the
min_interest_score
that it works with more than just SUNCG - fix a bug in the visHdf5 scripts with distance maps which had several channels
- improved documentation for
min_interest_score
andcheck_pose_novelty_translation
- adding support for 3D-Front: https://tianchi.aliyun.com/specials/promotion/alibaba-3d-scene-dataset
- added to example on how to use 3D-Front
- fixed visualization of newly generated SegMapRenderer results
- fixed combining several coco annotations
- added option for the "class" key for default values in the SegMapRenderer
- fixed a bug in the SegMapRenderer when used in debug mode
- rename depth to distance (this is the difference between taking at each pixel the Z coordinate (in the camera coordinate system) or the distance from the optical center, as sensors usually produce depth and not distance, we changed this)
- create postprocessing module to calculate the depth out of the distance image
- rewriting of the SegMapRenderer, it now supports the mapping of any attribute or custom property of an object to an image or a csv file
- reworking of the used coco examples to better work with this new SegMapRenderer
- adapting CocoAnnotationsWriter to write category_ids which must be defined in a Loader or in a .blend file
- adding support for a supercategory inside of the coco annotations tool (useful for bop dataset names)
- add texture provider, which can generate random textures, which can be used in a displacement modifier
- added to the EntityManipulator:
- option to automatically generate a UV mapping for an object
- added option for displacement modifier adding to objects
- added an example for the entity_displacement_modifier usage
- the sampler.Value now supports gaussian sampling
- reworked some parts of the Hdf5Writer, to better work with depth and distance
- added a check to the CocoUtility to avoid that the bounding box has a area of zero
- remove the provider.ContentGetter as it was confusing, now it works directly without it
- add an Interface in the naming of some modules, if they are not supposed to be run by the pipeline directly
- change the sample amount for the FlowRenderer to 1 as a higher sampling density integrates over several objects in one pixel
- added a step function in the alpha mode of the renderer to avoid artifacts, when rendering semantic segmentations
- support for setting different fx/fy values in the camera module
- remove the pixel_aspect_x/pixel_aspect_y/resolution_x/resolution_y from the renderer is now in Camera
- fixed a bug when the unknown texture folder in the scenenet dataset was not created before
- improved the loading of camera parameters from files
- added a feature for supporting changes of the "category_id" for the WorldManipulator
- improved the visHdf5/saveHdf5/generate_nice_vis scripts
- switches to blender 2.83.2
- switches to blender 2.83
- adds support for adaptive sampling (Renderer/use_adaptive_sampling) -> can decrease rendering time for complex scenes if used
- add random_samples option for entity getter
- add friction/damping for physics positioning
- add JPG save option for RgbRenderer
- add uniform elevation sampling in Shell Sampler
- add in plane rotation option for look_at/direction camera rotations
- add postprocessing.Dist2Depth to convert Blender distance images to depth images
- UpperRegionSamlper can sample in relative area on selected face
- improve physics by using convex hull and box collision shapes
- obj.rigid_body.use_margin = True, to actually use margin
- add a Smooth Shader cf to entityManipulator
- BopWriter improvements, outputs chunks of 1000 images
- exclude objects like planes from proximity checks
- fix transparency bounces
- add custom property cp_bop_dataset_name
- add bop_challenge example with all configs used to render the provided synthetic data
- add bop_object_on_surface_sampling for sampling upright objects
- docu improvements and step by step explanations of config files
- added the NormalRenderer functions to the RGBRenderer saves a render call, when generating normal images
- added a script to automatically download all PBR assest from https://cc0textures.com/
- add CCMaterialLoader, which can load all downloaded materials from cc0textures, to randomly replace them later
- add support for ShapeNet
- add support for SceneNet, including the lighting, which is modeled after the SUNCG lighting module.
- massive docu improvements, added a type to all config values and a default value if one is there
- added examples for:
- bop_object_physics_positioning
- bop_object_pose_sampling
- bop_scene_replication
- on_surface_object_sampling
- scenenet
- scenenet_with_cctextures
- shapenet
- shapenet_with_scenenet
- shapenet_with_suncg
- suncg_with_improved_mat
- added object OnSurfaceSampler (similiar to the phyiscs but faster and places object only on the bb)
- added WorldManipulator (can change custom properties of the world, like the category_id)
- switched to config version 3.0
- global initialized values are now in the main.Initializer
- added a GlobalStorage to save variables over module boundaries
- add VisNormalImage for debugging mode, which visualizes a depth & normal image in blender
- material selectors now also support AND and OR conditions
- add automatic detection of optix graphics cards
- added a min interest score for the CameraSampler
- added a novelty pose checker for the CameraSampler, to avoid clustering of camera poses
- global config values are now not longer added to the modules config, only in the event that there is no module found the global config is checked
- rename SUNCG materials to the textures they load, makes selecting them easier
- SUNCG materials are now shared over objects, if they share the same properties, also true for lights
- rewrite of MaterialRandomizer to make use of the new cc0textures
- added a Bop Writer to write out the current scene config in the BOP format
- add the solidify modifier to the options of the EntityManipulator
- add a PartSphere sampler to e.g. only sample in the upper half of a sphere
- add a script to download scenenet to make the use of it even easier
- add easy option to change specular values for materials with the MaterialManipulator
- added the option to make runs deterministic by introducing a env variable:
BLENDER_PROC_RANDOM_SEED
- added a Basic Color Sampler
- improved the capabilities of the DiscSampler
- now all custom properties should be accessed in the config via: "cp_..." for custom functions: "cf_"
- add texture support for ycbv objects in the BopLoader
- change the default results of the SegMapRenderer to NYU ids instead of the row-index in the .csv file.
- added Optical Flow Renderer
- added Stereo Global Matching Renderer (SGM) -> which takes two color images and produces "non-perfect" depth images
- added option for SGM to also write disparities
- added a new material manipulator
- added a material getter to select materials based on certain conditions
- combined BOP with this repo -> now the only difference is the readme
- added contribution guidelines -> which include commit message guidelines and branch name guidelines and much more
- matrices can now be read via the config file
- added a cached options to the import objects
- added request custom property for the entity getter (to ensure that a custom property is changed)
- added ReplaceObject
- added option that in debugging the RgbRenderer get executed except for the actual rendering part all others are executed and then undon
- added collision mesh source to the physics module
- added option to coco annotations to append the output to an existing coco file
- added bounding box selection to getter.Entity and also just axis aligned hyper plane checks
- added a 1D sampler for float/int/bool
- added postprocessing to the example to reduce the amount of channels in the depth image
- added visualization for stereo and optical flow
- added an oil filter for the SGM result
- added a path sampler
- added a blender collection loader
- added the RockEssentialLoader based on the RockEssential dataset
- added index to getter.Entity to request only a certain element of the selection
- fix three bugs in the physics module, where the mass_scaling was always used and the location not properly updated
- fixed a bug where color images where wrongly saved in float now back to uint8
- fixed a bug in the coco annotations writer + adapting of the example
- fixed bug in load_image, where the dimensions where switched
- fixed a bug when "home_local" is not available than "home" is used
- fixed bug where run.py can only be run from the main folder
- fixed pypng version in bop example
- fixed bug where the volume calculation for bounding boxes did not work as expected
- refactored the disc sampler
- cleaned up all readmes
- added more detailed examples to most of the important modules
- adapt CoCo annotation tools to newer Version of SegMapRenderer
- background class is now zero when doing instance segmentation
- renamed getter.Object to getter.Entity, same for ObjectManipulator is now named EntityManipulator
- entity conditions do now work with AND and OR connections
- strings are now matched with fullmatch instead of search in entity conditions
- conditions now support bool custom properties
- material randomizer now supports getter.entity providers
- added UpperRegionSampler, which can sample on the up surface of the bounding box of an object
- scripts now support execution with python3.x
- physics are now saved with bool instead of active and passive
- physics options for simulator added
- remove version number -> only blender version 2.81 supported
- the ObjectLoader can now load several objects at once and set their properties with
"add_properties"
- moved more functionality in the camera sampler instead of having in specific sampler to make writing a new one easier
- added a SO3 Sampler for rotation sampling
- change the "name" of modules in the config to "module" and "provider" depending on the case
- added MacOS support (but only for CPUs, GPU support on MacOS is not available)
- added this changelog
- fixes:
- fixed a problem that the check_bb_intersection did not work right in all cases (Bounding box check)
- fixed a problem with the check_intersection fct., where the reference coordinate system was not always right.
- fixed a bug with the SUNCG lighting in RGB images
- Added provider, which can be executed inside of different modules, examples:
- Samplers of values
- Getters of objects, specified on one condition (for example the name)
- Added object manipulators, these can change selected objects attributes and custom properties
- Added physics positioning, objects can be either "active" or "passive" and then interact with each other
- Added ObjectPoseSampler sampled collision free poses of all objects
- Added one ObjectLoader, which deals with all kinds of objects
- Added a camera object sampler to sample cameras and objects at the same time
- Redone the SegMapRenderer to fix bug in instance and class segmentation
- Added coco annotations writer
- Added version number to config files
- Added more documentation
- Added more examples
- Added Pipeline, Modules and Config
- Added CameraModules, with different sampler for SUNCG and replica
- Added LightModules, with different samplers also for SUNCG
- Added Loader for objects
- Added Loader for replica and SUNCG
- Added Hdf5 Writer
- Added camera-, light-, object state writer
- Added MaterialRandomizer
- Added Shell-, Sphere- and Uniform3DSampler
- Added debug script