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()) {