Sunday, June 21, 2015

When misinformation is spread (Or a little gripe about ill recommendations for our LOD value)

In this article, I explain what LOD means, what LOD levels are and their relevance, how bad mesh is created (in relation to this aspect), and why you should not raise the value of your rendervolumeLODfactor debug setting for a normal use just because a creator, even if your favorite one, has done a bad work with their meshes. (This value is easily accessible in the Firestorm viewer.)

Some people carry themselves in this world as if they knew everything (despite of what they say). That is not my case. I'm well aware that I know nothing, Jon Snow, and whenever I see misinformation spreading, I feel conflicted. On one side, I want misinformation to stop. Why, it's a long story. On the other side, I feel like and who do you think you are to correct others?, and so, maybe too often, I let this misinformation to continue its way. Why, again, it's a long story.

Well, this time I'll bite the bullet and make some people angry.

When sculpts were the most used content creation tool in SL, there were some sculpt prims that used to break really badly (like those that were generated by tools making sculpts out of prims, Sculptcrafter for example). Instead of learning how to make things better, we handed out notecards to our customers, recommending them to raise a certain debug setting to 4.

I admit to being one of those people that were doing things wrong. At first, I didn't know that I was doing things wrong. Then I had a friend explain to me how by increasing that debug setting, we were adding more stress to our graphics cards (waves to Graham). Then I felt quite guilty, because I had no time to learn to do things right, and instead I slowed down my awfully created sculpts production. Also, I stopped recommending people to raise that value. If my sculpts were seen broken, so be it, but I was not going to knowingly suggest something that is detrimental to my customer's computers' performance.

First of all, what does LOD mean? It means Level Of Detail.

Let's think of the situation with an example: Suppose you have a (mesh) cabinet. When your camera is focusing on it, close to it, all the geometry is visible. Why would you hide geometry anyway? you may wonder, and it is a valid question.

Now, as your camera zooms away from the cabinet, and this becomes smaller on your screen: Does it make sense that your graphics card works hard in drawing all the geometry? When your camera zooms so far away that your cabinet is merely a small cube on the screen, does it make sense that your graphics card draws all the geometry no matter what?

It seems that it doesn't make sense drawing geometry that isn't going to be noticed anyway, does it?

It doesn't make sense, that's right.

For this reason, a standard practice is setting in place several "levels of detail" that will contain different definitions of the geometry, showing each one of them at a certain camera distance, depending on the size of the object. Let's explain this mouthful with an example.

Consider the following mesh models, which are the four LOD levels defined for one inworld object, a street light:


To the left, the high LOD is showing: this is the model with all the geometry. It shows when your camera is close to it. Then, the next object we see is the medium LOD: This model shows when the camera is "a bit far" from the object. As we can see, the medium LOD model is like the high LOD model, but with less geometry.

Notice this: We've zoomed away "a little bit" in Blender, and we can't see already many differences between the high and medium LOD models. But there are.

Let's zoom closer only to these two models:


Okay, differences show. Look at the top parts of the lights, for example. The model to the right on the previous picture, the medium LOD, has them simplified. The model to the left, the high LOD, shows them with all the detail. We observe this in several parts of the medium LOD. Details have been removed, some curves are less smooth. But it doesn't matter: we'll see the medium LOD from a certain distance, so that loss of detail is helping taking stress off of our graphics card, while the object shows with detail enough. The detail that was removed is detail that wouldn't be seen anyway from that distance.

Let's also take a look at the base of the objects:


The high LOD has 16 vertices in the tube section, while the medium LOD has 8 vertices. Unnoticeable from a distance, and by doing that, we've removed HALF the geometry on the lamp base. We start seeing that these "LOD models" are helping in taking stress off of our graphics cards because objects that are in the distance don't have as much geometry to draw. Well. They shouldn't.

Let's go back to our four mesh models and identify the other two LOD levels:


First model to the left is the high LOD, the model to its right is the medium LOD. If we continue going to the right, the next object we see is the low LOD: This shows when the camera is "still further" from the object. It's like the high LOD model, but basically "bare bones", a very simplified version with little geometry.

There's a fourth LOD model, the one corresponding to the lowest LOD. Usually, I make this one be just a triangle (in the SL uploader) because each triangle in this level contributes a lot to the LI (Land Impact), and normally you aren't going to see objects from that far. For example, with furniture, this LOD could show when you're outside the room or the house. You have to evaluate each case, of course (you have to be more careful with avatar attachments, and builds), but often, this LOD model will be just a triangle (per material).

These four models have to be uploaded by the creator when uploading one mesh object. Often, the creator will just use the default configurations that SL generates for the medium, low and lowest LOD. I always create the high, medium and low LOD models in Blender. Then depending on the object, I may also create the lowest LOD, or let SL make it a triangle (per material).

My recommendation is creating the LODs instead of letting SL decide. If you're the one creating them, you have absolute control about which detail is removed and how. Yes, it slows down your production time, but I think we have to take this extra time and do things right. There will be few cases where the SL uploader produces a decent enough LOD model. My full recommendation is, check what the SL uploader would do, and if you think ew, ugly or what the heck is that, then do the LOD models yourself.

Now, this happens: Some creators make amazingly detailed items. They want them having the lowest LI (Land Impact) possible. But if the object is so intricate that it has thousands of polygons (a big nope, but that would be for another day), the (lazy) solution they've found is making their LOD models like this:


Yes, that's it: there's detail (all the detail) only for the high LOD. From the medium LOD to the lowest, all you have is one triangle (per material). This causes that as soon as the medium LOD is shown, their objects collapse immediately. The medium LOD shows in a relatively short distance (smaller, as the object is smaller), so this makes for pretty objects that are kind of useless, since they're collapsed into triangles unless your camera is right next to them.

What do these creators do?

They tell you to raise the value of the rendervolumeLODfactor from the default value (1.125 in the official viewer, 2 in Firestorm), to 4.

What does this cause?

This causes for the LOD models showing at farther distances. If you set this value to 4, the medium LOD will show when the camera is farther than the distance that would make it show, if the value is set to 2. That way, their objects don't collapse that close. Sounds nice, does it?

Well, it isn't.

In other words: By raising that value, you're forcing your graphics cards to draw more detail than needed, of those objects that are far. You may need this, on occasion (like if you're taking a photo of a whole sim, to avoid collapsed windows and doors in the builds), but for daily use you do not need this at all. If you increase this value, you're adding unneeded stress to your graphics card. If you don't have a top-of-the-top computer, you are going to notice that the FPS (Frames Per Second) lower, and at times, that's the difference from your ability to type in the local chat/IM windows, from seeing how the letters drag until they form the words you were typing. Even if you have a top-of-the-top computer, why should it be doing more work than needed? Why using power process that could be used in other tasks, or simply, saved?

If a creator tells you that you should raise rendervolumeLODfactor to 4, in order to enjoy their creations... The answer is, no. You learn to do your job. You don't demand more resources from my computer, resources that shouldn't be taken if you did things right.

If you think I'm alone in these thoughts, then read this post, from Ed Merryman. Yes, one of the most visible heads of the Firestorm Viewer project. According to his opinion, I can't say he's exactly happy either about those ill recommendations. He also explains why.

If you find this post useful, please share the link with your friends and fellow creators.

Have a great day!

4 comments:

  1. Excellent post, Auryn! I wish all creators were as thoughtful as you are!

    ReplyDelete
  2. Hmm, not sure if my comment got posted, but my main question is what is the consequence of overworking your graphics card as a result of this kind of practice (I'm being serious, I actually don't know.) :)

    ReplyDelete
    Replies
    1. It contributes to overheating, possible damages from this, and eventually, either the graphics card or the power supply may end up burning. (Not as in something spectacular with fire, but burned anyway.) Your system could also freeze for a while when the graphics card (or the CPU for that matter) are too busy. That freezing is sign enough to think "okay, slow down". Chances increase in summer because of the temperature. More work = Temperature raises, and then summer adds.

      This happens more in old computers, but I don't assume that everybody has a top-of-the-top computer. In fact, not everybody, not many, have a machine that could endure that much hard work - for nothing useful.

      Delete
  3. i honestly didn't actually think about this, just automatically changed my LOD factor to 4 because i like to see stuff. i have a good 'puter...but not the best, i prolly have suffered a bit of drag without realizing it
    thank you for posting this, i'll keep the link and share it around (maybe to some of those recommending i change my LOD factor)
    and i'll change mine back to the FS recommended level when i'm not taking pics.

    ReplyDelete