USD Import - Impossible to have authored normals on Skeletal Mesh

Hello! My intention is to be proven wrong in this thread.

So far, it is my understanding that It is currently impossible to import a skeletal mesh from a usd file and to preserve the authored normals inside of it.

In order to prove me wrong, I would appreciate if you would modify the given example files such that they do import properly. Screenshots of other assets, providing unrelated files that do import properly, and etcetera are not as effective of a refutation, although I am just some guy so what can I even do about it.

In these files I have an extremely simple cube that is rigged. I tried three different methods: face-varying normals, vertex normals, and providing vertex normals, bitangents, and tangents. ALL of them import with a soft-edged cube that has averaged normals.

Changing the compute normals flag in the Properties of the skeletal mesh and clicking apply does nothing, even though doing so on a static mesh imported from usd does fix the normals to show the correct authored ones.

The first 3 attachments are the usds as I’ve described them. The first picture attached shows those imported USDs with a default opaque material on them, alongside a white cube from unreal engine’s default shapes. As you can see, all normals are recomputed on the imported usds. Finally, the last image shows how all normal recomputes are turned off, the apply changes is grayed out because the settings are implemented, and the cube still has soft normals. This is the current state of all three cubes in the other example image.

So. Is it possible?

cube_faceVarying_norm.usd (3.7 KB)

cube_vert_norm_binorm_tangent.usd (6.8 KB)

cube_vertex_normals.usd (5.2 KB)

UNREAL ENGINE Version: 5.4.4-35576357+++UE5+Release-5.4

This is what we get in the current version of the engine for the cube_vertex_normals.usd

Does it match your expectations.

Thanks for the response! Those two look different, which probably means its working. Im going to have to test all 3 examples in 5.7.4 which I would assume is the latest that you mention. I appreciate the time you took to help me.

That was a test on the upcoming 5.8, but I have similar results on 5.7.4

I must still confirm using the 3 cube examples, but at least I was able to confirm with one of my own source assets. In 5.7.4 the skeletal mesh imports incorrect normals from usd, and then I can turn off all the recompute normals and etcetera in the LOD settings. After that, clicking Apply Changes makes my authored normals appear. To be quite frank, it is ludicrous that authored normals are not the default. That goes against the very nature of game development, in my opinion. To make this much worse, clicking “reimport mesh” erases those settings changes to the LODs and breaks the normals again. Thankfully, my team wraps the initial usd import process, so we can fix the broken normals inside our wrapper.

In a rather ghastly side note, I am now struggling with the video memory exhaustion issue in 5.7 when bringing my project over from 5.4. The project ran flawlessly in 5.4, and yet on the same computer, the same scenes require 3-5 gigabytes of extra video memory to render. Insert various stiff-upper-lipped exclamations of incredulity here.

In case anyone from Epic reads this, I also wanted to mention that the reimport mesh button at the top of the skeletal mesh page causes the USD ui to appear, even though there is a button right next to “reimport mesh” called “reimport mesh with dialog”, so that also a bug, and seems like one that would save end users quite a lot of trouble for little investment on your part.

Does anyone know if authored meshes on skeletal meshes that were imported via usd file format works in 5.5 or 5.6? I would like to dodge this issue with 5.7