From 00102f89be9cc14ac75b83c2c461812ce7ff01f7 Mon Sep 17 00:00:00 2001 From: Mayank Mittal Date: Wed, 7 Jan 2026 13:44:17 +0100 Subject: [PATCH 1/2] Makes stage in memory test check material binding --- .../isaaclab/sim/simulation_context.py | 7 +++++- .../sim/test_simulation_stage_in_memory.py | 25 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/source/isaaclab/isaaclab/sim/simulation_context.py b/source/isaaclab/isaaclab/sim/simulation_context.py index e27053f1362..7519dea2b44 100644 --- a/source/isaaclab/isaaclab/sim/simulation_context.py +++ b/source/isaaclab/isaaclab/sim/simulation_context.py @@ -27,7 +27,7 @@ from isaacsim.core.api.simulation_context import SimulationContext as _SimulationContext from isaacsim.core.simulation_manager import SimulationManager from isaacsim.core.utils.viewports import set_camera_view -from pxr import Gf, PhysxSchema, Sdf, Usd, UsdPhysics +from pxr import Gf, PhysxSchema, Sdf, Usd, UsdPhysics, UsdUtils import isaaclab.sim as sim_utils from isaaclab.utils.logger import configure_logging @@ -146,6 +146,11 @@ def __init__(self, cfg: SimulationCfg | None = None): self._initial_stage = sim_utils.create_new_stage_in_memory() else: self._initial_stage = omni.usd.get_context().get_stage() + # cache stage if it is not already cached + stage_cache = UsdUtils.StageCache.Get() + stage_id = stage_cache.GetId(self._initial_stage).ToLongInt() + if stage_id < 0: + stage_cache.Insert(self._initial_stage) # acquire settings interface self.carb_settings = carb.settings.get_settings() diff --git a/source/isaaclab/test/sim/test_simulation_stage_in_memory.py b/source/isaaclab/test/sim/test_simulation_stage_in_memory.py index 3cf15126621..68d9d86c666 100644 --- a/source/isaaclab/test/sim/test_simulation_stage_in_memory.py +++ b/source/isaaclab/test/sim/test_simulation_stage_in_memory.py @@ -71,12 +71,35 @@ def test_stage_in_memory_with_shapes(sim): sim_utils.ConeCfg( radius=0.3, height=0.6, + visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(0.0, 1.0, 0.0)), + physics_material=sim_utils.RigidBodyMaterialCfg( + friction_combine_mode="multiply", + restitution_combine_mode="multiply", + static_friction=1.0, + dynamic_friction=1.0, + ), ), - sim_utils.CuboidCfg( + sim_utils.MeshCuboidCfg( size=(0.3, 0.3, 0.3), + visual_material=sim_utils.MdlFileCfg( + mdl_path=f"{ISAACLAB_NUCLEUS_DIR}/Materials/TilesMarbleSpiderWhiteBrickBondHoned/TilesMarbleSpiderWhiteBrickBondHoned.mdl", + project_uvw=True, + texture_scale=(0.25, 0.25), + ), ), sim_utils.SphereCfg( radius=0.3, + visual_material=sim_utils.MdlFileCfg( + mdl_path=f"{ISAACLAB_NUCLEUS_DIR}/Materials/TilesMarbleSpiderWhiteBrickBondHoned/TilesMarbleSpiderWhiteBrickBondHoned.mdl", + project_uvw=True, + texture_scale=(0.25, 0.25), + ), + physics_material=sim_utils.RigidBodyMaterialCfg( + friction_combine_mode="multiply", + restitution_combine_mode="multiply", + static_friction=1.0, + dynamic_friction=1.0, + ), ), ], random_choice=True, From 7cdab1834112b4c81e9829015ab7bcd5bde23555 Mon Sep 17 00:00:00 2001 From: Mayank Mittal Date: Wed, 7 Jan 2026 14:04:58 +0100 Subject: [PATCH 2/2] adds a fixme note for a hack --- source/isaaclab/isaaclab/sim/utils/prims.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/isaaclab/isaaclab/sim/utils/prims.py b/source/isaaclab/isaaclab/sim/utils/prims.py index 020aa5d4d6f..e206621b92f 100644 --- a/source/isaaclab/isaaclab/sim/utils/prims.py +++ b/source/isaaclab/isaaclab/sim/utils/prims.py @@ -197,6 +197,8 @@ def delete_prim(prim_path: str | Sequence[str], stage: Usd.Stage | None = None) prim_path = [prim_path] # get stage handle stage = get_current_stage() if stage is None else stage + # FIXME: We should not need to cache the stage here. It should + # happen at the creation of the stage. # the prim command looks for the stage ID in the stage cache # so we need to ensure the stage is cached stage_cache = UsdUtils.StageCache.Get()