I’ve been trying to structure our USD files to work better with Isaac UE and other software we use.
I see that Isaac Sim as well as Houdini is able to correct the geometry rotation based on the stages upAxis defined in the usd file. When dragging and dropping usd file using the omniverse plugin in Unreal Engine.
It seems to ignore the upAxis noted in the usd file and make no corrections to the orientation, but i also need to scale the asset up by 100 to bring it back to it’s correct scale.
Importing the same asset directly into UE with the same USD file doesn’t seem to have these issues and is to scale as well as having the orientation corrected. The usd geo also behaves as expected when imported into Isaac sim, blender and Houdini, the outlier seems to be when using the Omniverse plugin with Unreal Engine.
I’m using Omniverse build 203. I updated and tested the plugin on the same day as this post.
Hi jacob, when you dragged and dropped a usd file into unreal level, it means the usd file is referenced by unreal level. So the upAxis and metersPerUnit of unreal level will work as Z axis and centimeter.
Yes, we were able to determine that if the asset was exported with Z up it would face the correct way. But with the USD asset type in the content browser being an asset class introduced by the Omniverse plugin, does it not make the USD file it references compatible with UE?
As referencing the usd file in the USD Stage window in UE seems to import the same usd file without any issue, as it takes into account the upAxis and metersPerUnit to make it compatible with the current UE scene.
I’ve taken a look at the OmniverseStageActor.cpp source file and i can see that LoadBasicShape function evaluates the up axis, scale and makes corrections.
But dragging and dropping the usd file into the scene triggers the LoadStaticMesh function which has no code to correct the axis or the scale, they’re not even evaluated but loaded “as is”.
Searching through the plugin code there are several instances where the up vector is evaluated and corrected and the same goes for scale, functions for exporting to usd for example have these implemented.
But none of these functions seem to be implemented when the asset is to be loaded into the scene. Is there a reason for this?
Thanks for the info, we added the internal bug OM-114430 to improve the workflow.