I have a scene with usd files being referenced, but since they are created in different files, they also varied in scene units. I was able to get everything into the correct scale, with my isaacsim layer to be on 1 for meteres per unit.
I was able to use the “collect as” feature to pull all the references into a new hierarchy, but I want to sort of ‘reset’ the scene to remove previously needed scaling.
There is the metrics assembler that adds a unitscale attribute, but this isn’t part of the USD. Basically, is there a way to rewrite the USD values with a “convert” feature?
Yea that is discussing how to create the file, and also discussing the metrics assembler I mentioned in my question, but doesn’t resolve the issue of multiple layers of a USD file and “normalizing” the units. Or was your link to point out that this is just a problem in general?
If the ‘metrics assembler’ can fix the scaling issues, why do you need to rewrite the USD values? Are you looking for something like the ‘USD Unit Converter Utility’ mentioned in a previous topic?
It doesn’t fix the scaling issues, it scales them. In many cases is making things even more confusing. If I have a prim that is scaled, and then the prim above it has a scaling factor, it is compounded (makes sense), but reading the prim data is in local space, relative to some compound transform. Since I have multiple files that make up my environment, I have different original file scales, that also have internally some prims scaled. Now when the scene is compiled and I have, for example, a jug of milk in the isaacwarehouse, and I need to move it into a custom container made in a different program and stored as USD, scaling will break because it is on a new prim.
I get there are no good solutions to scaling, and USD not having units is a nightmare, so basically I am looking for a way to rewrite the USD data to be in worldspace.
The link provided in that first post, talking about the converter doesn’t work:
In conclusion, if you want to maintain size of object made by Creo between Create and Isaac Sim, you should set MPU directly, or use CAD Importer and save USD file with Create.
“Create” AKA “Composer” is EOL, so I don’t think it is a relevant strategy.
Thank you for sharing your concerns about scaling issues in USD. I understand the frustration you’re experiencing with compound transformations and inconsistent scaling across different files and prims.
While using the USD API to rewrite data in world space coordinates can address some of your issues, it’s important to consider the potential drawbacks:
Loss of original data, which may be undesirable in some workflows
Potential versioning issues if source assets are updated
Increased file sizes, especially for models with high vertex counts
Reduced flexibility for certain types of edits or asset reuse
Thank you for explaining the drawbacks. For us and most of our clients, the advantages of this greatly outweigh the drawbacks. The drawback for not being able to do this:
Loss of original data is irrelevant when the proposed solution is to remake the entire factory and every object, i.e. make new ‘original data’
Assets are pulled for dozens to hundreds of sources, some assets are not built in house. This is minimal thought
Increased file size is unclear. We are not asking to remove instanceables, and assuming the vertices are stored as floating points, having a different scale seems minimal
I know how to do the conversion for an individual prim. I wanted to know if there was a tool or method to go through the entire scene and do all of the conversions, including physics.
I would have appreciated you simply saying you don’t know how USD works and are not aware of any tools to do this. It would have saved me a lot of time that was spent reiterating and articulating why it is needed, waiting 8 days for a non-answer.