Hello
in USD you can have several material definition for a material and UE allows you to switch between them. In USD stage you can see them in Options > Render context > Universal/Unreal/MaterialX/MDL. In USD import you have it in the USD Import Options dialog > USD Options > Render Context to Import.
- Universal: is reading the default material definition in the USD
- Unreal: is the default option, and is reading either an Unreal Material if it is specified or else will default to the same than universal.
- MaterialX: if your material is using a MaterialX definition (as external file and not embedded in USD)
- MDL: if your material is using an MDL definition.
Unreal material is basically reference to a path to an unreal asset in your project. When you export USD from UE you will always get the Unreal Material definition exported.
This is what you see in your case: you exported from UE so the Unreal material definition is present in the USD + UE default render context is “Unreal” so UE reads the USD and then tries to load the unreal material path that is empty because you did not copy your unreal material in the new project.
LogUsd: Warning: UE material '/Game/_Workspaces/_Sample/GameController/Materials/Instances/MI_Plastic_Black_Spec-10_Rough_3.MI_Plastic_Black_Spec-10_Rough_3' for prim '/SM_Glossi_Controller_v3' could not be loaded or was not found.
While Unreal materials reference are always exported, to get an Universal material in USD you need to tick the “Bake Material” option in the USD export.
Your options:
- Copy the Unreal material in the new project (that might not be what you want, if you want to copy assets between project you would use UE migrate tool and not USD)
- Else switch your render context to Universal and if material is all white make sure you ticked “Bake Materials” when you exported your USD. This can be a lossy process since you bake the UE material into a USD material definition.