HLOD generating corrupted meshes with 0 triangles. What are some reasons this may happen?

The purpose of HLOD is to limit draw calls so i dont understand why an specific lod would matter (purpose wise)…

From my experiecne in one of my previous posts the current actor merging tool has the same problems as HLOD. In that i can force it to generate an actor merge with LOD 0 and that works fine, but if its on auto LOD it will give the error and give you a 0 poly model. Also if i try to force it to generate actor merge with only LOD 1 it still gives me the error… of a 0 poly model.

Also what happens if you aggressively LOD it? Maybe its super high and has 5 LODs that change very gradually very soon… What if some models only have LOD 0 with no LOD 1?

It sounds to me like you hit a fluke in order to make it work for your personal situation. Otherwise maybe im not understanding what your saying. Are you saying you cant let it merge if objects have different lod levels?

Maybe but people at epic already said they are replacing it… so clearly they are not happy with it.

Also i honestly dont understand. I mean every lod has the same uv channels… so how is this an issue?

If it lacks LOD1 you add it and provide the screen size you want it to swap to that LOD.

It could very well be specific, but trying this may be better than waiting. Clearly Epic has no problem using HLOD as Fortnite uses the system.

If the UV’s in a given UV channel (max of 8) don’t match the number of Indices in a given model (or no UVs in that channel) the merged mesh will be marked as corrupt. It fills those UV channels using the LODIndex that was either provided (Merge Actor Tool) or selected based on screen size for each mesh being merged.

Quoting an example log that I’ve added to the merge code to help me debug the corruption error message.

LogTemp: Error: TexCoordIndex = 1 1 (139428, 139428)
LogTemp: Error: TexCoordIndex = 2 0 (139032, 139428)
LogTemp: Error: TexCoordIndex = 3 1 (0, 139428)
LogTemp: Error: TexCoordIndex = 4 1 (0, 139428)
LogTemp: Error: TexCoordIndex = 5 1 (0, 139428)
LogTemp: Error: TexCoordIndex = 6 1 (0, 139428)
LogTemp: Error: TexCoordIndex = 7 1 (0, 139428)

TexCoordIndex is the UV Channel
The int following that is whether it passed the test or not, followed by the actual values. (NumUVs, NumWedges)

I’ve got more dumping into the log that I can’t paste here but here’s an example of data I dump about each mesh that lets me know which one is creating a potential issue.

LogTemp: Warning: Merging SM_WoodDeck At offset of 74786 with index count of 48 and vertex count of 32 using ScreenSize = 0.236250 LODIndex = 0
LogTemp: Warning: Merging SM_Stairs04 At offset of 74818 with index count of 99 and vertex count of 41 using ScreenSize = 0.236250 LODIndex = 2
LogTemp: Warning: Merging SM_Roof_Quart_Corner_01 At offset of 74859 with index count of 1008 and vertex count of 600 using ScreenSize = 0.236250 LODIndex = 0

Thanks Ryan, never would have known this as the HLOD docs have been next to nonexistent. You’re a lifesaver.

We have figured out where the problem is and how to solve it.
As it mentioned before the problem is in map channels. If you have objects in one cluster that has different map channel count - the cluster won’t build. The total allowed map channel count depends of a first object map channel count.
For example -
a) If your first object in a cluster has 3 map channels and other objects has 2 or 3 map channels - the cluster will build.
b) if your firsts object in a cluster has 2 map channels and other objects has 3 or more map channels - the cluster build will fail.
We are hoping that it helps to someone and we will forward this information to Epic.

p.s. of cause it happens only if you try to build HLOD with lowest (or any not 0 LOD) objects LOD level

Awesome! I cant wait to try this out.

Please let me know if it helps.

Hey you are right! Thanx for the clue!
All in UE internal made meshes (via merging, cutting etc) have to be exported to fbx, imported to 3dsmax(in my case) and then exported to fbx again.
After reimport to UE (via static mesh editor:- file path, - source file) the outdated material slots get the “delete” symbol highlighted. Delete them and save. Then in the outliner, in the details panel ,delete Override Material Array in the rendering section.