From c597434fc9a9e9b4e0f5a8680388e37ff3f71d40 Mon Sep 17 00:00:00 2001 From: Sam Haves Date: Thu, 17 Jul 2025 09:58:49 -0700 Subject: [PATCH] When UsdCollisionAPI is applied but collisionEnabled is false, treat it as a visual gprim. PiperOrigin-RevId: 784219782 Change-Id: If87e1cd7e1cc10b27a3d432585466e3aece71d26 --- src/experimental/usd/kinematic_tree.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/experimental/usd/kinematic_tree.cc b/src/experimental/usd/kinematic_tree.cc index 73982586..d417e530 100644 --- a/src/experimental/usd/kinematic_tree.cc +++ b/src/experimental/usd/kinematic_tree.cc @@ -135,10 +135,20 @@ ExtractedPrims ExtractPrims(pxr::UsdStageRefPtr stage) { root->physics_scene = prim_path; } - if (prim.HasAPI()) { - current_node->colliders.push_back(prim_path); - } else if (prim.IsA()) { - current_node->visual_gprims.push_back(prim_path); + if (prim.IsA()) { + bool has_collision_api = prim.HasAPI(); + if (has_collision_api) { + bool collision_enabled = false; + pxr::UsdPhysicsCollisionAPI(prim).GetCollisionEnabledAttr().Get( + &collision_enabled); + if (collision_enabled) { + current_node->colliders.push_back(prim_path); + } else { + current_node->visual_gprims.push_back(prim_path); + } + } else { + current_node->visual_gprims.push_back(prim_path); + } } if (prim.HasAPI()) {