Import Scene Data
The first step of implementing this workflow is to pull the right data into Omniverse to set up the scene. There are two main pieces needed to build a scene for defect detection:
Defects
Known Good Part
Defects
Modeling defects can vary greatly in complexity. In general, defects can be broken down into 3 main categories:
Surface - Affects the outside material surface of a component.
Assembly - Affects whether a component is missing or incorrectly assembled.
Geometric - Affects the overall shape or mesh of a known good component.
This use case focuses on surface defects.
Surface Defects
Surface defects can manifest in a variety of ways: rust, corrosion, foreign object debris, dents, scratches. This example uses scratches, an extremely common surface defect that can easily be drawn recreated. To represent these textures in a 3D environment, use a texture mapping technique called a normal map, which is an RGB image representation of height information that corresponds directly with the X, Y and Z axis relative to a surface in a 3D space.
Knowing the underlying parameters, normal maps can be procedurally generated using Python scripts.
Note
These normal maps were built in Adobe Substance 3D Designer because of the strength of its procedural modeling, but Procedural Shaders, Blender Geometry Nodes, and Houdini are all tools that can be used to create similar assets.
Although it is possible to randomize the size and position of the scratch once it has been brought into Omniverse, it is better to build an entire library of normal maps saved into a folder to generate a robust set of synthetic data. These normal maps should be various shapes and sizes, representing scratches of varying severity.
Known Good Part
The known good part typically comes from 3D CAD models created in engineering software tools and can be imported into Omniverse using the CAD Converter Extension. Depending on the file format, it may also be possible to use the Asset Importer.
Next Steps
Create different types of defects to bundle into a content pack.