Speeding up asset reloading

Once again I post about this, and will be as complete as possible so that this is not dismissed without a real answer.

I have been using UE for years. I am familiar with pretty much all the features and I have made code changes before to fix issues (see my post on combining cloth + morph targets etc).

I have been teaching myself character art, mainly the face. Every day I do thousands of save/reload cycles because the renderer in Zbrush is too poor to assess the result. I have switched to Marmoset instead of UE for such tests because it loads staggeringly faster. Still, even the marmoset renderer looks very different from what I am trying to achieve in UE with custom post processing etc.

I am aware that once an asset is imported into the engines, some optional processes occur, all of which I have prevented from running (no lightmap computation, uv map already exists, I am not recomputing normals etc etc).

I am also aware that there are some non-negotiable things that must happen (what is reverse adjacency buffer? if I switch it off the model is no longer visible).

What I am asking is whether it is really necessary that the import of a file for a face sculpt takes 20-30 seconds when Marmoset viewer loads it in an instant (100ms?).

I am happy if the developers tell me this is some legacy library and we don’t want to work on it, but point me to the file to look into and give any hints as to how it could be sped up.

I have tried using UE5 with an identical result. Unity is 30-40% faster but still nothing in the ballpark of marmoset.

I am happy to ‘break the engine’ as I change the code to remove some processing step that is initially not needed to just see the textured model (ex something down the line can’t run like morph targets).

If you are wondering, FBX or OBJ doesn’t really make a difference the time to load is pretty much the same.

The ability to load the model in UE as fast as marmoset does would mean a lot to me so can you please offer some wisdom?

There is a big difference between importing an asset and loading an asset. When you import to UE, it’s converting the assets into the UE specific format. This format does a lot of optimizing and there’s a lot going on under the hood. If it was an FBX or OBJ file, the file used by UE is no longer either of those two, it’s its own format now exclusive to UE.

If you’re doing this in UE5, make sure to disable nanite generation on the import, while you’re doing the whole back and forth thing.

What exactly is involved in turning an OBJ into an asset file? What C++ file should I look at for information?

I am highly skeptical that this lag in loading is normal. There is little you can do on a modern machine that takes 30s for a file. Even zipping the file doesn’t take longer than a few seconds. The serialization routines are likely not optimized. Likely some minor tweaks could make a huge impact if there never was a motive to try to optimize. Surely when you reimport an asset (only vertex positions changed) any behind the scene processing could theoretically be skipped and only vertices updated. At any rate I’d just like the ability to preview the new mesh quickly, I am fine if it takes 30 seconds later when packaging the game, or running the game, etc.