This guide and included attachments are intended for people who’ve managed to make their first couple of mesh models and successfully uploaded them into Second Life (or OpenSim). You already know how to make UV:s and you know how Material slots work in Blender (or the equivalent in another 3D authoring program) and how the slots translate into “Sides” or “Faces” in Second Life. You’ve perhaps fiddled with the uploader’s LOD settings.
I’ll touch on a few different things in this tutorial that all has to do with LOD models or are related to them. But this is an introduction, not a complete in-depth dive into the subject. What practices I bring up are not necessarily the best in all cases.
I don’t go into how to create models, and my examples are not necessarily the best, my emphasis is on understanding LOD models, and some of the things to keep in mind when creating them and uploading them.
I’m using the most current version of Firestorm and Blender 5.0.1, if you’re using another viewer, or version of Blender or different 3D authoring program entirely, your experience might be slightly different.
The use of LOD models is an optimization strategy where the intention is to make the renderer (your viewer, and the hardware driving it) work less on things that won’t be seen anyway. It’s a bit like with lossy digital music files where sounds are removed that can’t be heard by humans anyway, while retaining as much of the experience intact as possible.
As your camera gets farther and farther away from a mesh model in a viewport, details get smaller and smaller, approaching the size of just a couple of pixels and then no pixels at all. It is wasteful for your hardware to render details that can’t be seen anyway, so we’ll make the hardware work less by replacing the mesh with simpler and simpler models as it gets smaller and smaller on the screen, while trying to make it not so noticeable. We want a good experience both in performance and visually!
In Second Life we have four levels that we can make meshes for, or have generated automatically by the viewer upon upload:
The Second Life viewers can generate LOD models on the fly, and you can set various settings to affect the outcome of it, but you have very little control over how it will end up. See the comparison table below, or upload the attached GLB files with the provided LOD models, and do another upload using the various settings for generating LOD models, and see how they turn out inworld at various distances.
By creating your own LOD models, you decide exactly how they should be like, there’s no random-like destruction of your model as you can see down below.
You may use the files for your own learning purposes, but I ask that you don’t give it away other than as a part of this complete package. I also ask you not to sell any part of this package, be it inworld or outside of virtual worlds. I give it away for free for people to learn from it.
When creating LOD models, the general guideline is to attempt to halve the geometry for each level. If you start off with 2000 triangles for LOD3, that means LOD2 should be about 1000, then half again (500) for LOD1 and 250 for LOD0. This is not a hard rule in any way but gives you an idea about what to aim for.
The door model I’ve created is 1068 tris in LOD3, followed by 336, 56, and 1 for the rest of the LOD models.
A strategy to use is to get rid of things that can barely be seen at all at a distance and simplify the mesh as you go. Get rid of as much as possible of the small and narrow geometry. Test often inworld until you develop a feel for it.
All your LOD models share the same UV model with your main mesh model (LOD3). They must also share the same set of Materials, whether or not they’re assigned to any faces or not. Look at my LOD0 model as an example, it doesn’t have the second material assigned to any faces, but it is listed in among the material slots.
If you only remove bits from your model to make a lower LOD model, you’ll be just fine without touching the UV:s, but often you’ll need to make bigger changes that requires you to make UV changes or even unwrapping again. When you’ve done so, you’ll want to move your UV islands or faces to be approximately where your original faces are, so that they can take on the same parts of the texture. Remember that your models are seen from a distance, you don’t typically need to do this perfectly (test inworld!).
If you’re using a trimsheet or atlas texturing technique, this is way easier to do than if you’ve baked textures. When you’ve done the UV:s, it’s a good idea to offset them to a different tile to stay organized, for example like I’ve done.
For the uploader to recognize your LOD models, as well as the physics model if you have one, your objects and meshes need to be named exactly like the original (LOD3) model, with the added relevant suffix, be careful with unintended spaces and cases. You may have multiple LODx models in one exported file, but for the file to be automatically picked up by the uploader the filename need to be following the same rules as the objects themselves. A note on mesh naming, at the time of writing it’s important that both object name (yellow triangle) and mesh name (green icon) are identical.
| Filenames | ||||
|---|---|---|---|---|
MyStuff.glb |
MyStuff_LOD2.glb |
MyStuff_LOD1.glb |
MyStuff_LOD0.glb |
MyStuff_PHYS.glb |
| Object and Mesh names | ||||
|---|---|---|---|---|
Book
|
Book_LOD2
|
Book_LOD1
|
Book_LOD0
|
Book_PHYS
|
Table
|
Table_LOD2
|
Table_LOD1
|
Table_LOD0
|
Table_PHYS
|
The bounding box for the LOD models as well as for the Physics model need to be identical to avoid stretching or squishing. A smaller LOD model will stretch to fit the LOD3 model’s bounding box. Note how I did on the LOD1 model. I had removed the handle and the latch bolt and needed to compensate for it. I did so by extruding faces at the bottom of the door and made them invisible by turning their normal direction into the floor.
There is a single set of materials, but two Materials assigned to the mesh. Why? I’ve assigned a separate material slot to the glass, because that needs to be set to Alpha Blend and Double-sided inworld, while the rest of the door should be Opaque. In SL Alpha Blend can be troublesome sometimes, so I’ve found this to be a good thing to do. If you choose to upload the materials, make a copy of the Material Asset and set them like this:
If you run into trouble, check for these things: