Clash Detection#

Overview#

The goal of clash detection is to prevent costly and time-consuming conflicts during the construction phase of a project. By identifying and resolving clashes early in the design process, project stakeholders can minimize rework, avoid delays, and improve overall project efficiency. It is an essential aspect of modern construction and design processes, especially in complex projects with numerous interconnected systems and components.

Resolving clashes often involves adjusting the positions of clashing components, modifying the design, or reconfiguring the layout.

Note

Clash detection only works with meshes, not shapes.

Learn about the types of clashes.

Hard

Hard clashes occur when physical components occupy the same space within a project. Examples include walls intersecting with doors or windows, structural elements conflicting with plumbing or electrical systems, or equipment interfering with pathways.

Soft

Soft clashes are clearance clashes. Such clashes occur when there is insufficient space between components, potentially leading to operational or safety issues. For instance, a piece of machinery might not have enough overhead clearance, or pipes might be too close to walls.

Static

A static clash refers to a clash between two or more building components or systems that are in fixed positions. For example a wall intersecting with a pipe.

Dynamic

A dynamic clash involves clashes that might occur during the operational phase of a project when components are in motion or change position. An example of a dynamic clash could be a situation where two robots are programmed to move along certain paths but would collide with each other if their paths cross at a certain point.

Clash Detection Video Tutorial#

How to Integrate Clash Detection Extensions into an Omniverse Application#

This chapter describes a process how to enable Clash Detection extensions in an Omniverse application like for example USD Composer.

  1. First, you need to be granted access to Clash Detection Samples GitHub.

  2. Once you have access, clone the Git repository to a local folder on your disk. Don’t forget to read the README.md file.

  3. Navigate to the root folder of the cloned Git repository and

    • On Windows execute build.bat file.

    • On Linux execute ./build.sh file.

  4. Locate where Clash Detection SDK extensions reside

    • On Windows, such folder is located in relative folder _build/windows-x86_64/release/extsClashDetection.

    • On Linux, such folder is located in relative folder _build/linux-x86_64/release/extsClashDetection.

  5. Start the Omniverse application you are going to integrate Clash Detection SDK into (e.g. USD Composer).

    Note

    Important: Please make sure that Omniverse application is based on the same Kit version as the Clash Detection SDK. You can find this information in the application About box.

  6. Go to Window->Extensions.

  7. Go to Settings (Hamburger menu on the right).

  8. To Extension Search Paths section, add the full path to Clash Detection SDK extension folder (explained in the first bullet point above). Do not append path separator (slash or a backslash) to the end of the path.

  9. Check the extensions 3rd party (second tab on the left).

  10. Enable omni.physx.clashdetection.bundle extension.

    Note

    Also check the AUTOLOAD checkbox if you want to have Clash Detection Bundle loaded on each application run automatically.

  11. Restart the application.

  12. Click Window->Simulation->Clash Detection to open the main Clash Detection UI.

Using Clash Detection Extensions#

There are multiple extensions that work together to deliver flexible clash detection functionality. Extensions also expose APIs that allow customization of the process.

Using Clash Detection begins with enabling the Clash Detection Bundle extension, which bundles all clash detection extensions together in a single easy-to-enable dependency.

Learn about all of the clash detection extensions.

Here is list of extensions that work together to deliver flexible clash detection functionality.

  • omni.physx.clashdetection.bundle: Bundles all extensions together in a single easy-to-enable dependency.

  • omni.physx.clashdetection: Contains clash detection C++ engine and low-level API to start the process and access results.

  • omni.physx.clashdetection.core: Primary Python-based clash detection extension that leverages the clash detection engine by introducing essential data structures for holding clash information and queries, as well as incorporating support for serialization and deserialization.

  • omni.physx.clashdetection.ui: Extension responsible for user interface and workflow elements. It defines all UI components (except for specialized clash detection viewport) and the user interaction flow.

  • omni.physx.clashdetection.viewport: Implements 3D visualization in the main viewport and in a dedicated Clash Detection Viewport.

  • omni.physx.clashdetection.anim: Adds support for curve animations. Converts curve animations into time samples.

  • omni.physx.clashdetection.telemetry: Clash Detection Telemetry facilities for performance and usage measurements to improve the product.

  • omni.usd.schema.physx.clashdetection: Provides ability to save clash detection database as a USD layer. NOTE: When enabling it or upgrading it, it requires reboot of the kit application.

Note

Enabling omni.physx.clashdetection.bundle is enough to enable all needed extensions.

Step 1: Check If Extension is Enabled#

You can see if the extension is loaded by checking if the Clash Detection and Clash Detection Viewport menu items exist.

The Window drop-down menu.

If the Clash Detection or Clash Detection Viewport menu items are missing, then it means that the required extensions are not enabled.

Step 2: Enable the Clash Detection Bundle#

Enable clash detection extensions

To enable the extensions:

  1. Navigate to window > extensions.

  2. In the search bar, enter Clash.

  3. Locate the Clash Detection Bundle extension and select it.

  4. Select the Enabled toggle to enable the extension.

  5. Select the Check Mark next to AUTOLOAD to load all of required extensions automatically on application start, if desired.

  6. Close the Extensions Panel.

Step 3: Verify the Extension is Active#

At this point, the extension should be enabled. Click Window -> Simulation -> Clash Detection and Window -> Simulation -> Clash Detection Viewport menu items and you should now see the Clash Detection window (1) docked below and the Clash Detection Viewport window (2) docked to the right of the property panel.

_images/ext_physics_clashdetection-windows.png

Learn More#