We have a test asset, a building, made in Maya and with several LODs. We followed the FBX pipeline documentation on how to set everything up. When imported into Unreal using FBX with the option to auto import LODs, the mode imports OK, and when viewed in the StaticMesh editor it has the proper LODs as expected. However if you flip through the LODs the materials are all jumbled up. What I mean by that is that the proper materials are there in each case, bu the faces they are applied to changes between LODs. The floor material on the Base LOD which is applied to the floor, suddenly shows up on say the wall in another LOD. When views in Maya everything looks correct, both on the original Maya asset and by importing the same FBX into Maya. In both cases the proper materials show up on the proper faces throughout all LODs.
Has anyone seen this issue before or maybe have any idea what we may be doing wrong?
If we export each of the LODs are separate meshes in separate FBX files then import them individually into Unreal the materials are correct.
If we then use those same files, and manually load each into the base LOD as a new LOD, then the materials are wrong.
Even more, it changes as you go through the process. Something like this:
Load base LOD - Materials ok.
Import LOD 1 - Materials on LOD0 and LOD1 are ok
Import LOD 2 - Materials on LOD1 change and are now wrong. Materials on LOD0 and LOD2 are correct
Import LOD 3 - Materials on LOD2 change and are now wrong. Materials on LOD0 and LOD3 are correct. Materials on LOD1 and LOD2 are wrong.
As you can see there is a pattern there. As you import each LOD mesh into the base mesh, the latest loaded LOD always has the correct materials but each intermediate LOD changes and becomes incorrect as you load the next.
Yes this definitely happens to me with LOD. I just roll with it, because I end up taking my Materials for the original model in UE4, and make LOD1 and LOD2 etc versions of the same Material assigning those materials to the respective LOD models.
I also scale down all my textures involved. So if my main texture is 1024x1024 and is named concrete_KD_1k.png, I have a concrete_KD_512.png and concrete_KD_256.png and concrete_KD_64.png (yes jump to 64 because far away i want as little as possible to load).
So it all gets scrambled and I have to go through and highlight all the parts of the model, and assign my LOD materials. it’s a bit painful, I haven’t stopped to consider the reason beyond scratching my head and cursing.
There are other painful things with LOD.
You can’t fake an LOD read with a different model, because it will rotate the model and give you the middle finger.
Shadows are a bit odd, there is a significant bump when the model swaps out to lower res, that I haven’t figured out and this is more distressing as I can reassign shaders, not sure what to do if the shadows aren’t cooperating.
Finally, make sure that you are using the reduce feature in Maya to make your LOD, because if you model a very reduced version it will put all the UVs in different places, and that will not work at all. It might seem like it will work but it will definitely not if you want your shadows to line up and you want your texture to line up exactly between LODs.
That seems rather odd. Is this official somewhere? Our LODs are always going to be hand done for quality and will always have different UVs if for no other reason than the geometry will be different, with lower LODs having entire bits of detail removed. It seems pretty silly if identical UVs is actually an official requirement.
It sounds to me like Unreal’s handling of LODs is all messed up, which frankly surprises me. How can such a fundamental piece of the engine be this bad without people screaming about it?