Isaac Sim Version
5.1.0
5.0.0
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):
Operating System
Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):
GPU Information
- Model: 5070 Ti laptop
- Driver Version: 573.24
Reference added to scene with duplicate scaling
Detailed Description
I am trying to use python standalone to build a scene, but the reference USD gets added with BOTH xFormOp:scale = 0.0254 AND xFormOp:scale:unitsResolve = 0.0254
Obviously, this results in the referenced USD being super small.
The source reference usd file is indeed in inches, and when drag-and-drop into a new, empty, scene it seems to load fine and have correct scale with xFormOp:scale:unitsResolve = 0.0254 and xFormOp:scale=1. I still see the âmismatched unitsâ info dialog, but it works fine when drag-and-drop using the GUI; unitsResolve = 0.0254 seems to be correct considering source USD is inches.
Additionally, pre-built scenes using this same file reference load correctly.
However, when I use python and add the suspect reference to the scene, it is added to the scene with BOTH xFormOp:scale = 0.0254 AND xFormOp:scale:unitsResolve = 0.0254
After the scene opens via the python script, I can manually change either xFormOp:scale OR xFormOp:scale:unitsResolve to 1, and the scaling appears correct.
Steps to Reproduce
-
run my python script or otherwise add usd to the scene:
add_reference_to_stage(f"DM-1_4_2025_2.usd",machine_prim_path) -
observe teeny tiny machine and duplicate scales:
-
editing either scale after the scene is loaded to 1 corrects things:
Error Messages
None; its just wrong. LOL
Additional Information
What Iâve Tried
-
opening a pre-built scene that references this usd works fine, scaling as expected
-
adding reference to empty stage using GUI works fine; scaling is correct regardless of âmismatched unitsâ notification. units resolve 0.0254 makes sense since source reference is in inches:
Additional Context
suspect usd file and python script can be found here : LINKY
python script also here for convenience, you might need to adjust path to the reference:
from isaacsim.simulation_app import SimulationApp
# Launch Isaac Sim in GUI mode
simulation_app = SimulationApp({"headless": False,}, experience="apps/isaacsim.exp.full.kit")
from isaacsim.core.api import SimulationContext
from isaacsim.core.api.world import World
from isaacsim.core.api.robots.robot import Robot
from isaacsim.core.api.objects.cuboid import DynamicCuboid
from isaacsim.core.prims.impl.xform_prim import XFormPrim
from isaacsim.core.utils.extensions import enable_extension
from isaacsim.core.utils.stage import add_reference_to_stage, is_stage_loading
from omni import usd
import numpy as np
from pxr import Sdf
# enable ROS2 bridge extension
enable_extension("isaacsim.ros2.bridge")
world = World()
world.initialize_physics()
cube = DynamicCuboid(
prim_path="/World/cube",
name="cube",
position=np.array([-3.0, -.2, 1.0]),
scale=np.array([.15, .15, .15]),
color=np.array([.2,.3,0.])
)
world.scene.add_default_ground_plane()
world.scene.add(cube)
# world.reset()
machine_prim_path = f"/World/mxi_m001"
add_reference_to_stage(f"workspace/mxi-isaacsim/assets/dm-1_solid_models_04_2025/DM-1_4_2025_2.usd",machine_prim_path)
machine = Robot(prim_path=machine_prim_path, name='mxi_m001')
stage = usd.get_context().get_stage()
machine_prim_stage = stage.GetPrimAtPath(machine_prim_path)
machine_prim_stage.CreateAttribute("isaac:namespace", Sdf.ValueTypeNames.Token).Set("mxi_m001")
machine_prim = XFormPrim(machine_prim_path)
machine_prim.set_world_poses(orientations=np.array([[np.deg2rad(90), 0.0, 0.0, np.deg2rad(90)]]))
print("Loading stage...")
while is_stage_loading():
simulation_app.update()
print("Loading Complete")
# Reset and run the simulation
world.reset()
simulation_app.update()
try:
while simulation_app.is_running():
world.step(render=True)
except KeyboardInterrupt:
simulation_app.close()
exit()


