Clash Detection Engine Encapsulation#
Overview#
File Name: clash_detect.py
This file provides a ClashDetection class. This class provides methods for initializing and managing clash detection pipelines, setting configurations, processing overlaps, and handling clash data. It interfaces with the underlying clash detection API (by leveraging the omni.physx.clashdetection extension) to perform these operations.
ClashDetection Class#
- class ClashDetection#
Handles setup, configuration, and processing of clash detections.
Constructor#
- __init__() None
Initializes a new instance of the ClashDetection class, setting up the clash detection API and context.
Methods#
- destroy() None
Releases the clash detection API and context. Should be called to clean up resources when the clash detection is no longer needed.
- reset() None
Resets the clash detection context to its initial state, clearing any existing configurations or data.
- get_nb_overlaps() int #
Returns the number of overlaps (clashes) detected in the current context.
- Returns:
The number of detected overlaps (clashes).
- Return type:
int
- set_settings(
- settings: Dict[str, Any],
- stage: Usd.Stage = None,
Configures the clash detection settings based on the provided dictionary.
Note
Settings which are not provided in the dictionary are left unchanged.
Optionally takes a USD stage to apply settings relevant to the stage.
- Parameters:
settings – A dictionary of settings to apply.
stage – An optional USD stage to apply settings to.
- Returns:
True if settings were successfully applied, False otherwise.
- Return type:
bool
- get_list_of_prims_int_paths(
- stage: Usd.Stage,
- prim_str_path: str,
Gets a list of prims in ‘int path’ form.
It is a class method.
- Parameters:
cls – The class instance.
stage (Usd.Stage) – The USD stage.
prim_str_path (str) – The prim string path.
- Returns:
List of prims in ‘int path’ form.
- Return type:
List[int]
- set_scope(stage: Usd.Stage, obj_a: str, obj_b: str) bool #
Sets the scope of clash detection to specific objects within a USD stage.
If both obj_a and obj_b are empty -> process full scene.
If only the obj_a list contains items -> limit processing only to obj_a items.
If obj_a and obj_b lists contain items -> process obj_a against obj_b.
- Parameters:
stage (Usd.Stage) – The USD stage.
obj_a (str) – The first object or group of objects.
obj_b (str) – The second object or group of objects.
- Returns:
True if the scope was successfully set, False otherwise.
- Return type:
bool
- create_pipeline() int #
Creates the clash detection pipeline.
- Returns:
The number of pipeline steps.
- Return type:
int
- get_pipeline_step_data(index: int) Any #
Gets data for a specific pipeline step.
- Parameters:
index (int) – The index of the pipeline step.
- Returns:
Data for the specified pipeline step.
- Return type:
Any
- run_pipeline_step(index: int) None #
Runs a specific step in the clash detection pipeline.
- Parameters:
index (int) – The index of the pipeline step.
- get_overlap_data(overlap_index: int, frame_index: int) OverlapData #
Gets overlap data for a specific index and frame.
- Parameters:
overlap_index (int) – The overlap index.
frame_index (int) – The frame index.
- Returns:
Data of the specified overlap.
- Return type:
OverlapData
- get_overlap_report(
- overlap_index: int,
- frame_index: int,
- mesh_index: MeshIndex,
- flags: OverlapReportFlag,
Gets the overlap report for a specific overlap, frame, and mesh.
- Parameters:
overlap_index (int) – The overlap index.
frame_index (int) – The frame index.
mesh_index (MeshIndex) – The mesh index.
flags (OverlapReportFlag) – Flags for the overlap report.
- Returns:
The overlap report.
- Return type:
Dict[str, Any]
- get_overlap_faces(
- overlap_index: int,
- frame_index: int,
- mesh_index: int,
Gets the overlap faces for a specific overlap, frame, and mesh.
- Parameters:
overlap_index (int) – The overlap index.
frame_index (int) – The frame index.
mesh_index (int) – The mesh index.
- Returns:
The overlap faces.
- Return type:
List[int]
- get_overlap_outline(
- overlap_index: int,
- frame_index: int,
Gets the overlap outline for a specific overlap and frame. It is a flat array of floats grouped in sets of three, representing x, y, and z coordinates.
- Parameters:
overlap_index (int) – The overlap index.
frame_index (int) – The frame index.
- Returns:
The overlap outline.
- Return type:
List[float]
- process_overlap(
- stage: Usd.Stage,
- idx: int,
- existing_clash_info_items: Dict[str, ClashInfo],
- query_identifier: int,
- setting_tolerance: float,
Processes a detected overlap, updating or creating a ClashInfo object as necessary.
- Parameters:
stage (Usd.Stage) – The USD stage.
idx (int) – The index of the overlap.
existing_clash_info_items (Dict[str, ClashInfo]) – A dictionary of existing clash info items.
query_identifier (int) – The identifier for the clash query.
setting_tolerance (float) – The tolerance setting for clash detection.
- Returns:
A ClashInfo object if it’s a new clash, None otherwise.
- Return type:
Optional[ClashInfo]
- fetch_and_save_overlaps(
- stage: Usd.Stage,
- clash_data: ClashData,
- clash_query: ClashQuery,
Fetches detected overlaps and saves them to the provided ClashData object. This method is a generator that yields progress updates.
- Parameters:
stage (Usd.Stage) – The USD stage.
clash_data (ClashData) – The ClashData object to save overlaps to.
clash_query (ClashQuery) – The ClashQuery object.
- Returns:
A generator yielding progress values.
- Return type:
Generator[int, None, None]
Properties#
- clash_detect_api -> Any
Returns the underlying clash detection API interface used by this instance.
- Returns:
Clash detection engine API.
- clash_detect_context -> Any
Provides access to the current clash detection context.
- Returns:
Clash detection engine API context.