down-res ing low res models


#1

Happy New Year all

Someone has to know the answer to this.

I modeled and UV’d a low-res refrigerator. As just one mesh, it has 78 faces. It seemed high, so I tried dividing it into several separate pieces. I got it down to 20 faces. It’s sort of like a NURBS patch model, but not really. Each individual mesh is topologically correct though.

My question: Is this an acceptable method for down-rez ing a model?

It didn’t mess up the maps. The color and normal maps still work. If you can model a table with 4 cylinders and a cube, I don’t see why this can’t be done.

Just wondering why my school never taught me this. Any help would be appreciated. I’m having trouble getting a solid answer on this. I don’t want to send wireframes out on models that appear to have bad topology.

Thanks


#2

You should try to keep the object as a single piece, otherwise you may have sorting and shading issues when the hardware tries to draw the object. If you have a surface with disconnected polygons which share the same space, often times the graphics hardware will not be able to tell which face is is in front of the other. Variably the wrong face will be drawn in front and sometimes the hardware will swap the drawing order continuously resulting in what’s often referred to as “polyfight”… Each polygon fighting to be on top. The other issue is surface normals. Since you have no surface continuity you cannot have a smooth transition from one face to the next, which is going to result in some extremely sharp edges and corners, and possibly visible cracking in the seams of the object.

Since the fridge is a very simple object, the sorting issue might not be a big problem, but the sharp edges will, unless the fridge is never going to be seen close up.

Another thing to consider is that a continuous model with 75 polygons can possibly be drawn faster than a simplified model with discontinuous polygons because the continuous model can be more efficiently tri-stripped. If you want an explanation of a tri-strip just ask. I’m too lazy to exaplain it now. :stuck_out_tongue_winking_eye:


#3

Aw hell, here goes…

Graphics hardware prefers models that can be grouped into ordered strips of triangles. The bigger the strip the better. If the model can be broken down into large strips of triangles the graphics hardware has an easier time manipulating it.

As a very simple example, lets say you have a simple ribbon of ten triangles. If you were to break the ribbon up into discrete triangles (similar to what you’ve done to this fridge), the graphics hardware would have to do 3 transforms per triangle per frame. The points that make up the traingles of the ribbon would look like this to your graphics hardware:

1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
19 20 21
22 23 24
25 26 27
28 29 30

This is what’s known as a triangle list. That’s 30 points that need to be transformed per frame.

Now take the same ribbon as a continuous ten triangle tri-strip. Here’s what the graphics hardware sees.

1 2 3 4 5 6 7 8 9 10

Since the hardware takes this strip in order, it has 3 points to transform for the first polygon and only one point for each successive polygon in the strip, a total of 10 transformations as compared to 30 tranforms for the triangle list above. The objects are the same, but this tristripped version is much less work to draw. Since the hardware sees these triangles as continuous and ordered it only has to do one transform for each successive triangle because the other two points that make up the current triangle were already calculated for the previous triangle. So much less work has to be done by the GPU with the tristripped model that we can double the number of polygons in the tristrp version and, in a perfect world, it will still be transformed by the hardware 33 percent faster than the triangle list version of the ribbon above.

This example is small and doesn’t seem like much, but imagine a game where you have millions of triangles to churn through 60 times a second… Saving dozens or hundreds of calculations per object per frame really adds up.

Hopefully I’ve explained this clearly and you can understand that by keeping the surface continuous, even though the object has a couple dozen more triangles, it may draw faster because larger strips of triangles can be created. Your 78 polygon fridge as a solid object, would be composed of several strips, but could possibly be handled by the hardware as easily or possibly easier than your simplified version of the model. There’s no way to really tell without seeing how the model is laid out in the game format. Either way the difference in how efficiently the hardware handles these two versions of the model should be very minute and not worth sacrificing the visual quality of the higher res version of the fridge.


#4

So in other words, NO? This is not an acceptable method to down-res.

Well explained Cronholio. Thanks for taking the time.

I’m forwarding your reply to a couple of friends who normally help me in these situations but couldn’t this time.

In the meantime, I’m going back to re-read that explaination for the 3rd time just to make sure I got it.

Thanks again. Much appreciated.


#5

The stripping of the model is not an issue anymore since most gfx programmers use indexed rendering of the primitives now. This is the only way where the vertex-cache on the hardware can be used wich will increase the rendering speed a lot more than with simple stipping since even vertices that would be duplicated in a strip will only be transformed once. You should only keep your parts together as one object, so that they can be rendered with one single call.

If you keep the smoothing of the mesh (normals) like they were in the combined object you won’t even see “cracks” on the mesh, where they are not intended.

btw. z-fighting will occur for every triangle at a given point (coplanar triangles with the same z-index) and doesn’t take in count whether the “polygons” are actually connected or separated…

Did you count the triangles or the polygons of your model?


#6

You’re still going to be rendering the same amount of triangles in the scene, so breaking it apart offers no benefit, because they’re all going to be in the same scene. Additionally, having them together allows for the card to optimize the model’s rendering (via tri-stripping or whatever fancypants stuff the card is doing) and allows the program to only devote one call to placing the object in the scene.

Also, I’m curious as to why you would want to reduce the polycount on a 78 triangle fridge? That’s not high poly by any modern standard.


#7

Ghostscape…Yea, the school I went to didn’t seem to understand that there are other applications for the 3D medium besides Pixar and ILM. Because of that, I’m finding myself adapting my modeling skills to fit other forums like games. Teaching myself, it’s hard to find solid info on how certain things should be done (take this discussion for example). I don’t really know what a good poly count should be for a refrigerator. I just try to get it as low as possible and still maintain the shape and detail.

Thanks for the input.


#8

Then you should either keep track of the latest advances in gaming hardware or know someone who does :wink:


#9

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.