Clash Detection UI#
This section documents the Clash Query Management and Clash Detection Results windows.
To initiate a clash detection, you must first create a clash detection query using the Clash Query Management window. You can define as many queries as necessary.
Note
Clash detection only works with meshes, not shapes.
Clash Detection Basic Concepts#
The system can identify two main kinds of clashes:
Hard clashes
Soft clashes
Hard Clashes#
Hard clashes, also known as geometric clashes, occur when two components physically intersect or pass through each other.
Hard clashes can be further categorized into two subsets:
Contact case
Occurs when two components just touch each other, by design (e.g., a crate resting on the ground and naturally touches it).
In this case, there is no large overlap or intersection between geometries.
The max local depth is an approximate measure of the overlap used to identify the contact cases.
For contact cases, this depth should be very close to zero.
Overlap case
Occurs when two components clearly intersect each other, by accident.
This is unexpected and these are the mistakes we are looking for, and what is usually understood as hard clash.
The max local depth is a positive value and can be arbitrarily large.
The user-defined contact epsilon value is the limit below which a hard clash is classified as a contact case.
Soft Clashes#
Also known as:
Clearance clashes
Proximity clashes
Soft clashes occur when two components are located too close to each other, specifically closer than the user-defined tolerance value.
The tolerance value is the distance limit below which a clash is registered. In other words, if the distance between two components is less than this value, a clash is detected.
Use a tolerance value of 0 to detect only hard clashes (hard clash query).
Use a positive value to detect both hard and soft clashes (soft clash query).
When the system finds two objects physically overlapping during a soft clash query, these objects are still reported as a hard clash.
Important
The max local depth is not applicable to soft clashes, because there is no actual geometric overlap and therefore no depth to compute.
Clash Query Management Window#
This window allows you to manage your clash detection queries.

Below you can find all actions you can perform on your queries:
Create new Query#
Create a new clash query by clicking the Create New Query button. The new query will be created with a default name of “New Query ###”.
Manage existing query#
Reference# |
Action |
Description |
---|---|---|
1 |
Rename |
Double-click the Query Name to rename the query. |
2 |
Duplicate |
Click the Duplicate button to duplicate the selected clash queries. |
3 |
Delete |
Click the Delete… button to delete the selected clash queries. |
4 |
Comment |
Double-click the empty space in the Comment column to enter your own comment to further clarify a query’s purpose. |
Export/Import queries#
Reference# |
Action |
Description |
---|---|---|
5 |
Export |
Click the Export Queries… button to export selected queries to a JSON file. |
6 |
Import |
Click the Import Queries… button to import queries from a JSON file. |
Query Timestamps#
Reference# |
Description |
---|---|
7 |
The First Created column shows the timestamp when was the query first created. |
8 |
The Last Modified column shows the timestamp when was the query last modified. |
Many commands can also be accessed through the context menu.
Keyboard shortcuts#
There are some useful keyboard shortcuts for the Clash Detection Query Management Window:
Keyboard Shortcut |
Description |
---|---|
CTRL+A |
Select all queries. |
ESCAPE |
Deselect all queries and remove the clash visualization overlay from the main viewport. |
DELETE |
Delete selected queries. |
In the right side pane, you can see various options that help you to customize the clash detection query to your needs:
Limit the clash detection processing scope by defining search sets.
If both Searchset A and Searchset B are empty -> process full scene.
If only the Searchset A list contains items -> limit processing only to Searchset A items.
If Searchset A and Searchset B lists contain items -> process Searchset A against Searchset B.
Option |
Description |
---|---|
Dynamic |
Tells the clash detection engine to run dynamic clash detection inspecting time sampled animations. |
Start Time on Timeline |
Start Time on Timeline in seconds. Works only when dynamic clash detection is enabled.
0 = timeline start time (auto-detected).
|
End Time on Timeline |
End Time on Timeline in seconds. Works only when dynamic clash detection is enabled.
0 = timeline end time (auto-detected).
|
Purge Permanent Overlaps |
Tells the system to discard pairs of dynamic objects that always overlap over the tested time interval. Works only when dynamic clash detection is enabled. |
Tolerance |
Tolerance distance for overlap queries.
Use zero to detect only hard clashes.
Use non-zero to detect both hard and soft clashes.
|
Static Time on Timeline |
Time on Timeline in seconds for executing static clash detection. The value is clamped into timeline range if necessary. Taken into account only when performing static clash detection! |
Report Duplicate Meshes Only |
Instructs the clash detection engine to only report meshes that completely overlap with other identical meshes. Dynamic detection is not supported, only static clashes at current time on the timeline are. This option is exclusive - no other clashes are reported when this option is enabled! |
Ignore Redundant Overlaps |
Instructs the clash detection engine to ignore redundant overlaps. |
Option |
Description |
---|---|
Pose Epsilon |
Epsilon value used when comparing mesh poses. This is used when detecting ‘duplicate meshes’, i.e. meshes with the same vertex/triangle data in the same place. |
Area Epsilon |
Epsilon value used to cull small triangles or slivers. Triangles whose area is lower than this value are ignored. Use 0 to keep all triangles. |
Bounds Epsilon |
Epsilon value used to enlarge mesh bounds a bit. This ensures that flat bounds or bounds that are just touching are properly processed. |
Tight Bounds |
Use tight bounds for meshes. |
Coplanar |
Detect collisions between coplanar triangles. |
Any hit |
If any hit is checked, the clash engine stops after locating the first pair of overlapping triangles; otherwise, it goes on to detect all overlaps. Can provide better performance if only a quick overview of what’s clashing is wanted. |
Quantized |
Quantized or not. Quantized trees use less memory but usually give slower performance. |
Tris per leaf |
Number of triangles per leaf. Tweak this for a memory vs. performance trade-off. |
Triangle Limit |
Abort narrow-phase query after this amount of triangle pairs has been found. Use 0 for unlimited. |
Purge Permanent Static Overlaps |
Tells the system to discard pairs of static objects that always overlap over the tested time interval. Works only when dynamic clash detection is enabled. |
Use USDRT |
When enabled, provides faster initial stage traversal for full-scene queries only. |
Option |
Description |
---|---|
Compute Max Local Depth |
Enable max local depth computation. Helps with identification of contact cases between objects. |
Depth Epsilon |
Epsilon value used to classify hard clashes vs contact cases. Clashes whose max local depth is below the epsilon are ignored. Use a negative value to keep all (hard) clashes. This setting does not apply to soft clashes. |
Discard Touching Contacts |
Instructs the clash detection engine to not report found touching contacts. The Depth Epsilon must be set to a positive number and any values between 0 and that epsilon are considered as touching contacts. |
Option |
Description |
---|---|
Single Threaded |
Run single-threaded or multi-threaded code. Mainly for testing. |
Use New Task Manager |
Use new task manager implementation. It manages number of spawned tasks automatically, so ‘Number of Tasks’ setting is ignored. |
Number of Tasks |
Number of tasks used when running multi-threaded. Generally speaking, the more the better. |
Option |
Description |
---|---|
Log info in Console |
Log info & perf results to console. |
Overlap Code |
Use alternative triangle-triangle overlap code. |
Note
Remember to click the Save Properties button to save your changes! By default, changes are automatically saved upon query selection change. This can be disabled in settings by unchecking Save Edited Query on Selection Change.

Clash Detection Results Window#
This window displays results for each selected clash query.
There is a row limit that restricts the number of rows displayed. The current limit is set to one million rows. Users receive a notification if the number of rows is reduced because of this limit.

First, choose a clash query to work with from the Selected Clash Query dropdown list. You can edit clash queries in the Clash Query Management window, described in the previous section. Click the Query Management button to open the Clash Query Management window.
Review descriptions of each results list column.
Column |
Description |
---|---|
# |
Clash number. If background color of the number turns red, it indicates, that the clash is no longer present in the stage. |
Present |
Indicates if the clash is present in the stage or not. Note that we never delete even resolved clashes. If you are no longer interested in a clash, simply delete it yourself. |
Type |
Type of clash. A Duplicate, Hard or Soft. |
Min distance |
Minimal distance between clashing objects. 0=Hard clash; otherwise soft clash. |
Tolerance |
Tolerance which was set at the time when clash detection was run. For hard clashes, the tolerance is always zero. For soft clashes it is non-zero. |
Max Local Depth |
[EXPERIMENTAL] Estimated maximum local depth. This is always a positive value. |
Depth Epsilon |
Maximum Local Depth Epsilon value which was set at the time when clash detection was run. Epsilon value is used to classify hard clashes vs contact cases. |
Max Overlaps |
Maximum number of overlapping triangles. |
Clash Start |
Starting timestamp of the clash. |
Clash End |
Ending timestamp of the clash. |
Records |
Total number of clashing frames. |
Object A |
Name of the clashing object A. |
Object B |
Name of the clashing object B. |
State |
Management flag: Current state of the clash. (New, Approved, Resolved, Closed, Invalid). |
Priority |
Management flag: Priority of the clash from 0 to 5. |
Person in Charge |
Management flag: Name of a person this clash is assigned to. |
First Detected |
Shows timestamp when was the clash first detected. |
Last Modified |
Shows timestamp when was the clash last modified. |
Comment |
An optional comment for each clash. |
Click the Run Clash Detection button to initiate the clash detection process on the currently open stage, using the parameters from the selected clash query in the Selected Clash Query dropdown list. Once clicked, the button transforms into a progress bar. If needed, you can click the progress bar or press the Escape key to cancel the process. When the process is complete, the results view will display all detected clashes.
Note
Different colors on the progress bar now represent various stages of clash detection:
Green indicates the conversion of curve animations to time samples.
Orange signifies the clash detection engine’s activity.
Blue denotes the result-fetching process.
To delete selected clashes, click the Delete Selected button.
Keyboard shortcuts#
Here are some useful shortcuts for the Clash Detection Results Window:
Keyboard Shortcut |
Description |
---|---|
CTRL+A |
Select all clashes. |
ESCAPE |
Deselect the currently selected clashes and remove the clash visualization overlay from the main viewport. |
DELETE |
Delete selected clashes. This functionality only works when the window is focused. |
Export#
To save the results report as an HTML or JSON file, select Export. Once clicked, the following options display:
Option |
Description |
---|---|
Export only filtered items |
If ticked, only visible clashes will get exported. If not, all clashes that belong to the selected clash query will get exported. |
Export clash screenshots |
If ticked, clash images for each clash will get captured and saved to the target location |

Refresh#
The Refresh button will fully refresh the clash results list, deselect all currently selected clashes, and remove clash visualization overlay from the main viewport.
Search#
You can instantly filter the resulting list by typing a string into the Search field. Filtering is case insensitive.
Note
You can encapsulate the search string with back quotes for exact whole word matches. E.g. `mesh1`
.
Right-click on an item in the list to open a contextual menu. This menu provides options such as selecting clashing objects, inspecting clashing frames, copying information to the clipboard and more.

Inspect Clashing Frames on Timeline: Displays a timeline with a slider (next to the Refresh button) to inspect the range of clashing frames. You can also double-click on a clash row to reveal the timeline. This feature is unavailable if more than one clash is selected.
Create Markup: If Markup extension is active, creates a markup (annotation in 3D scene with a 2D whiteboard overlay) for all selected clashes. For more information about Markups, please refer to Markup documentation page.
Filter View to Only Show Object A Clashes and Filter View to Only Show Object B Clashes: Limits the results view to only show clashes of object A or B. Such filters can be removed by clearing the Search field. It is not available if more that one row is selected!
When you click the menu icon, you can see several options:
Show Full Paths of Clashing Objects: Check this to show full paths of clashing objects in the list.
Enable Debug Logging: Check this to turn on debug logging and diagnostic messages.