I am trying to understand why meshes that are smoothed in 3D studio (Modifiers/Smoother) end up having the same amount of vertices/faces before or after that process, as well as the exact same geometry.

In the following example, both meshes have 32 vertices and 60 faces.

enter image description here

enter image description here

Although I have experience working with programming (c++ and c#), I am quite a beginner with computer graphics. Thus my expectation was that the smoothed look of a smoothed mesh would require additional vertices, i.e. subdivision of triangles, in order to end up having a more detailed final mesh. However, that seems to be not the case.

Therefore I ask:

1) how is the smoothing possible without increasing the detailing of the mesh geometry?

2) does the smoothing at least increase the memory allocated/used for storing the new mesh in comparison to the original one?

Explanations are super welcome, but references (academic or not) are also appreciated.

  • $\begingroup$ Not super experienced here either but I suppose you could be using a different shader in one. Lambert's would look like the one on the right. But gourands would average them and make it appear smoother. prosjekt.ffi.no/unik-4660/lectures04/chapters/jpgfiles/… $\endgroup$ – Andrew Wilson Nov 14 '15 at 4:07
  • 1
    $\begingroup$ Thanks for your comment! Quite frankly, the only thing I did was to apply the Smoother modifier. There was no added shader before and I did not add any shader after. $\endgroup$ – Louis15 Nov 14 '15 at 4:09
  • $\begingroup$ The historical terms are "that's the difference between flat and gouraud's shading". In practice this relates to normals like explained by joojaa $\endgroup$ – v.oddou Mar 24 '16 at 5:17
  • $\begingroup$ What software did you use in the screenshot? THX:) $\endgroup$ – xyz Aug 7 '16 at 2:50

Smooth in this case just makes the surface normals at vertices point the same way, when interpolated it looks smooth. Meshsmooth would add vertices.

1) how is the smoothing possible without increasing the detailing of the mesh geometry?

Human eyes cant actually see curvature except on the edges of objects. All they can do is approximate the smoothness and process the gradient slope. So having a continuous field does give a air of smoothness. The eye however is extremely sensitive to abrupt changes in color, and interprets that as a hard crease.

By interpolating the vertex normals your surface will get the appearance of smooth flowing. Since this normal is used to calculate the final reflected color you get a smooth color field.

Flat shaded vs smooth shaded

Image 1: a flat shaded normal versus the normals of a smooth interplation. The black normal's lie on a vertex. The colored ones are interpolated.

There is nothing that says we need to do a linear interpolation. In fact by perturbing the normals we can cause the flat surface to change appearance. This is how bump mapping and normal mapping works. The effect can be convincing unless the surfaces edge plays a too big part in which place the illusion breaks.

enter image description here

Image 2: a flat shaded surface (back), Smooth shaded (middle) and a mapped smooth normal. The illusion of a wavy surface breaks because the edge plays so prominent part in the image, you could instead increase the normals

2) does the smoothing at least increase the memory allocated

Hard to say definitive things about the underlying graphics engine. The normals need to be emitted to the graphics card anyway, most likely this data is cached, but could be calculated on the fly (in both cases).

Since Max uses smoothing groups it seems to me that memory usage is constant regardless. Hard to say, even if its not cached then it wouldn't make a big difference. It makes the shader tiny a bit more complicated, but only just most likely this complexity is present use it or not.

  • $\begingroup$ Great answer! That's exactly what I was looking for: a conceptual explanation that didn't leave crucial details out but was still clear and direct to the point. Many thanks $\endgroup$ – Louis15 Nov 16 '15 at 0:47
  • 2
    $\begingroup$ " The eye however is extremely sensitive to abrupt changes in color, and interprets that as a hard crease." Actually the human visual system is very good at detecting changes in the derivative of the shading. The shading can be continuous but if there are discontinuities in the rate of change as in this image these can be surprisingly noticeable. Search for Mach band effect. $\endgroup$ – Simon F Nov 16 '15 at 10:57
  • 1
    $\begingroup$ @SimonF thats why they see a crease, because they derive it edge detection and all that. But the human brain does not really eveluate the gradient flow 2 smooths are allmost equal to most humans (theres no second derviate sensing for example). So having smooth sphere is smooth, even if the normals do not behave entirely spherically just as long as they are smooth. Thets why we get away with the trick. Very few surfaces actually behave this way. $\endgroup$ – joojaa Nov 16 '15 at 11:59
  • $\begingroup$ "(theres no second derviate sensing for example)" I just checked in Glassner's "Principles of Digital Image Synthesis" (Volume 1 page 29) ... and now I am more confused than ever. $\endgroup$ – Simon F Nov 16 '15 at 12:41
  • $\begingroup$ @SimonF You may be confused about the reflections that are naturally one derivative lower than what the surface is. Thus a human can under certain conditions sense the second derivative. But the point is rather that humans can see creases, but they don't make meaningful difference between all different changes, the fact that a reflection is slightly off or in wrong direction isnt automatically apparent to a human. Without deeper analysis. Just as long as there's no abrupt change is for the most part good enough in many circumstances. We should continue this in the chat room though $\endgroup$ – joojaa Nov 16 '15 at 12:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.