Jump to content

Why is there so much high-poly mesh in SL?


WingsOfPurity
 Share

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

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

Recommended Posts

54 minutes ago, ChinRey said:

Yes but realistically, there is no quick solution to SL's performance issues. No matter what is done and how, it will take years before we see any significant improvements.

So the choice is break everything at once with no quick fix or don't break everything but wean people off bad LOD meshes with offers of better content, also known as no quick fix?  Hard to see the advantage of break everything at once really.

Link to comment
Share on other sites

31 minutes ago, Love Zhaoying said:

I find that with no other avatars but me, and no mesh (except my avatar), I have no performance issues on my region.

To be fair, I don't have much lag even at most events either these days but then I was fortunate enough to be able to afford a high end PC and that makes more difference than I ever would have realised.

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

23 minutes ago, Gabriele Graves said:

To be fair, I don't have much lag even at most events either these days but then I was fortunate enough to be able to afford a high end PC and that makes more difference than I ever would have realised.

Yep, even a relatively high end PC from 6-7 years ago does fine most of the time.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Gabriele Graves said:

To be fair, I don't have much lag even at most events either these days but then I was fortunate enough to be able to afford a high end PC and that makes more difference than I ever would have realised.

GPU RAM seems to be a major bottleneck due to all the textures... I upgraded from 1GB GPU RAM to 4GB which proofed much of a LAG BE GONE cure... funny enough as all the advanced graphics happen on my CPU, FS still decides on your GPU alone... My GPU makes FS estimate I should run mid level graphics but having a powerful CPU makes high level acceptable for me...

Edited by Fionalein
  • Thanks 2
Link to comment
Share on other sites

As in, can you move around and do some kind of activity or do you just stand in one spot?

I know a few groups that actually have to resort to disabling entry in the region after an event has started because the region and clients have a small stroke everytime someone TPs in and they are trying to make the competition they are running as fair as possible.

SL has so much more potential than being a glorified chatroom.

Link to comment
Share on other sites

4 minutes ago, Kyrah Abattoir said:

As in, can you move around and do some kind of activity or do you just stand in one spot?

I know a few groups that actually have to resort to disabling entry in the region after an event has started because the region and clients have a small stroke everytime someone TPs in and they are trying to make the competition they are running as fair as possible.

SL has so much more potential than being a glorified chatroom.

I find that even when an event is full (usually about 44 people - most seem to limit to 40 and then you get the premium only slots), I am usually still able to move around much better than most of those around me.  I see them stuck in their walking anims and not getting anywhere whilst I am able to move around freely.  Don't get me wrong, walking is a little slower and I do still get the odd rubber-banding but overall it doesn't stop me walking around the event as I choose.

Link to comment
Share on other sites

That's great, i have a good computer and despite that my client freezes completely on occasion. It's great that you have a good experience but even today, 4 years after the introduction of shadows and materials, a sizeable chunk of the SL population is still unable to benefit from these features, despite being standard in any video game out there (you can't even find a game anymore where you can 'turn off' normal mapping).

Link to comment
Share on other sites

3 hours ago, Gabriele Graves said:

 I see them stuck in their walking anims and not getting anywhere...

That's probably your computer struggling, although it may also be the server or the connection that is overloaded. It certainly has nothing to do with how the computers of other people in the scene perform. Animations are always client side so anything you see comes from your viewer. How others see the scene may well be completely different.

  • Like 1
Link to comment
Share on other sites

1 hour ago, ChinRey said:

That's probably your computer struggling, although it may also be the server or the connection that is overloaded. It certainly has nothing to do with how the computers of other people in the scene perform. Animations are always client side so anything you see comes from your viewer. How others see the scene may well be completely different.

Animations showing are client side, animation playing however is a server side action - if the server is busy the AO's won't update.

Link to comment
Share on other sites

2 hours ago, Fionalein said:

Animations showing are client side, animation playing however is a server side action - if the server is busy the AO's won't update.

Animations are played by the client. But they have to be downloaded first of course and that's why they can sometimes be affected by server side issues.

Edited by ChinRey
Link to comment
Share on other sites

2 hours ago, Fionalein said:

Animations showing are client side, animation playing however is a server side action - if the server is busy the AO's won't update.

You stand or sit, or press a cursor key...

Your viewer sends a "changed animation state" notice to the sim server, the sim server tells everyone elses viewer what your animation state is.

If you are using a client side viewer ao, your viewer tells the server what anim you want played for that anim state, if you are using a scripted ao hud, the server gets the desired anim id from the script, either way it then tells the other peoples viewers what anim id to download from the CDN and play.

Generally, if other peoples animations look jerky, it's YOUR viewer that's lagging.


 

  • Thanks 2
Link to comment
Share on other sites

48 minutes ago, Klytyna said:

Generally, if other peoples animations look jerky, it's YOUR viewer that's lagging.

I haven't had it confirmed but I've been told the animations are stored in the VRAM. If that is the case, texture overload may well affect animations negatively.

It's also interesting that Gabriele tells that her computer plays her own avatar's aniamtions even when it can't handle other avatars. That must mean that your viewer gives priority to your animations. That might be worth keeping in mind.

  • Thanks 1
Link to comment
Share on other sites

Sorry, I should have been more accuracte in my description of "stuck".  What I mean is that the avatars are animating just fine but they are walking on the spot, getting nowhere.  I am pretty sure they are trying to walk around because periodically they will stop walking, start their stand animation, change direction (as if that will somehow help) and try to start walking again.  Sometimes they manage to move forward a bit but not much.

Question for those that know.  My graphics card has 11Gb video ram (Nvidia GTX 1080 TI), I use FS and the most I can set it to is 2Gb.  Why can it not be set higher?

Edited by Gabriele Graves
Poor word selection.
Link to comment
Share on other sites

6 hours ago, Gabriele Graves said:

Sorry, I should have been more accuracte in my description of "stuck".  What I mean is that the avatars are animating just fine but they are walking on the spot, getting nowhere.  I am pretty sure they are trying to walk around because periodically they will stop walking, start their stand animation, change direction (as if that will somehow help) and try to start walking again.  Sometimes they manage to move forward a bit but not much.

Question for those that know.  My graphics card has 11Gb video ram (Nvidia GTX 1080 TI), I use FS and the most I can set it to is 2Gb.  Why can it not be set higher?

Probably because downloading all meshes at high resolution will choke both the download link and the time spent in the main thread loading textures into the graphics card. The latter is probably the real limitation. The scarcest resource in the viewer is almost always main thread time. That's what limits FPS.

  • Thanks 2
Link to comment
Share on other sites

7 hours ago, Gabriele Graves said:

Question for those that know.  My graphics card has 11Gb video ram (Nvidia GTX 1080 TI), I use FS and the most I can set it to is 2Gb.  Why can it not be set higher?

The Official SL Inferiority Viewer limits at 512 mb... Allegedly this is because attempts to increse the max, led to the viewer crashing and burning...

FS apparently solved this problem, at least partially,but even so...

In addition you would NEVER want to assign all the vram on your card to any single application, as the OS needs to use it too, as do other apps.

42 minutes ago, animats said:

Probably because downloading all meshes at high resolution will choke both the download link and the time spent in the main thread loading textures into the graphics card. The latter is probably the real limitation.

Not really, no...
 

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

As some of you know, I've been working on low-LOD impostor models. Here's another step in that direction.

swingarmimpostor10-1_002.jpg.ba74a2e2f1967937d8d467a714a85f21.jpg

Swing arm from motorcycle. 2523 triangles. About 1 meter in size. This supports the rear wheel.

swingarmimpostor10-1_003.jpg.f8137fa7922381985689966d63266c61.jpg

Side view. You'd normally see it only from the side when installed on a bike. The wheel hub goes inside that big ring at the left, so that hole is not visible.

swingarmimpostor10-1_004.jpg.0d58954e49d5a296d23d16b052efb2e7.jpg

Distant view - 19m away.

swingarmimpostor10-1_005.jpg.c7ceaa5c40d642770ba57e13568651a7.jpg

Distant view - 20m away. See the difference?

swingarmimpostor10-1_007.jpg.ec4ba8db8eea62d20adc4d46d478ccdd.jpg

Close-up of the low-LOD model. Beyond 20m, it's a 2-triangle one side flat impostor. That's what's in the previous picture.

Land impact: 0.5.

This is a useful trick. It's all done in Blender. I rendered the model from the side, in Blender, with an orthographic projection. Then I put a box around the model, and removed all but the left and right faces. The rendered image was textured onto the side face of the box.

Uploaded the main model, which isn't even polygon reduced, into the High and Medium resolutions. The impostor is loaded into Low and Lowest. The end result is very low land impact. I can link two of these and still have only 1 LI.  It looks good at distance - much better than what "Generate" produces.

From a LOD perspective, this is equivalent to zeroing out the Low and Lowest LOD models. But it looks much better.

Notes:

  • This isn't fully general. You have to plan your impostor surfaces for this to look good. Looks promising for bikes and non see through rectangular buildings. Irregular objects, not so much. Those need rotating billboard impostors, which would require support from LL.
  • It's a pain to do by hand. Too much careful alignment is needed. This needs a Blender script to automate the process. Something else to write. With automation, it should be quick. Create an impostor box, remove the faces you don't want generated, and run the impostor generator to make the impostor.
  • Bug VWR-27873 causes problems. You have to have the same list of materials for the main model and the impostor. And you have to actually use them in each model. It's not enough to merely have them in Blender's materials list. Nor can the low-LOD model use just a subset. I tried. So you have to create tiny dummy faces to use the impostor texture in the main model, and the main model's materials in the impostor. Both are a headache. Broken since 2011. Is there a better workaround for this?
  • Color matching is a problem. Impostors get lit twice, once when they are created and once when they are displayed. This makes them dim. Remapping the intensity value from 0 to 1 into the 0.5 to 1 range sort of works. For best results, the impostor should have the normal and specular maps from the Blender render.

 

 

 

Edited by animats
Remove extra image.
  • Like 3
Link to comment
Share on other sites

20 hours ago, animats said:

As some of you know, I've been working on low-LOD impostor models. Here's another step in that direction.

Excellent, thats a very useful technique!  I never use the autogenerated LOD, unless im just testing something else and lod is irrelevant.

You can make that one tri instead of two, or did you already make that two sided so its only one tri each side?

Edit: no, you say its one sided.  So yea, you can put that image within one tri, no need for two unless you want a bend or add the reverse side. Or... the spot in your uv the image is is very tight, you can take a triangle shape into account in your uv layout though to keep the points clear of nearby stuff.  Probably not a big deal on a one off thing, but imagine all the lod imposters being half the tri's?  Less is better, especially if there are many in a scene.

20 hours ago, animats said:

rotating billboard impostors, which would require support from LL.

That would be sweet, do you think LL would support that?

Edited by Macrocosm Draegonne
Link to comment
Share on other sites

On 10/25/2018 at 1:55 AM, animats said:

Bug VWR-27873 causes problems. You have to have the same list of materials for the main model and the impostor. And you have to actually use them in each model. It's not enough to merely have them in Blender's materials list. Nor can the low-LOD model use just a subset. I tried. So you have to create tiny dummy faces to use the impostor texture in the main model, and the main model's materials in the impostor. Both are a headache. Broken since 2011. Is there a better workaround for this?

Put your imposter texture in the main material if you can, small and down in the corner.  then no need for an additional texture slot. 

Edit: That may have implications though, if you use a lowfi small texture for lod, and never get closer, you never download the big material? hmm.  you'd still have to waste a tri to represent the main material but it could be so small as to not actually load from the distance the lod is viewable anyway? hmmm

Edited by Macrocosm Draegonne
Link to comment
Share on other sites

  • 2 weeks later...

I am not going to claim to be a particularly skilled or fast mesh maker, but I do make stuff. I was lucky to buy a mesh avatar which is well optimised. The marketplace is no help in finding low-complexity items.

DW-Vixen-Test-2_006.png.0ff11a1295d985578230cc4bb53baa72.png

Anyway, I am walking around as the pictured avatar, total complexity under 10k. And some creator who sees this will now start pointing and screaming "Cheating" because I made those meshes for what SL viewers do. I've done tests, zooming my camera out and seeing what detail my screen can show. My meshes are comparable triangle-size to the classic avatar. I use normal maps, but there is detail in those clothes which doesn't depend on them.

It would help a lot if the Lindens could write documentation for humans rather than computers.

It would help if some creators could read documentation.

There have been times when, despite clearly saying, "I use Linux", helpful people have recommended wonderful Windows programs.

That outfit isn't quite accurate, I've since seen pictures with some better info.

"Run and find out." is a pretty good motto.

  • Like 2
Link to comment
Share on other sites

7 hours ago, Kyrah Abattoir said:

@animats Might wanna use alpha mask mode rather than alpha blend, you'll get sharp edges and it might look more convincing at a distance that way.

I think I scared him away saying he better not be both smart and cute.  >.>  Smart is attractive, smart and cute is dangerous. lmao some dont like a backhanded compliment I suppose, I tend to forget that because im usually in such a good mood.

Edited by Macrocosm Draegonne
Link to comment
Share on other sites

On 10/25/2018 at 2:55 AM, animats said:

As some of you know, I've been working on low-LOD impostor models. Here's another step in that direction.

swingarmimpostor10-1_002.jpg.ba74a2e2f1967937d8d467a714a85f21.jpg

 

 

 

 

I hope you don't think I'm being an enormous pain in the ass saying this, but your model would benefit from some supporting loops at the junctions of the cross beams, etc. If using blender, Just select the loop and hit ctrl B to bevel, then adjust from the T panel. The shading will be a lot more defined this way. 

  • Thanks 1
Link to comment
Share on other sites

30 minutes ago, Cube Republic said:

I hope you don't think I'm being an enormous pain in the ass saying this, but your model would benefit from some supporting loops at the junctions of the cross beams, etc. If using blender, Just select the loop and hit ctrl B to bevel, then adjust from the T panel. The shading will be a lot more defined this way. 

Yes, the model needs some smoothing. It's  a commercial 3D model I bought for testing on polygon reduction.

I'm still working on an impostor generator for Blender. It works well for anything that can be boxed up with a simple model.  Rectangular urban buildings are near-perfect. Other things can be approximated with boxes if desired.

chairimpostor01.png.b13c72453dedc7e7b4d2291828d7dd78.png

Chair, and chair impostor. This is for low and lowest level of detail. Compare with the SL uploader's polygon reduction.

chairimpostorwireframe1.png.58f5b51dea9525821de79082d1b4f671.png

At left, 953,720 triangles. At right, 40 triangles. That could be brought down to 34 by deleting the hidden faces. You still have to draw the low-detail model by hand. The add-on then bakes the texture from the real model onto the impostor. You can do things like this with texture baking in Blender, but it takes a lot of prep. This is more automatic.

I'm still working on getting the lighting to match. Alpha version when I get that right.

 

  • Like 1
Link to comment
Share on other sites

It's sad that we can't build well in world. Building was once a social event in New Babbage. People would gather to watch prim builds. When I'm scripting vehicles, I'm in world, and I have an in-world workshop where I put a motorcycle on a stand while scripting it. Then I take them out for a drive in-world. So it's an in-world activity.

But Blender land is far away, in several dimensions. You're mostly out of world.  When it comes time to upload, you probably go to a sandbox on the beta grid to escape the mesh upload fee.

Sinespace now has good in-world building. Sansar and High Fidelity don't. What SineSpace really has is prim building with user-defined prims. You can create a parameterized couch with the out of world tools. In world, users can stretch it, and it acquires more cushions, not wider ones. The arms don't get fatter. Wall sections can be stretched, and they acquire more windows, not wider ones. The bricks stay the same size. So Sinespace has  builder parts the average user can use effectively. The parts have to be optimized for level of detail once. The part user doesn't have to worry about that. User level building is very fast.

I don't expect SL to do anything like that. It's too hard for LL. They have very limited resources.

On the LOD front, there are some things that could be done in the viewer. Run-time impostors for objects, like the ones for avatars. Some of the Firestorm people are interested in that, but they have to integrate animesh and EEP first.

There's some interesting theory on this. See "Automatic Impostor Placement for Guaranteed Frame Rates and Low Memory Requirements". The idea is that you can bunch up a group of static objects and paint them onto one flat impostor. As long as the viewpoint stays within a cone around the normal to the impostor, and the viewpoint doesn't get too close, you don't have to regenerate the impostor. So you can draw it with one draw call. (Draw calls are what slow down SL. A draw call means the main CPU has to set up the GPU to draw something. SL viewers usually run out of CPU time in the main thread before anything else. The more drawn by a single draw call, the faster the viewer runs.)

Which objects do you group together? That's an optimization problem. The author of that paper worked that out and did their PhD thesis on this. Now they work in NVidia's R&D group.

This could be very effective for SL. If you're not moving too much, pretty soon the entire background is being drawn with a few draw calls and you have a great frame rate. No more choking during Fashion Week. If Firestorm gets any object impostoring, generalizing it to group impostoring isn't a huge leap.

 

  • Thanks 1
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 1966 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...