USD import with payload converting Skels to StaticMesh

When a usd file which contains a skeletal binding is “wrapped” by a referencing/payload usd interface file, the skeletal mesh is converted to a static mesh on import. Attached zip file contains a

  • `Boxy_payload.usd`: a skinned cube
  • `Boxy.usd`: an interface file that just payloads in the Boxy_payload.usd

This is reproducible in 5.6 + 5.7-preview with either legacy and interchange usd importers. We are still using the legacy importer so if a bug is confirmed that is the one we would appreciate a fix in :slight_smile:

Steps to Reproduce

  1. Download attached zip
  2. Import the Boxy.usd into unreal
  3. Notice that no skeletal mesh is created, but instead only a static mesh
  4. Import the Boxy_payload.usd directly
  5. Notice that the skeletal mesh is created as expected

Hi Luke,

The issue is due to how you structured your USD stage and you can see why in usdview. The prim Xform1 that references boxy_payload.usd is an Xform, so the root prim in boxy_payload.usd that was a SkelRoot is now an Xform. [Image Removed]You can fix this by making the Xform1 prim typeless and it will preserve the type of the root prim in the referenced stage.

def "Xform1" (
    prepend references = @./Boxy_payload.usd@
)
{
}

If you must keep Xform1 as an Xform, then you can add a typeless prim under it that does the reference instead.

Best regards,

Anousack

Hi Anousack

Thank you so much for the explanation, that makes sense. I should have known it was an issue with the source files.