When UsdCollisionAPI is applied but collisionEnabled is false, treat it as a visual gprim.

PiperOrigin-RevId: 784219782
Change-Id: If87e1cd7e1cc10b27a3d432585466e3aece71d26
This commit is contained in:
Sam Haves
2025-07-17 09:58:49 -07:00
committed by Copybara-Service
parent f5df466ee5
commit c597434fc9
+14 -4
View File
@@ -135,10 +135,20 @@ ExtractedPrims ExtractPrims(pxr::UsdStageRefPtr stage) {
root->physics_scene = prim_path;
}
if (prim.HasAPI<pxr::UsdPhysicsCollisionAPI>()) {
current_node->colliders.push_back(prim_path);
} else if (prim.IsA<pxr::UsdGeomGprim>()) {
current_node->visual_gprims.push_back(prim_path);
if (prim.IsA<pxr::UsdGeomGprim>()) {
bool has_collision_api = prim.HasAPI<pxr::UsdPhysicsCollisionAPI>();
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<pxr::MjcPhysicsSiteAPI>()) {