Wrong results after scaling using USD Unit Converter

When I scale the assets from NVIDIA (for example, omniverse://localhost/NVIDIA/Assets/ArchVis/Residential/Appliances/Oven/wall_oven.usd) into meters, the results are incorrect (see the screenshots below).

Could you take a look? This potentially affect many assets, and I hope there is a way to fix this.

Left: before scaling (unit in cm). Right: after scaling (unit in m):

@xymengxy i am just a passerby, how are you scaling the asset? also, which Isaac Sim version are you using?

I use the USD Unit Converter with the default options: USD Unit Converter Utility — Omniverse IsaacSim latest documentation

I’m using 2023.1.0. Tried 2022 version and it has the same problem.

i know what i am about to say does not really address your concern, but if you were to open up the source/original USD, the asset should already be in the right scale. if you were to run the USD unit converter tool, you are actually shrinking it. you can confirm this if you were to use the measure tool (Tools > Measure):

in addition, Metric Assembler extension should be active by default with Isaac Sim; so, if you were to drag and drop this asset into a separate scene that’s already in meters, it’ll automatically rescale the size of the reference/payload with added unitsResolve attribute with a prompt in the viewport indicating the resolution:

for the dev - after a quick dig, i found that the piece that’s having the problem seems to be the following prim:

/World/wall_oven_grp/wall_oven_trans_grp/wall_oven_case_grp/wall_oven_body_SUBD0/wall_oven_body_1

and the asset seems to behave correctly with the USD Unit Converter once the default translate, rotate, and scale attributes were removed (though i can’t confirm how these attributes were causing the unit converter to go haywire)

@Simplychenable thanks a ton for the investigation!

I notice that if I drag and drop it, it looks more correct. The glasses look odd though (having some kind of offset):

The transform attributes are the same as your screenshot before I run the unit converter. However, if I remove the translate pivot values, the model looks more correct.

(continue from the above since I cannot paste two images in one post).

Regarding the artifacts after drag and drop, this happens to other models as well. For example, the fridge model (omniverse://localhost/NVIDIA/Assets/ArchVis/Residential/Appliances/Refrigerators/fridge.usd). If I drag and drop it, I can see through its side panel depending on the camera angle:

I would stick to drag and drop and try to avoid using the Unit Converter unless absolutely required. As mentioned, if the scene is properly set up there is no need to use the converter. The last example image you sent of the fridge is hard to tell what is happening because of the lighting. Please try to add an enviroment and lights and materials so we can see what the issue is. Right now it is just white on white. It looks like it has come in fine, apart from some missing side panels. That may be a “face normal” problem.

I would stick to drag and drop and try to avoid using the Unit Converter unless absolutely required.

I’m mostly using the python API, not the GUI. Would drag-and-drop work with the python API? I wish all the assets to be in meters (a common unit in robotics), but the assets provided by NVIDIA are in centimeters, which require conversion.

The last example image you sent of the fridge is hard to tell what is happening because of the lighting.

The issue is that the the side panel flickers as I rotate the camera. At certain angle I can see what is inside. This only happens after I apply the Unit Converter. To reproduce this, you may open the fridge model (not drag and drop), and apply the unit converter to the scene.

The Isaac Unit converter does not handle Pivots correctly sometimes - if you absolutely need to use it I’d advise on trying to remove pivots from the transforms prior to scaling. as of Isaac sim 2023.1.0, there’s an automated Unit scaling layer that should handle changes in meters per unit from referenced assets, we’d advise trying to stick with that instead, unless it breaks in other unexpected ways.

Silly question but if you need something in meters and it is in cm’s, can you not simply scale the asset up or down accordingly, and not even use the usd unit converter ? For example you need a fridge in meters, it comes in 1/100 the scale because it is cm. Simply scale x 100 and its fine. Or vice versa. I feel that “scaling” with be a lot cleaner and less problematic that officially have to convert units.

If all you care about are visuals it’s fine to just scale it. If you’re adding physics to the asset just the scaling will cause a lot of issues with the physics values - they also need to be scaled accordingly. The usd unit converter takes care of that, as well as the scaling layer

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.