Level of detail
From Valve Developer Community
LODs are important.
Automating the process
Regarding automating the process... Don’t.
Using your favorite software’s reduce poly command isn’t going to cut it. If you want good LODs, it takes time and the human touch. There may be some tools out there that do it right, but I haven’t come across them yet so I’d like to talk about the old fashioned and more human approach.
The following image is an example of a bad LOD. The thing popped right out of a modeling package. Only took one button press. It looks pitiful.
Look at it. Don’t avert your eyes. Sad crumpled up LOD. Half the faces, one tenth the awesome. Not good.
When we create LODs we try to keep some things consistent between the parent and children geometry. These things are: Vertex Positions, Normals, UVs, Weighting, and Tangents.
If those things are shared between an object and it’s child – then the memory footprint is lower. That’s good.
I’ll give you an really easy example and then walk through applying this to the Sniper Rifle above.
Notice how none of the LOD have vertices that don’t match the predecessors? That’s because I only removed edges and vertices from the model. I never collapsed edges, or removed UVs on the perimeter of a UV shell.
The normals were also preserved because I locked the edges. This is the equivalent of not recreating smoothing groups or changing face/vert normals. Different applications handle this wildly differently, but it’s all the same in the end – maintain those normals.
From a parent to an LOD, these elements almost never match up perfectly. That’s ok. But they need to match as close as possible to keep the object cheap.
We understand that collapsing edges is sometimes better for the shape. It’s fine to do that when you need to preserve the integrity of the object. When you collapse edges, the models vertices won’t line up and thus will add memory. Be conservative and thoughtful about those choices.
How many LODs should you create and how low should you go?
Try to half the object on each iteration. The larger your initial object, the more LODs you’ll want (or perhaps just the higher the reduction in each LOD).
Hats or Miscs are fine with one or two.
Weapons or high poly hats/miscs should have two or three.
Once an item is around 500 triangles, you can stop. That’s pretty low.
Make sure to do your LODs after you’ve completed the art. Any changes on the high level need to be reflected in the LODs, so it’s not smart to do them before you’ve ironed out your design.
Good places to remove detail
Here is a list of easy offenders. I’m using the sniper rifle as an example and will walk through it.
Really small details
These are small. They will be missed, but not forgotten. It’s best when these aren’t connected to the mesh. You can easily delete them and forget them. Wait, that’s right. Don’t ever forget them. But you can delete them.
32 triangles. Gone in the blink of an eye.
End caps on cylinders
These could have been deleted in the first place, but while I’m talking about reduction, let’s include them for elimination.
Reducing Edges on Cylinders
This is easy and works best on cylinders with powers of 2. (16 > 8 > 4) Bonus knowledge: build your objects with this sorts of cylinders and you’ll be happier in the end.
Concave areas or insets
These are good to eliminate because they don’t alter the silhouettes in some cases (or do little to alter a silhouette at distance)
- Note that on this stalk, I added a few verts. This is a small price to pay for the smiting of one’s enemies.
At this point, I’ve take the object from 7,048 triangles to 5.434 triangles without even making any tough choices.
This will usually affect the silhouette of an item if it’s been spent well in the first place, but it’s also a necessary evil of poly reduction / LOD’ing to remove these.
Remove them and don’t blink. If you blink, the polys will know you’re scared. And you’re not scared. You’re making LODs like a real Mann.
Try to remove edges that don’t affect the mass or silhouette too much. Every vert/edge you eliminate will change the object, but corners, high points, and borders are usually unsafe to remove (both for UVs and for shape). If you’ve built the object thoughtfully, it should be easy to find subdivisions that you can remove without ruining the look.
If you’ve UV’ed well, these should come out pretty easily. The will change the lighting indeed, but some of them have got to come out of the LODs.
Bevels, we were sad to see you go but no man is an island. We’re down to about 4.5k. Only 1,000 Triangles to go.
When I made these screws, I figured they’d be deleted out of the LOD, but In order to keep some of the detail I’m going to drop the edges out and then use a reduced version of the faces in the next LOD. Judge this on a case by case basis. To me, currently, they look like 224 triangles I don’t need.
In summation for the first LOD
I flew around the model a few more time and plucked the low hanging fruit. Now I have the first LOD completed at 3,494 triangles. Down from 7,048. This is acceptable. I’ll now rename the object with a “_lod_01” on the end of it.
Additional Levels of Detail
For the next LOD, repeat the process but be twice as aggressive as you were before. This should yield roughly half the polys (or less if you’re particularly cut-throat). In the second LOD, things like circles become diamonds:
In this particular case, if I’d have painted those screws into the texture, I could have eliminated the cards altogether, but I wanted more resolution for them, so they were separate.
Say goodbye to round things in your second LOD. "Goodbye round things."
On this LOD I’m going to go ahead and collapse some edges. This will create some new verts, but it’s negligible at this point. You’ll find that once you get to the lowest levels of detail, you’ll be collapsing edges or removing faces in order to get the vertex count down. You’ll have to be very aggressive on your last LOD, but if you’ve set your distances well, it should look ok.
It’s an art form, so methodology will differ from artist to artist. Don’t worry about it being perfect, but do worry about it being adequate and good.
Here are the objects at distance to show you just how little difference is noticed (unless you're a damned robot, in which case, as stated before - you suck at LOD'ing. It takes a real Mann to make good LODs.)
Poly count: 6,970 > 3,428 > 1,375 > 499
LOD distances for this one ended up being set at 14, 20, and finally 35.