Jump to content

[Brainstorming] Speaking and rethinking of LODs again...


Phoenix Steampunk
 Share

You are about to reply to a thread that has been inactive for 4637 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Now that the first creators that didn't take part in the beta testing got their hands on the mesh project and started to work with what LL has been working on for so long, I would like to take the chance to gather some feedback on the LOD system in a more general way. As I think some finetuning and a lil brainstorming might help to ease the streaming costs some more now that we the creators and LL finally got hands on some more valuable numbers of assets and can start to evaluate them in a more realistic environment than sandbox testing.

First of all I do wanna speak about the LOD switches in general. I do think that LL stayed with the 4 LOD switches ist pretty much a tribute to the sculpt history they came from, prims that need to be high poly for their cutting ability as well as parts of SL being an open world environment in general. With the sculpts mainly focused on rather organic shapes as their general purpose at first to go with 4 LOD levels was for sure the right way to go. As well as it was for the Prims. The question is if the 4 LOD level approach is still the right one for meshes or if there would be a way to find another way, that would ease up the streaming costs and to a certain degree the render costs.

 

Let me start with some arguments of mine and finish with an idea regarding LODs that might not be that hard to be implemented in the existing mesh upload and display process.

Pretty much every designer that is used to do 3D models and focuses on static geometry starts with a lowpoly model, does the UV layout and uprezes the polycount where he finds it appropriate and it is needed to support the mesh at a closer distance. Only in some really rare cases a designer even thinks about doing another midpoly mesh, not to speak about a 4th LOD, cause of the extra work it would need as well as the overall texture blurring that comes with to many LOD levels. Speaking about static geometry in general there hardly is any noticeable difference for the eye beyond the 64m range between a lowpoly and a highpoly mesh, that couldn't be compensated by the texture. Which is somewhat different for organic and especially rigged models. Given the weighting of rigged meshes most just stick with 1 LOD and well one of the main purposes if not the main for rigged meshes will be avatars, or avatar attachments and from the designer point of view at least I want them to be highpoly all the time just to support the overall renderscene eyecandy. Sure LL is still missing normal or bumpmaping to support lowpoly models but I think this kind of feature is something that we might see in the future.

Given what just has been said, leaves me with the general idea that there hardly will be any use of 4 different LOD levels by designers. Yet the model importer makes people think it actually would be a good idea to do so. To leave especially unexperience users with that impression isn't a really smart idea. We all know that the LOD generator is by far away from producing any good results at all. This and the simple fact that using 4 LODs just pushes the streaming as well as render costs in a way that is hardly really needed, given my statements above.

Some might argue, wait but I wand still take advantage of all the 4 LODs to ease up my cost. There is nothing wrong with it at all! Actually every designer that takes the extra time it needs to support 4 LOD meshes should get this advantage just to value their hard work. But thats not the direction I am looking at. I see the customers in first place and how a lil change in the way LODs are used and streamed might help them.

Let me give you a lil example. Furniture for example quite highres when a designer wants to do achieve a lot of detail and some might just wanna do one LOD to get the most out of the UV layout and their textures. Furniture being placed in house environments it comes natural that in most cases it has a very limited drawing distance. Especially for this kind of assets the importer doesn't really reflect the use of the asset given its expected drawing range and environment use.

So far if you wanna use such an asset you only support a high poly mesh but none of the lower LODs. Which works and I really don't care about the upload costs but what the real problem is that with doing it this way, you also force the object to be rendered almost all across the sim, when there is just no need for it, given its very limited drawing distance. Which initially causes very high streaming costs that aren't really needed.

 

Lemme come to some kind of conclusion and a feature request idea, as I am not really sure if it might be planed already (might be as there at least is the models representation dropdown, but  so far it doesn't seem to make any difference at all).

In general to expect 4 LODs for meshes is the wrong way of thinking about them and inexperienced users shouldn't be tought nor shown that it would be a good one because it will just cause higher streaming cost than normal. As a creator I would like to have the ability to actually pinpoint the LOD to a fixed level that matches the expected drawing distance of my asset as well as to block the usage of LODs and that reflects the streaming and overall rendering costs in a much more appropriate way than it is been done so far. Of course such a "sacrifice" would be expected to have a PE bonus, especially when limiting the drawing distance by blocking higher LOD levels to be streamed. It doesn't really have to be while uploading, but some kind of extra dropdown menu or checkboxes that allow the builders to pinpoint the used assets LOD to reflect its environmental usage would be really nice and when chosen wisely something everyone could benefit from.

Link to comment
Share on other sites

Hi.

I think (if i understood all your points correctly), that SH-2211 covers most of what you propose:

If it will be implemented as i proposed in the jira, then you indeed can just use one LOD, let it be reused for all other LOD and get it streamed only once, hence you will get a reduction of streaming weight. But still as you mentioned in your post the render costs will be high and the PE also will be high if you follow that approach (except if your meshes are already low poly in the High LOD of course). Right now you can fake the visual behaviour by supplying the same mesh for different LOD's.

Regarding rendering of objects with only one (high) LOD: As far as i understand occluded objects will NOT be rendered. So if your furniture is inside a house, and your camera is outside (and you are not looking into the room through a window) then your furniture will NOT be rendered and does not add to the rendering amount in your computer.

Regarding workflow: I find myself often working from low poly to high poly as your describe. But then i optimize from high poly back to low poly. I do that because i want to preserve shape as good as i can. I can not do this during the modelling step, because the final model shape is only defined after i have finished the modelling.

Regarding LOD: I tend to create one optimized High LOD and reuse that on the Medium LOD because i found that most details added on the High LOD create visible jumps during the transition to Medium LOD. These visual jumps seem to be less obvious when adding detail into textures instead of the model. Then i create a very drastically reduced Low LOD and try to get away with a billboard or an extremly blocky Lowest LOD. that works well for me in many cases.

Link to comment
Share on other sites

With games I've worked with previously, the number of LODs varied as to what item it was. Clothing and hair for example required 4 LODs as the meshes are usually organic. Objects however only required 2 LODs. High and low detailed. The high detailed was obviously the mesh at it's best, whereas the low poly was usually just a few boxes, cylinders, whatever to uggest the mroe detailed shape. And a lot of the details on the low LOD were visible via the textures. So to conclude really I also think 4 LODs is a bit much, for standard furniture / decorative meshes anyway.

I liked your idea of choosing from which draw distance different LODs appear, and also it could be a feature that the individual creator can choose how many LODs their object has (minimum 2, though). They'd have to use initiative, but any experienced mesher would probably have this :) And unexperiences meshers could refer to perhaps a wiki article or something written on the subject, stating which number of LODs would be required for different types of meshes. A car may require 3 or 4 LODs for maximum performance, whereas a simple table could possibly only require 2.

Another idea would be for the uploader to determine how many LODs an object should have based on the number of polygons / vertices it has.

Link to comment
Share on other sites

I've done a bunch of experimentation now and what I like doing best (its all personal taste of creator probably) is just optimizing the model so I have minimal PE anyway, then just keep LOD self-consistent from High to Low. If PE is 1 (or less) why try to cut it lower with detail removal by distance?

I find it really spoils immersion if you use different models for each LOD as the human eye is very good at picking up subtle changes in shape. Myself I find this effect really disconcerting!

In reality objects do not shift and transmute as you move away from them at all (exception is things made of jelly .... or ghosts! :smileyvery-happy: ) so I try to avoid this in my models, so far with complete success. I've not had a model yet with a PE I'm unhappy with, thus I don't cut any corners with LOD.

Link to comment
Share on other sites


Gaia Clary wrote:

I think (if i understood all your points correctly), that
covers most of what you propose:


Yep. As I mentioned it with this thread I just wanna gather some feedback about LOD usage in general and if the mesh streaming could be optimized in some ways.


Regarding rendering of objects with only one (high) LOD: As far as i understand occluded objects will NOT be rendered. So if your furniture is inside a house, and your camera is outside (and you are not looking into the room through a window) then your furniture will NOT be rendered and does not add to the rendering amount in your computer.

My concern is not the rendering cost, but the streaming costs. As far as I understood it as soon as clients are within theoretical drawing distance and face it the assets they will be streamed for precaching purposes anyway.

As for the furniture example and the jira you mentioned this can be circumvented by adding a lowpolymesh "template" that is enough to store all the needed materials to just ease up the PE, but nonetheless those "templates" will be streamed and displayed (when not occluded) without an actually need for it. It would be much smarter to just block the display of those "template" LODs when the creator or the builder already knows they only need given drawing range. This doesn't have to be done in the importer but a checkbox like "force LOD but sacrifice display distance" somewhere in the build menu would be nice. So builders could decide themselves whether they want such a feature or not, just to help them controlling their costs in a more flexible way.

 


Drongle McMahon wrote:

You might also find
interesting in this context.

Must have missed that one, watched :)

 

@Made: I do get your point but really I talking about optimization. Slicing the corner of a lowpoly just to make it look a lil bit more round at close range, isn't noticable. But more important this is about giving us but formost the builders that gotta use the assets and deal with the PE some more flexible control over the usage of LODs

 


warehousefifteendesigns wrote:

I liked your idea of choosing from which draw distance different LODs appear, and also it could be a feature that the individual creator can choose how many LODs their object has (minimum 2, though). They'd have to use initiative, but any experienced mesher would probably have this
:)
And unexperiences meshers could refer to perhaps a wiki article or something written on the subject, stating which number of LODs would be required for different types of meshes. A car may require 3 or 4 LODs for maximum performance, whereas a simple table could possibly only require 2.


Yeah normally game engines got other ways to deal with the optimization of how and even when LODs appear, but they don't have to deal with streaming costs most of the time since everything is pretty much precached. We pretty much stuck with a fix LOD system and I don't realy like that idea.





Link to comment
Share on other sites

Workflow?

/me drops on floor after a flood of words and links tries to make it out into the keyboard and on the screen.

 

Does one LOD only (as proposed by Ms. Clary) mean a user can not use the sliders or debug settings to lower the LOD of that object? I bet that will not fly at all lol. But, I understand the streaming time would be far more desirable for 95% of users!

 

Link to comment
Share on other sites


Poenald Palen wrote:

Does one LOD only (as proposed by Ms. Clary) mean a user can not use the sliders or debug settings to lower the LOD of that object? I bet that will not fly at all lol. But, I understand the streaming time would be far more desirable for 95% of users!

For clarification: I did not propose to use only one LOD, but i said if you WANT only one LOD then my proposal would allow to reduce the streaming costs because only one datastructure would be transfered to the client.

And yes, if you only provide one LOD, then the object will be rendered in its full beautiness from anywhere in the viewing distance (even if it has been collapsed to one pixel only on your screen) You can get this to happen today if you just provide the same mesh for all LOD during import.

But well, you are right... We should look on LOD in terms of "User adjusted resource settings". It makes a whole lot of sense to supply more LOD, such that users with lower performance computers still can have a decent look&feel. While users with high performing computers might want to set their RenderVolumeLODFactor (or object quality in the graphics setings) to a high value and thus not even see any LOD changes at all...

Link to comment
Share on other sites


Gaia Clary wrote:


Poenald Palen wrote:

Does one LOD only (as proposed by Ms. Clary) mean a user can not use the sliders or debug settings to lower the LOD of that object? I bet that will not fly at all lol. But, I understand the streaming time would be far more desirable for 95% of users!

For clarification: I did not propose to use only one LOD, but i said if you WANT only one LOD then my proposal would allow to reduce the streaming costs because only one datastructure would be transfered to the client.

And yes, if you only provide one LOD, then the object will be rendered in its full beautiness from anywhere in the viewing distance (even if it has been collapsed to one pixel only on your screen) You can get this to happen today if you just provide the same mesh for all LOD during import.

But well, you are right... We should look on LOD in terms of "User adjusted resource settings". It makes a whole lot of sense to supply more LOD, such that users with lower performance computers still can have a decent look&feel. While users with high performing computers might want to set their RenderVolumeLODFactor (or object quality in the graphics setings) to a high value and thus not even see any LOD changes at all...

Oh, we can upload full LOD on ALL levels right now! Oh, you are very right then! This is so silly lol. IF theyallow this, they have no excuse to change like half a dozen lines of code and allow only one to take the place...or at least make a note servers side to send one if they are all the same model. I mean, they can sort of tell by KB of each level, and maybe give a warning and such....servers side fixes any legacy ones already uploaded as well. Unless the odd wierd thing where a person uploads 4 totally different meshes with the same kb and different shapes. I mean...I can't imagine why but then again, it could animate an object as a person gets closer? sort of mechincal, but might work for heavily guided mapped out experiences where a player or interactor would not wish to go back or need to?

Link to comment
Share on other sites


Gaia Clary wrote:


Poenald Palen wrote:

Does one LOD only (as proposed by Ms. Clary) mean a user can not use the sliders or debug settings to lower the LOD of that object? I bet that will not fly at all lol. But, I understand the streaming time would be far more desirable for 95% of users!

But well, you are right... We should look on LOD in terms of "User adjusted resource settings". It makes a whole lot of sense to supply more LOD, such that users with lower performance computers still can have a decent look&feel. While users with high performing computers might want to set their RenderVolumeLODFactor (or object quality in the graphics setings) to a high value and thus not even see any LOD changes at all...

Just to get me right, i am talking about optimized meshes and not meshes that need to be optimized, when I am talking about changed to the LODs in the way I am suggesting them. I think for users that didn't took into the LOD related issue that comes with meshes it can be kinda confusing cause they might mistake the way LODs are handled by designers for meshes are not how or why sculpt LODs were used and introduced.

For example if you build a house on one side of the sim you don't have to show all the house at once but just its front and only once the user is close enough that he expected to see everything you go to the full house mesh.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 4637 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...