How To Properly Use LOD In Skeletal Meshes?

I’m having huge problems getting LODs on skeletal meshes going.

  1. The documentation always refers to “screen sizes” in the range 0-1 which is what the static mesh editor shows for an object, but a skeletal mesh shows a screensize in the range of 100s when you’re close.

  2. I have a setup with a body skeleton but only a head mesh attached. The skeleton is much larger than the head. What does the screen size refer to? the size of the mesh or the size of the complete skeleton?

  3. Is there a way to show the LOD level in the actual game editor rather than just in the skeletal mesh editor? I want to control the settings there, because when I set values up to switch at good distances in the skeletal mesh editor, it never works that way in the game viewport.

  4. I really think this system is messed up. I read that the engine used a distance based approach in the past. I think that is much easier and more intuitive. I am helping myself currently in the following way.

To find the correct value at which a character should switch LOD level it is necessary to see the character in the final game scene and not in the skeletal editor. To use this setup to give me feedback, I create a modified model of that character with the left or right arm missing. Just enough to not alter the calculated value of “screen size” too much.Then I create a character and add the one with the missing arm as LOD 1. Now I can place the character in the scene, alter the LOD screen size value for that LOD and move the camera around.

This way I get a halfway good estimation at what distance I want a switch to occur. I write those values down and then enter them into the real character for the respective LOD levels.

This works only if the indicator character and the final character have a similar vertex count. On top of it all the “screen size” seems to be calculated from the number of vertices an object has, so a value of 0.5 screen size will mean something different for an object that has fewer vertices than for one with many vertices. Consequently, when you enter a switch “distance” of 0.5 these two objects will switch at different real distances even if they are of equal size. Clearly this is a mess and results in trial and error for every character