<p>I can see two ways of doing &quot;smoothing&quot;. The first one is smoothing what's mostly related to the appearance (in your case the normals). The other way is smoothing the geometry itself.</p>
<p>In the first case you usually update the normals based on the neighbours. Say <span class="math-container">$\mathcal{M}$</span> is a mesh, <span class="math-container">$T$</span> is a triangle in <span class="math-container">$T$</span> and <span class="math-container">$n(T)$</span> is the normal at <span class="math-container">$T$</span>. One dumb way of smoothing it could be simply</p>
<p><span class="math-container">$$
\begin{array}{l}
n(T) \leftarrow \frac{1}{|\mathcal{N}(T)|}\left(n(T) + \sum_{Q \in \mathcal{N}(T)} n(Q) \right) \\
n(T) \leftarrow n(T) / n(T).length()
\end{array}
$$</span></p>
<p>Here <span class="math-container">$\mathcal{N}(T)$</span> represent the list of triangles adjacent to <span class="math-container">$T$</span>.
The pair of equations as you can see don't really change the vertex count, the same argument could be applied to vertex normals. Essentially you don't delete or add anything you just adjust values.</p>
<p>The second case is literally smoothing the geometry, which implies moving vertices around so you don't have sudden jumps in curvature. A couple of know examples are <a href="https://en.wikipedia.org/wiki/Laplacian_smoothing" rel="nofollow noreferrer">laplacian smoothing</a> and <a href="https://graphics.stanford.edu/courses/cs468-01-fall/Papers/taubin-smoothing.pdf" rel="nofollow noreferrer">taubin smoothing</a>, both have similar equations to the first case I described.</p>
<p>If you start removing vertices this is usually called <a href="http://graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/08_Simplification.pdf" rel="nofollow noreferrer">decimation/simplification</a>, if you add vertices is <a href="https://en.wikipedia.org/wiki/Subdivision_surface" rel="nofollow noreferrer">subdivision</a>. The smoothing in this case is kind of side effect really, i.e. when you render the mesh it might look smoother. But the purpose of decimating or subdividing is usually removing/adding of details (like LOD).</p>
<p>By the way... the terminology I'm using is standard in Mesh Processing (smoothing, decimation and subdivision are well defined in this context and this leads to the content of my answer).</p>

CC BY-SA 4.0
2020-06-18T12:01:42.163Z
2020-06-18T16:07:05.937Z
2020-06-18T16:07:05.937Z
user8469759
<p>Smooth in this case just makes the surface normals at vertices point the same way, when interpolated it looks smooth. Meshsmooth would add vertices.</p>

<h3>1) how is the smoothing possible without increasing the detailing of the mesh geometry?</h3>

<p>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.</p>

<p>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.</p>

<p><a href="https://i.sstatic.net/EqJkQ.png" rel="noreferrer"><img src="https://i.sstatic.net/EqJkQ.png" alt="Flat shaded vs smooth shaded"></a></p>

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

<p>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.</p>

<p><a href="https://i.sstatic.net/l62Ov.png" rel="noreferrer"><img src="https://i.sstatic.net/l62Ov.png" alt="enter image description here"></a></p>

<p><strong>Image 2</strong>: 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</p>

<h3>2) does the smoothing at least increase the memory allocated</h3>

<p>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).</p>

<p>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.</p>

CC BY-SA 3.0
2015-11-16T00:47:13.523Z
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
Louis15
CC BY-SA 3.0
2015-11-16T10:57:28.713Z
_" 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](http://www.cs.ru.ac.za/research/Groups/vrsig/pastprojects/041machbands/image03.png) these can be surprisingly noticeable. Search for Mach band effect.
Simon F
CC BY-SA 3.0
2015-11-16T11:59:40.677Z
@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.
joojaa
CC BY-SA 3.0
2015-11-16T12:41:54.293Z
_"(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.
Simon F
CC BY-SA 3.0
2015-11-16T12:49:24.150Z
@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
joojaa
CC BY-SA 3.0
2015-11-14T13:52:00.097Z
2015-11-14T13:52:00.097Z
joojaa
<p>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.</p>

<p>In the following example, both meshes have 32 vertices and 60 faces.</p>

<p><a href="https://i.sstatic.net/JQ1KW.png" rel="noreferrer"><img src="https://i.sstatic.net/JQ1KW.png" alt="enter image description here"></a></p>

<p><a href="https://i.sstatic.net/dvqdb.png" rel="noreferrer"><img src="https://i.sstatic.net/dvqdb.png" alt="enter image description here"></a></p>

<p>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.</p>

<p>Therefore I ask:</p>

<p>1) how is the smoothing possible without increasing the detailing of the mesh geometry?</p>

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

<p>Explanations are super welcome, but references (academic or not) are also appreciated.</p>

CC BY-SA 3.0
2015-11-14T04:07:38.430Z
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. http://prosjekt.ffi.no/unik-4660/lectures04/chapters/jpgfiles/3-shadings.jpg
Andrew Wilson
CC BY-SA 3.0
2015-11-14T04:09:48.693Z
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.
Louis15
CC BY-SA 3.0
2016-03-24T05:17:13.580Z
The historical terms are "that's the difference between flat and gouraud's shading". In practice this relates to normals like explained by joojaa
v.oddou
CC BY-SA 3.0
2016-08-07T02:50:31.993Z
What software did you use in the screenshot? THX:)
xyz
<3d><geometry><mesh><memory><model>
Why smoothed meshes in 3D studio end up with the same number of vertices/triangles? How then can they be smoothed with the same geometry?
Louis15
# Why smoothed meshes in 3D studio end up with the same number of vertices/triangles? How then can they be smoothed with the same geometry?

(Asked by: username_0 on 2015-11-14)

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](https://i.sstatic.net/JQ1KW.png)](https://i.sstatic.net/JQ1KW.png)

[![enter image description here](https://i.sstatic.net/dvqdb.png)](https://i.sstatic.net/dvqdb.png)

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.

**Tags:** 3d, geometry, mesh, memory, model

> **Comments:**
> **username_1**: 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. http://prosjekt.ffi.no/unik-4660/lectures04/chapters/jpgfiles/3-shadings.jpg  
> **username_0**: 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.  
> **username_2**: The historical terms are "that's the difference between flat and gouraud's shading". In practice this relates to normals like explained by username_5  
> **username_3**: What software did you use in the screenshot? THX:)  

---

## 2 answers

### Answer by username_5 on 2015-11-14. Score: 16 | Accepted answer

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](https://i.sstatic.net/EqJkQ.png)](https://i.sstatic.net/EqJkQ.png)

**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](https://i.sstatic.net/l62Ov.png)](https://i.sstatic.net/l62Ov.png)

**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.

> **Comments:**
> **username_0**: 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  
> **username_6**: _" 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](http://www.cs.ru.ac.za/research/Groups/vrsig/pastprojects/041machbands/image03.png) these can be surprisingly noticeable. Search for Mach band effect.  
> **username_5**: @username_6 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.  
> **username_6**: _"(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.  
> **username_5**: @username_6 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  

---

### Answer by username_4 on 2020-06-18. Score: 1

I can see two ways of doing "smoothing". The first one is smoothing what's mostly related to the appearance (in your case the normals). The other way is smoothing the geometry itself.

In the first case you usually update the normals based on the neighbours. Say $\mathcal{M}$ is a mesh, $T$ is a triangle in $T$ and $n(T)$ is the normal at $T$. One dumb way of smoothing it could be simply

$$
\begin{array}{l}
n(T) \leftarrow \frac{1}{|\mathcal{N}(T)|}\left(n(T) + \sum\_{Q \in \mathcal{N}(T)} n(Q) \right) \\
n(T) \leftarrow n(T) / n(T).length()
\end{array}
$$

Here $\mathcal{N}(T)$ represent the list of triangles adjacent to $T$.
The pair of equations as you can see don't really change the vertex count, the same argument could be applied to vertex normals. Essentially you don't delete or add anything you just adjust values.

The second case is literally smoothing the geometry, which implies moving vertices around so you don't have sudden jumps in curvature. A couple of know examples are [laplacian smoothing](https://en.wikipedia.org/wiki/Laplacian_smoothing) and [taubin smoothing](https://graphics.stanford.edu/courses/cs468-01-fall/Papers/taubin-smoothing.pdf), both have similar equations to the first case I described.

If you start removing vertices this is usually called [decimation/simplification](http://graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/08_Simplification.pdf), if you add vertices is [subdivision](https://en.wikipedia.org/wiki/Subdivision_surface). The smoothing in this case is kind of side effect really, i.e. when you render the mesh it might look smoother. But the purpose of decimating or subdividing is usually removing/adding of details (like LOD).

By the way... the terminology I'm using is standard in Mesh Processing (smoothing, decimation and subdivision are well defined in this context and this leads to the content of my answer).


---

