A Blender extension for generating synthetic datasets through procedural randomization and batch rendering. This addon enables users to create diverse image datasets with controlled variations in object placement, material properties, lighting conditions, and scene parameters. Additionally, the extensions supports a preview functionality which allows to inspect the output of the pipeline and the computed labels directly inside Blender.
The extension is intended for low to medium sized computer vision products, which benefit more from ease of generation rather than the efficiency and generality of tools like Blenderproc.
The Generator provides a building-block system for defining randomization pipelines within Blender. Users can specify how objects, materials, and lighting conditions should vary across multiple renders, then automatically output images with corresponding metadata suitable for computer vision training datasets. User can also specify named classes and assign classes to blender objects. Multiple objects can be grouped together to form multi-object entities which the extension will classify as a single object.
-
Distribution-Based Randomization: Define probability distributions for scene parameters using preset distributions and (work in progress) a visual node editor
-
Pipeline Configuration: Build randomization pipelines by concatenating operations for object transforms, material properties, and lighting
-
Batch Rendering: Automatically render multiple images with varied scene parameters, setting an initial seed of reproducibility
-
JSON Configuration: Load and save pipeline configurations as JSON for version control and reproducibility
-
Multi-Parameter Support:
- Object position, rotation, and scale
- Material textures and properties (roughness, metallic, etc.)
- Visibility and occlusion constraints
- Lighting intensity, temperature, and color
- Camera parameters and positioning, locking of camera around a central point0
- Ground plane and boundary constraints (work in progress)
-
Export Integration: Export rendered datasets in formats compatible with computer vision frameworks (YOLO, COCO, etc.)
-
Live Preview: Allows the user to generate previews of the output of the blender directly inside Blender, including boundary boxes, labels and visibility statistics
-
Logging system (work in progress) Allows to analyze the results of single stochastic processes to inspect the generation and the outut of constraints solvers (work in progress)
-
Many labeling formats The extension currently supports:
- ULTRALYITICS YOLO
- COCO
- COCO Keypoints (skeletons)
- PNG/Multilayer EXR pixel semantic segmentation
- Depth maps
- Normal maps
- CVAT XML
- Point clouds (classes, colors)
- Blender: 4.5.0 or later
- OS: Windows, macOS, or Linux
You can either download one of the released .zips in the Github Release section or build a release from the current repository version.
You can also find the extension on the .
- Select the release
- Download the .ext zip file
- In Blender, navigate to Edit → Preferences → Add-ons
- Click Install... and select the downloaded
.zipfile
- Download the repository and select the /ext/ extension archive and compress it as a
.ziparchive. - In Blender, navigate to Edit → Preferences → Add-ons
- Click Install... and select the downloaded
.zipfile - Enable the addon by checking the box next to "Rendersynth"
The addon will appear in the 3D Viewport sidebar under the Synthetic panel.
A distribution defines how a parameter varies across renders. Access the Distribution Editor through the Randomizer panel to create distributions for your parameters.
Distribution Editor → Add Nodes → Configure Parameters
Connect operations in the pipeline editor to specify which objects and properties should be randomized.
Pipeline Tab → Add Operation → Configure Operation → Connect to Distribution
Specify which objects, materials, and properties are affected by each operation. Each operation can target:
- Specific objects or material slots
- Defined lighting rigs
- Camera positions
- Constraint parameters
Once the pipeline is configured, render the dataset specifying the amount of samples extracted from the distribution and the labeling format:
Generate Tab → Set output directory → Set frame count → Render
Outputs are saved as:
- Rendered images (PNG/EXR format)
- Metadata txt/Json files (one per frame) depending on the labeling format
- Configuration snapshot and logs (for reproducibility) Render settings are extracted from the current Blender settings at the time of generation.
Distributions define probability functions for randomization. Two modes are provided to randomize most operations: using a preset distribution (normal, exponential, etc...) or generating a custom distribution through a node based editor (still incomplete). The editor allows the interconnection of nodes:
- Constant: Fixed values
- Continuous (Normal, Uniform, ...): Sampled probability distributions
- Discrete: Selection from predefined values
- Selector: Random choice among inputs, allowing for complex definitions of multimodal distributions
Operations apply randomization to scene elements:
- Transform: Position, rotation, scale
- Material: Texture and property randomization
- Lighting: Light intensity, color, temperature
- Camera: Position and orientation
- Constraints: Overlap, occlusion, distance rules (work in progress)
Pipelines can be saved and loaded as JSON, enabling:
- Version control of experiment configurations
- Reproducible dataset generation
- Easy parameter tuning and iteration
- Set up a Blender scene with objects, materials, and lighting
- Create a set of classes and entities
- Build a pipeline concatenating stochastic variations to the scene
- Configure constraints and render settings in Blender, labeling settings in the extension
- Render the dataset and obtain text labels
- Multi-Stage Randomization: Chain multiple operations to create complex variations
- Constrained Randomization: Use overlap, occlusion, and distance constraints to ensure valid configurations (work in progress)
- Conditional Variations: Use selector operations and folders to choose between different randomization strategies
- Parameter Sweeps: Create multiple pipeline variants to explore design space
Pipelines are stored as JSON for reproducibility and sharing across .blend files. The save file includes definition for all custom distributions and all the settings for all stages in a pipeline.
- Complex shader networks may not be fully randomized through the UI and direct material node editing may be necessary for advanced cases (the idea is to randomize certain nodes in the shader which impact the appearence of the full Cycles material)
- Very large pipelines with many operations may impact interactive performance, EEVEE is recommendend for preview.
This is a user-focused addon. Bug reports and feature requests can be submitted by opening an issue
For issues, questions, or feature requests, please open an issue. First consult the available documentation.
Version: 1.0.0
Target Blender Version: 4.5+
Models from Sketchfab used on some examples. Sometimes the code was readapted from online snippets, the github repository is always cited in the code documentation when this is the case.

