This extension for NVIDIA Omniverse allows users to create defects and apply them to prims within an Isaac Sim simulation environment. The extension also provides the means to generate annotated images with customizable domain randomization effects.
![]() |
![]() |
|---|
- Copy the Target Prim Path:
- Open the extension within NVIDIA Omniverse.
- Click on the prim(s) to which you wish to apply defects, and then click
Copy. - Click
Applyto add the necessary primvars to the selected prim(s).
- Import the Directory Containing the Defect Folders:
- Click the
Openbutton and select the directory. The folder should have the following structure:
- Click the
data_defects/
├── crack/
├── hole/
└── scratch/
- Customize and Add the Desired Defects:
- Click on the dropdown menu for one of the three defect types.
- Choose the semantic label that the defect will be assigned to in the
Defect Semantictext box. - Customize the ranges of the width,and length (or radius) randomization for the defects by entering values in the
MinandMaxtext boxes. - Customize the ranges of rotation randomization, affecting the
X-axisin normal mode, and theX, Y, Z axeswhen theUse Advanced Rotationscheckbox is ticked. - Determine the number of instances for this specific defect configuration by entering a value in the
Counttext box. - Click on the
+sign to add the configured defect to the list. - The defect information will be indexed by the assigned semantic label.
- Import and Export Defect Configuration:
- The added defects will appear under the corresponding prim path in the
Paramssection. - Click the
Loadbutton next to a defect object entry to load a defect configurationJSONfile into the object entry. - Click the
Selectbutton next to a defect object entry to make the selected object the current target prim for defect additions. - Click the
Exportbutton next to a defect object entry to save the defect configuration of that object into aJSONfile. - Click the
Garbage Canicon in the top right corner of a defect object entry to remove the object from theParamslist. - Click the
Garbage Canbutton to right the of a defect entry within a defect object to remove that entry from the object's params.
- The added defects will appear under the corresponding prim path in the
- To activate a specific type of randomization tick the checkbox next to the desired randomization type, these include
Light, Camera, Color/Texturerandomizations.
-
Light Randomizations:
- Click on the
Light Randomization Parametersdrop down to show/hide the light randomization UI. - Customize the light intensity, and rotation randomization ranges by changing the
MinandMaxtext boxes next to theLight IntensityandLight Rotationlabels. - Modify the RGB color randomization ranges by altering the
MinandMaxrows containing a text box for theR, G, Bchannels separately (Note that the ranges are normalized between [0,1]). - Alter the light scale, and position by changing the
MinandMaxtext boxes next to theLight ScaleandLight Positionlabels. - Specify the number of lights present in the scene by inputting that number in the
Counttext box.
- Click on the
- Camera Randomizations:
- Click on the
Camera Randomization Parametersdrop down to show/hide the camera randomization UI. - Choose the distance range that the camera will maintain by changing the
MinandMaxtext boxes next to theCamera Distancelabel (Note that this distance applies only when aScattering Primis not specified). - Choose a combination of scattering and look at prims by selecting prims from the scene, and pressing the
Copybutton next to theScattering PrimandLook At Primlabels, then finally pressing theAddbutton (Note that the scattering prim and look at prim need to be different). - Press the
Resetbutton to remove the copied scattering and look at prims. - Designate a range of coordinates for the camera to look at instead of a prim by ticking the checkbox next to the
Use Manual Look At Randomizationthen changing theMinandMaxtextboxes next to theX,Y,Zlabels. - Use the
Reset Allbutton to delete all camera randomization entries after adding at least one entry. - Each combination of scattering and look at prim is handled by the extension uniquely, the following is a breakdown of each combination:
- When a
Scattering PrimandLook At Primare both chosen from the scene using theCopybuttons, a camera will be created and randomly scattered on the surface of the scattering prim, while looking at a random point on the look-at prim. - When a
Scattering Primis chosen using theCopybutton but the user chooses to insert a manual look at range using theUse Manual Look At Randomizationcheckbox, a camera will be created and scattered randomly on the surface of the scattering prim while looking at a random point within the range of look at specified. - When a
Scattering Primis chosen using theCopybutton but theLook At Primis left empty a camera will be created for every object containing a defect in the scene, these cameras will scatter on the surface of the scattering prim while looking at a random point on their designated look at prim. - When a
Look At Primis chosen using theCopybutton but theScattering Primis left empty a camera will be created and scattered inside the volume of a sphere centered on theLook At Prim. The camera will then look at a random point on thatLook At Prim. - When a look at range is specified using the
Use Manual Look At Randomizationoption but theScattering Primis left empty a camera is created and scattered inside the volume of a sphere centered on the specified look-at range. The camera will then focus on a random point within that range. - When both the
Scattering PrimandLook At Primare left empty, a camera will be created for every object containing a defect in the scene. These cameras will be scattered within the volume of spheres centered on the defect objects, while focusing on a random point on each object.
- When a
- Click on the
- Color Randomizations:
- Click on the
Color Randomization Parametersdrop down to show/hide the color randomization UI. - Apply the color randomization to the textures of the specified prims by ticking the checkbox next to the
Texture Color Randomization. - Specify the prim for which you want to set the color randomization parameters by selecting the prim and pressing the
Copybutton next to theColor Primlabel. - While the prim is still selected, continuously add colors to the randomization pool by using the
RGB Color Pickerand pressing theAddbutton. - Press the
Resetbutton to empty theColor Primtextbox. - Press the
Reset Allbutton to delete all color randomization entries after adding at least one entry.
- Click on the
- Click on the
Material Randomization Parametersdrop down to show/hide the material randomization UI. - Select the prim for which you want to apply material randomizations to in the stage, and press the
Copybutton next toMaterial Primin the UI. - To select the materials you want to randomize, there are two options that can be used either separately or together:
- To use materials already found in the stage, check the
Select From Stagecheckbox. A new section calledMaterials from stagewill appear, where you can select the materials from the stage and press theCopybutton. - To Browse for materials in your nucleus or local directories, simply click the
Browsebutton next toMaterial Folderand select the material folder of your choice.
- To use materials already found in the stage, check the
- After selecting the material folder and material prim to apply the randomization on, click the
AddButton. A UI with the selected Prim Paths and Material folder Paths will appear. - To remove a material folder for a specific prim, click the
Resetbutton. - To remove all material folders for all prims, click the
Reset Allbutton. - Finally, click the
Load Materialsbutton to load all the selected materials in the stage, and create those that are not in the stage.
Note: Material randomization and color randomization can be applied together, meaning the color of the newly selected materials will be randomized as well. To do this, make sure you select Texture Color Randomization in the Color Randomization Parameters, and add the colors for the prim you would like to have the randomizations on. It is important to note that randomizing the colors of these materials is done by searching through a list of common color attributes found in color_attributes.json in exts/defect.generation/defect/generation/utils/color_attributes.json, and applying the selected colors to the found attributes.
-
Import the Output Directory:
- Click the
Openbutton and select the directory where you wish the captured images to be written.
- Click the
-
Choose the Writer and Annotations:
- Select the
BMW Formatcheckbox if you want the output in the BMW JSON format. - Select the
Segmentationcheckbox if you want your output to include semantic segmentations. - Select the
Bounding Boxcheckbox if you want your output to include 2D bounding box annotations. - The output directory will contain a
RenderProductfolder for each camera capturing within the scene (in case of multiple cameras), as follows:
- Select the
output_directory/
├── RenderProduct_Replicator_1/
│ ├── images/
│ ├── labels/
│ └── semantic_segmentation/
├── RenderProduct_Replicator_2/
│ ├── images/
│ ├── labels/
│ └── semantic_segmentation/
├── RenderProduct_Replicator_3/
│ ├── images/
│ ├── labels/
│ └── semantic_segmentation/
└── ...
In case there is only one camera in the scene, the output directory will look as follows:
output_directory/
├── images/
├── labels/
├── semantic_segmentation/
-
Select the Replicator Frame and Subframe Count:
- Enter the number of rendered subframes in the
Render Subframe Counttextbox; to guarantee proper rendering of defects, this value should be between 50 and 100. - Enter the number of images you want to capture from the scene in the
frame(s)textbox.
- Enter the number of rendered subframes in the
-
Build the Defect Layer and Run the Scene:
- Click the
Create Replicator Layerbutton to create the replicator xform with all the configured defects. - Click the
Previewbutton to test your scene and the domain randomization. - Click the
Run forbutton to execute the replicator for the number of frames set, which will start capturing images and randomizing the scene and defects. - Click the
Delete Replicator Layerbutton to remove theReplicatorxform, the/World/Looksxform, and everyProjectionxform created in all defect objects.
- Click the
- Joe Khalil, BMW TechOffice, Munich, Germany
- Jason El Khoury, BMW TechOffice, Munich, Germany
- Angelo Yaghi, BMW TechOffice, Munich, Germany










