"""Does bottle's referenced mesh actually carry collision, compared to a working item?""" import omni.usd from pxr import Usd, UsdGeom, UsdPhysics import sys sys.path.insert(0, "/home/dasha/robozon-sorter") from robozon_sorter import config as C for name in ["bottle", "box_300x200x200", "bag", "helmet"]: tmp_stage = Usd.Stage.CreateInMemory() prim = tmp_stage.DefinePrim("/probe", "Xform") prim.GetReferences().AddReference(str(C.ROOT / "assets" / "items" / f"{name}.usd")) print(f"=== {name} ===") n_col = 0 n_mesh = 0 for p in Usd.PrimRange(prim): if p.IsA(UsdGeom.Mesh): n_mesh += 1 has_col = p.HasAPI(UsdPhysics.CollisionAPI) or p.HasAPI(UsdPhysics.MeshCollisionAPI) if has_col: n_col += 1 approx = p.GetAttribute("physics:approximation") print(f" {p.GetPath()} type={p.GetTypeName()} approx={approx.Get() if approx else None}") print(f" meshes={n_mesh} prims_with_collision={n_col}")