Blender -> UE5 UVs Breaking

Hi all,

I’m trying to import an .fbx with ~2.7M faces. My workflow is Blender → Zbrush → Blender (for size and pivot point fixes) → UE5 (I also use Substance Painter for texturing but it doesn’t touch the UVs). I’ve checked the UV maps at each stage in this pipeline and the UVs look correct in Blender (just before exporting it for UE5). When I import the fbx into UE5 however, the UVs break.

I feel like I’m probably doing something simple wrong. Here’s a visual:

The pass in zbrush could easily be causing this.

How many UV Channels are there when you get it back to blender?

And is the UV you are looking at in engine the Imported one (not the generated lightmap) ?

There’s only one UV map through the entire pipeline. I import the UV map from Blender into Zbrush, and here’s UVMaster’s UV Map (on the highest subdiv, which is currently the only subdiv as I deleted the lower ones so GoZ would work):

I checked the lightmap UVs in UE5 - I’ve tried both disabling lightmap UV generation on import and keeping it on (default) - both options work as intended, though the Lightmap UVs break in a similar fashion to how my own UVs break when imported into UE5 (which makes me think its a UE thing).

Probably is an unreal thing.

I would suggest you try the same exact model in .25 or similar.

However usually when you get issues like this the export settings in blender or the import settings in unreal are wrong.
Usually the export/import version for fbx or similar.

It’s worth you double check those.

I think this is a good callout - thank you. I’ve imported the same model into 4.26 and the UVs look much more in line with what they should be, though the material itself isn’t actually correct. It looks like UE did a different thing in 4.26. I can’t zoom into the UVs to see if they’re triangulated in the same way UE5 did it.

Another interesting data point is that I just realized Unreal 4 (and 5) are saying this asset is 10.6M triangles, but Blender shows 5.5M triangles (and Zbrush was around 2.6M points).

I went ahead and tested a different mesh that had never been imported into Zbrush and the UV maps imported correctly. There’s some interaction between Zbrush and UE5 that isn’t being recognized and identified by Blender. I’ll have to dig a little further to figure out what I’m doing incorrectly. I started down the path of doing a ZRemesher in Zbrush but doing that destroys the UVs from blender and I haven’t quite figured out how to apply Blender’s UVs after doing the ZRemesher (I think I can’t since the mesh is fundamentally different now).

Is there any source of truth you’d point to that you’re confident they’re doing the appropriate workflow steps? I’ve watched about 40 different tutorials on youtube and dug through various documentation sources here and on Zbrush and Blender forums but nothing points to a clear answer. (there’s a boatload of UE4 answers, and lots of people do their art creation in unique ways, so it’s all a bit muddied).

Correct.
Zbrush works off vertex order.
Deleting a single vertex would cause the UV from blender to no longer apply.

I can tell you my use of zbrush.
Make a model in blender. Bring it to zbrush. Sculpt, bake the maps. Use the maps on the original model.

As far as the rest.

  1. the fbx import (or any import) triangulates for you.
    not using the best possible implementation to do this. - As such, triangulating yourself with a modifier in blender that gets applied by the experimental checkbox on export usually provides 100% better results.

  2. the fbx export from blender is not fool proof.
    Even my version is really just custom code scraped together and modified by probably 20 people.
    Still. Give it a try, since is not the default one…
    UE4Curves : Unreal Animation Curves from/to Blender

  3. different version of import / export work different.
    Say you export for 2018 and import on the latest. There’s no guarantee it will work.
    You should always make sure the settings are set to the same for both import and export.

  4. there’s an autodesk fbx converter that can sometimes help with the files. Mostly it’s useful to convert it between versions. But, because it’s official and it reads badly made files / outputs one that you can assume is good it can prove useful at times.

Still, there’s nothing to say that ue5 devs didn’t muck around with the fbx import to try and cater to a newer version compared to .25/.26/.27
And given how much faith I hold in the unreal team after the last year of publishing sheer trash… well you can figure the rest :stuck_out_tongue:

Make a model in blender. Bring it to zbrush. Sculpt, bake the maps. Use the maps on the original model.

This seems pretty standard (compared to the rest of the internet). I’m trying to find an effective way to keep the geometry high and avoid baking (since Nanite exists now).

Another interesting data point is that substance painter reads the Zbrush export correctly, and I can paint and output texture files as expected.

I’m going to try the steps you’ve suggested, we’ll first see if adding a triangulate modifier to my 5.5M triangle mesh makes blender start smoking :upside_down_face:

I’ll also see what results I get with your exporter (and autodesk’s converter).

Thanks for the tips so far!

Triangulating the mesh fixed the UV’s but applied the textures incorrectly, so I went back to substance painter and realized that I totally forgot you can export the mesh (with an option to triangulate!). So I exported the triangulated mesh from substance and imported into blender just to reset pivots and exported from blender and it worked.

Mesh workflow:
Blender → Zbrush → Painter → Blender → UE5.

@MostHost_LA thank you for talking through this with me!

Hey, whatever works right? :stuck_out_tongue: