1
$\begingroup$

I'm trying to create assets using Blender, save them as USDs with their texture information, and bring them into UE5. I'm having two major issues that are holding me back. The first is that when I try to save USDs, the only textures that will be saved are Diffuse, Roughness, Metallic, and Normal maps. I have an asset that requires a custom Emissive map, but when I try to save it, that map is never included in the textures folder. The second issues is that when I bring my USD file into Unreal, it reads the Normal Map as an sRGB which totally breaks it.

I am working on version 3.1.2 currently. I've tried plugging my emissive map into the correct BSDF input. There are no other nodes involved, just Emissive Texture color output to Emissive BSDF input. It looks good in the viewport, but doesn't save when exported. I've tried doing a "workaround" that I've seen a lot online where an emissive map is plugged into an Emission Shader node, and added to the BSDF node before being plugged into the Material Output. Still nothing. I've tried making the emissive a flat value to see if that will be read by Unreal. No dice. I've even tried downloading the Nvidia Omniverse plugin for Blender to see if that helps and it made it even worse. Plugging all of my textures into the correct texture inputs in the OMNI PBR material graph meant that only the diffuse map would be saved into the textures folder, and in Unreal, would be plugged into the inputs for each texture map.

I know that emissive textures can be saved to USDs, because I can export assets from Unreal with their materials and emissive textures as USDs. When reimported, their emissive textures will be plugged into the correct input on the USD Preview Surface instance. For whatever reason, it just doesn't work coming out of Blender. I would just create my USDs this way but exporting a USD from Unreal means that it creates a gross file structure where all objects and materials are all USDs that are read by one hierarchical USD that describes the whole scene.

My other issue is that when I bring USDs from Blender into Unreal, it doesn't automatically set the correct compression settings on normal maps. This means that they're being read as sRGB rather than RGB by the engine, which totally breaks them. I've tried setting the normal texture input nodes in Blender to non-color and raw before exporting as USD, but it doesn't seem to make a difference. I've also tried editing the UE5 USD Plugin material to include a function to convert sRGB to RGB but it didn't work at all. I'm also going to post about this issue on the UE forum just to see what I can find.

Let me know if anyone has had this issue, or if there's a workaround. Thanks!

$\endgroup$
2
  • 1
    $\begingroup$ This is the Blender manual entry on USD import/export. There seem to be quite a few limitations at the moment. Read the Materials section on Exporter limitations. $\endgroup$
    – John Eason
    Jun 6, 2022 at 9:26
  • $\begingroup$ "a few limitations" sounds a bit of a euphemism to me: "Very simple versions of the materials are exported, using only the Viewport Display color, metallic, and roughness." Basically, there seem to be no actual material support, only preview options are. Which most people don't even set by default. $\endgroup$
    – L0Lock
    Sep 30, 2022 at 14:33

1 Answer 1

0
$\begingroup$

When using Mac:

  • Install 'Xcode' and 'USDZ Tools'
  • Install 'Python 3.7.9'
  • Install 'numpy' to Python
  • Export myfile.gltf (embed textures) file from Blender
  • Use command line tool:
  • usdzconvert myfile.gltf myfile.usdz
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .