Second Life: How Many Polygons Can I Have?

When we upload mesh items, clothes or other things, one of the questions is how many polygons can I use? An alternative of that one, how many should I use, is also common.



For the second there is no ‘numeric’ answer for the ‘should’ version. The common answer is: as few as will do the job. But, how many can we use? Is there a limit?

I just saw Drongle McMahon answer these questions in the SL Forum. Not only did he clearly state the limits, he gave a good explanation of the gotcha’s hidden in the process. I’ve quoted him here:

04-24-2016 10:32 AM

A model can consist of multiple mesh objects, and each object can consist of multiple materials (sets of faces which are allocated to the same texture). The upload format consists only of triangles. Any higher order polygons are converted into triangles by the uploader. So we only need to consider the numbers of triangles. A single object can have up to eight materials, and each material can have up to 21844 triangles. So the maximum you can have in a single object is 21844 x 8 = 174752 triangles.

However, the uploader uses a couple of tricks to give the impression that you can exceed these limits. First, when the triangle count for a material exceeds 21844, it secretly starts a new material. It can do this until you have used up all eight materials. So if you have an object with only one material and up to 174752 triangles, it will appear to upload normally. Internally it is represented as multiple materials, but as they all have the same name, they are supposed to always have the same texture. However, while you are changing textures, you may see some unexpected behavior revealing the fact that there are multiple textures. These effects are not seen by other observers and disappear after a relog.

In the second trick, the uploader will also now accept a single object with more than eight materials, but it does this by internally splitting it into multiple objects, which can be separated inworld by unlinking. The way it does the splitting can have significant effects on the LOD behavior and the LI. If you have both more than eight materials and some with more than 21844 triangles, you can get some very unpleasant effects in spite of the fact that the model will upload.

To avoid unexpected and undesirable effects it is always better to respect the limits of 21844 triangles per material and eight materials per object. You will always do a better job (better LOD behavior and lower LI) of splitting materials and/or objects yourself than the uploader will, and sometimes it does a very bad job indeed.

Since you can have multiple mesh objects in your model, there is no upper limit on the total number of triangles in an uploaded model. However, there is supposed to be an upper limit on the total file size (see wiki limits) which would impose a practical limit. I have never tested that.

Finally, you should be aware that minimizing the polygon count is one of the most important ways of creating efficiently rendered mesh that will avoid lag. High counts will be penalized by high LI for static objects and by lag for attached objects. It should never really be necessary to reach the limits described here for any object well designed for SL.

2 thoughts on “Second Life: How Many Polygons Can I Have?

  1. if you recall you put up an other blog point for the triangle count limit per object along with the already documented limit per object . For your information and your readers one I as far as I tested, for OPENSIM, there is no enforcement limits in respect to triangle per face nor triangle per mesh object. Only existing limit I witness is face per object to be maximum of 8 any additional one is not rendered and appears transparent.

  2. Sorry little correction to the first sentence . If you can do it for me:
    If you recall you put up an other blog point for the triangle count limit per face along….

    Thanks , hope you were able to cope with the pulling problem you had last month …

Leave a Reply

Your email address will not be published. Required fields are marked *