think it helps with loading time-frames, so beneficial it seems, less to load, loads fast = smoother? from what i try to gather from information available. For the record I've never made any, not that i couldn't it just never came up, don't know the exact process, to me it sounds like a lot of lowering and redoing uv's which sounds like a nightmare.
yes, it is a nightmare, thats what i did on my previous job in a studio and thats why im asking is it really really mandatory that much of optimisation. So, every AAA character need to have 5-7 LODs when doign retopo ? maybe that would be a better question
Until your model is pretty simple like wall barrier , a box or like LODs are necessary . For a character Simplygon does an ok job already. As far as I know Unreal uses Simplygon and makes lods automatically . But in some cases LODs require decisions and compromises Ai incapable to do yet. There are also a semi-automated way when you use decimation tool, vertex groups and normal transfer from hi res to low res. Usually only first next lod is important because you see the switch to it pretty close to camera. I usually bake for that lod rather than most detailed one . Then it could be just decimation modifier or whatever it's called in your 3d package . They tend to keep shape and normals as long as possible now . Blender has pretty nice one for example.
Unreal doesn't use simplygon - you can plug it in but the default is just a rudimentary (shite) decimator
ok so.. this is a gross oversimplification but hopefully gets the point across
The primary function of LODs is to reduce the amount of stuff on screen that your machine has to process so that it can draw frames more quickly
The main areas where having too much geometry on screen will cause your frames to take longer are working out what to draw, in calculating shadows and in putting the colours on screen
its a pretty simple thing to visualise really. if you have a 10000 triangle mesh and it fills the screen you're fine
if you zoom out and there are 1000 of these meshes in your scene the following things happen : - its the same mesh so you haven't added any significant memory cost - you have 1000* the amount of things to consider when working out what's occluded by something else - you have 1000* the amount of things to consider when casting shadows - every single triangle got a lot smaller, - - the cost of drawing a pixel to screen is directly related to the number of triangles that cover that pixel - more triangles = more time spent - - if a triangle is small enough that it can't be drawn it will be discarded but you still have to account for them in shadows and occlusion (i.e you paid for it and can't see it)
if you lod the meshes well, you don't increase the numbers by 1000* and you also don't get small triangles
There is a critical mass - i.e you won't hit any problems until you reach a certain level of scene complexity. the numbers involved will depend on your hardware capabilities but when you hit it, the effect will be significant.
Nanite attempts to solve these problems automatically so in theory negates the need for lods. In practice though you can't just turn it on and assume it's all gonna go fast because the default settings are shite and there is a significant overhead attached to running nanite in the first place.
The strategy Gnoop describes above is generally a very good idea, its something I've used extensively in production and it works extremely well.
yes, it is a nightmare, thats what i did on my previous job in a studio and thats why im asking is it really really mandatory that much of optimisation. So, every AAA character need to have 5-7 LODs when doign retopo ? maybe that would be a better question
I assume the meshes you had to lod have not been constructed with LODs in mind? Which is a pretty common issue. Auto unwrapped and relaxed UVs, less than optimal geometry, floating geometry not baked down etc. There are lots of things that can make the job of creating lods a nightmare or a breeze
Auto LOD is included in every major game engine and it can be good enough in most cases until it isn´t anymore. Like for example eyes or hair pieces which are suddenly missing. (these four examples show an active Auto LOD without the included Distance where it occurs)
Depending on when those issues pop up, you could do some educated guesses on what Method to choose. Mixing Auto LOD and having other meshes in the same scene using Manual LOD works. Doing this reduces the needed amount of work.
I haven´t looked into this yet but it might be even possible to mix AutoLOD and manual LOD depending on the ranges you set. This would drastically lower the amount of needed manual LODs.
Ive just run a series of pretty exhaustive tests with simplygon 10 vs manual lods on a load of characters (we already know it can't cope with hard surface meshes so didn't bother there)
TLDR : You'll get a better looking result doing it by hand for the same geometry cost - especially on the lowest lods Simplygon still can't give you a one size fits all solution because it's still using a % of input mesh metric to determine how much to reduce something by (which is extremely wrong).
On the other hand.. Because the SDK exists now I'm able to generate acceptable lods for over 100 pre-skinned character body parts in 10 minutes, i'm able to do it over and over again with different settings and i'm able to integrate it into our export pipeline.
It's a tradeoff - I'd rather ship with suboptimal auto lods and only get 90% of the performance than have no lods for 80% of the dev cycle and ruin any hope we have of gauging how well the game runs.
Replies
Vague answer for a vague question
thats what i did on my previous job in a studio and thats why im asking is it really really mandatory that much of optimisation.
So, every AAA character need to have 5-7 LODs when doign retopo ? maybe that would be a better question
ok so.. this is a gross oversimplification but hopefully gets the point across
The primary function of LODs is to reduce the amount of stuff on screen that your machine has to process so that it can draw frames more quickly
The main areas where having too much geometry on screen will cause your frames to take longer are working out what to draw, in calculating shadows and in putting the colours on screen
its a pretty simple thing to visualise really.
if you have a 10000 triangle mesh and it fills the screen you're fine
if you zoom out and there are 1000 of these meshes in your scene the following things happen :
- its the same mesh so you haven't added any significant memory cost
- you have 1000* the amount of things to consider when working out what's occluded by something else
- you have 1000* the amount of things to consider when casting shadows
- every single triangle got a lot smaller,
- - the cost of drawing a pixel to screen is directly related to the number of triangles that cover that pixel - more triangles = more time spent
- - if a triangle is small enough that it can't be drawn it will be discarded but you still have to account for them in shadows and occlusion (i.e you paid for it and can't see it)
if you lod the meshes well, you don't increase the numbers by 1000* and you also don't get small triangles
There is a critical mass - i.e you won't hit any problems until you reach a certain level of scene complexity. the numbers involved will depend on your hardware capabilities but when you hit it, the effect will be significant.
Nanite attempts to solve these problems automatically so in theory negates the need for lods.
In practice though you can't just turn it on and assume it's all gonna go fast because the default settings are shite and there is a significant overhead attached to running nanite in the first place.
The strategy Gnoop describes above is generally a very good idea, its something I've used extensively in production and it works extremely well.
There are lots of things that can make the job of creating lods a nightmare or a breeze
Like for example eyes or hair pieces which are suddenly missing. (these four examples show an active Auto LOD without the included Distance where it occurs)
Depending on when those issues pop up, you could do some educated guesses on what Method to choose.
Mixing Auto LOD and having other meshes in the same scene using Manual LOD works. Doing this reduces the needed amount of work.
I haven´t looked into this yet but it might be even possible to mix AutoLOD and manual LOD depending on the ranges you set. This would drastically lower the amount of needed manual LODs.
(we already know it can't cope with hard surface meshes so didn't bother there)
TLDR :
You'll get a better looking result doing it by hand for the same geometry cost - especially on the lowest lods
Simplygon still can't give you a one size fits all solution because it's still using a % of input mesh metric to determine how much to reduce something by (which is extremely wrong).
On the other hand..
Because the SDK exists now I'm able to generate acceptable lods for over 100 pre-skinned character body parts in 10 minutes, i'm able to do it over and over again with different settings and i'm able to integrate it into our export pipeline.
It's a tradeoff - I'd rather ship with suboptimal auto lods and only get 90% of the performance than have no lods for 80% of the dev cycle and ruin any hope we have of gauging how well the game runs.