How to solve Blender's smoothing problems
The messages on Blender forums and boards are countless about smoothing problems. Most of the time, the users report black blotches on the surface of their models, while using the Set Smooth on them. This article is not a tutorial. It's more a discussion, a collection of observations and know-how. It is intended for beginners, but seasoned users could also find it valuable in their own attempts (as ressource or reference) to help beginners. Isn't the community about helping each other, after all?
For Blender: 2.44 - Japanese version available()
In this article, we will go through many ways of dealing with smoothing, be it smoothing issues or smoothing strategies. It is intended to be short and straight to the point. Why would you be concerned? You certainly will, anyway, if you decide to model in Blender manufactured, lathed and/or milled objects, e.g., if you are faced with objects with very smooth surfaces but with very sharp edges. But other cases are quite numerous also, as seasoned poly-modelers could tell you...
1. The normal problem
This is a very common issue for all beginners involved in modeling. At one point or another, the blenderhead will experience strange dark shading on the surface of their models. While they certainly did nothing real wrong, it can be quite frustrating to witness this within their lovely built models.
In this example, one face of the head of Suzie has its normal inverted, generating the black blotch
In Edit mode
[Tab], panel Mesh Tools 1: activate the Draw Normals and Draw VNormals. Optionally, adjust the size of the normals using the NSize parameter. Draw Normals shows on your model the normals of the faces ; Draw VNormals shows on your model the normals at each vertex. Commonly, all the normals at the surface of your model should point either outward (most of cases) or inward (some cases, involving radiosity, for example). If you witness strange variations of shading on the surface of the material, it's probably due to some normals inverted (generally after some by-hand poly modeling).
The Draw Normals and Draw VNormals options activated, and the result with a cube in the 3D view
What to do (in Edit mode) in order to correct this :
- select all the faces of the model, and then use
[Ctrl]+[N]to recalculate normals outside, or
[Shift]+[Ctrl]+[N]to recalculate normals inside. Sometimes, you will need to issue this command a few times so that everything is calculated correctly.
- select the faces whose normal is incorrectly oriented, and then use the Flip Normal button in the Mesh Tools pannel. It's the finest way to do it, but it could make you crazy if you have a lot of faces to detect and to flip.
The first solution should solve 90% of the cases.
2. The Double problem
This one is also a very common issue, mostly due to inexperienced modeling. It could occur, for example :
- using the
[E]xtrusion tool and forgeting to move the vertices (you then have coincident geometry)
- when se
[P]arating parts of a model, and then
[Ctrl]+[J]oining them again later
- when using the Spin tool (a seam commonly appear at the initial surface being spinned)
- when hand-mirroring two halves of a single mesh, etc.
- when using an importer script for a foreign-format file like
The shared symptom in all these cases is that duplicate vertices occupy the same space, and are not visible to human eye. Doubles may strongly affect the shading of the surface when Set Smooth is used, causing a discrepency that will show like a black seam on the model, with more or less visible shading troubles in the surrounding area, just as if the double indicated a sharp edge instead than the boundary of a soft shaded surface.
In this example, two mirrored halves of Suzie have been joined together, but double vertices show as a straight line splitting the face according to the symmetry axis
What to do in order to correct this :
Select all the vertices of your model (in Edit mode) and :
- use the Rem Doubles button of the Mesh Tools pannel.
[W]to call the Specials menu and choose Remove Doubles.
In the Mesh Tools panel, close to the Rem Doubles buttons, there's a parameter called Limit. It defines the distance between two vertices under which they are considered duplicated, and thus, merged. Useful to clean meshes, and mandatory when you use most of import scripts with mesh geometry. Of course, using a too high value of Limit could be destructive for the mesh! If you want to lighten the mesh density, please use the Decimate modifier instead, which is safier.
The Rem Doubles button and the Limit value
3. Mastering Blender's smoothing tools
Normals and doubles were the main obstacles to good smoothing, and now that you know to deal with them, we could proceed with the real topic : smoothing. Each 3D packages have their own tools for dealing with smoothing, be it globally or by using smoothing groups. Blender is quite keen on the subject, and offers many solutions to achieve perfect smoothing of its models.
3.1 What is smoothing, at first?
The pitfall with polymodeling, with Blender and all other poly modelers, is that volumes and surfaces are defined by faces instead of mathematic surfaces (which is the case of NURBS and Meta-Elements, though). When a single lamp is lighting the scene, the following observation is very easy to make : each face of the model receive approximatively the same amount of light from one corner to another, and two contiguous faces, if not co-planar, receive significantly different lighting from each other. The result is that illumination across a single model is not continuous at all!
Image of a faceted model and a glimpse at its mesh
There are two basic way to deal with this problem.
3.1.1 Finer geometry
The first one would be to use Subsurface division a lot of times, so that the illumination of two contiguous and very small faces differs so slightly that it would barely be noticeable. The higher the subdivision value, the smoother the surface will look, but the scene will become cumbersome to handle and render.
Using Subsurf to refine the mesh : Suzanne without Subsurf, and Suzanne with various levels of Subsurf
Please note that you could also use, for example, the Smooth modifier to affect the geometry of the mesh so that the angles between neighbour faces will be flattened ;unfortunately, if the smoothing would look better, the side effect is that the model would apparently shrink under the process.
3.1.2 Cheating with illumination
The second one would be to interpolate the shading within a single face according the the shading of neighbour faces. This way, each face retains its own original geometry (no subdivision means lighter meshes) but gains the illusion of a very smooth surface : only the edges of the model can betray its lack of geometry.
A good combination of these two techniques (a Subdivision with a low level value, and some shading interpolation) is probably the cheapest way to achieve good smoothing illusion.
3.2 Set Smooth and Set Solid
Blender lets you choose freely between the two behaviors, in Object mode, by clicking either Set Smooth or Set Solid in the Link and Materials panel of the Edit buttons
Examples of Solid model versus Smoothed model, but the geometry is the same (quite low poly)
You can even mix the both behaviors on a single mesh : you will just have to Set Smooth or Set Solid while in Edit mode, the result being applied to the selected faces. The most important thing to remember is that one face is either Smooth or Solid, but you can set independantly, in Edit mode, a different behavior for any single face. If you set a specific behavior in Object mode, it will override any behavior previously set in Edit mode.
One-half of Suzanne is smooth, while the other half is solid : but its the very same mesh!
3.3 Using Auto Smooth
In some cases, you will need to keep some hard edges on your model. We already saw that you can, in Edit mode, select which face is smooth and which face is solid. The Auto Smooth feature helps you to set automagically, to some extent, which face is smooth and which is solid, based on the angle between two neighbour faces : if the angle is greater that the criterion set in the Angle button in the Mesh panel, then the faces are solid ; if the angle is smaller, then the faces are smooth.
Take the case of a cylinder : you expect the body to be perfectly smooth, as well as the two caps. But where the cylinder and the caps meet, you also expect a hard edge; using Set Smooth for the entire model will produce a wrong lighting (as the circular edges will look like filleted). But using Auto Smooth will do it, because the angle between the cylinder faces and the caps faces is 90° in such cases, you simply will have to find for your model the most accurate angle value that will make the difference between smoothed and solid faces.
From left to right : a solid cylinder, a smoothed cylinder, and an auto-smoothed cylinder. The first Set Solid'ed cylinder presents good caps but unwanted banding on the cylinder body ; the second Set Smooth'ed cylinder has a smooth cylinder body but the caps are strangely shaded ; the third Auto Smooth'ed cylinder is just perfect and offers the best likeliness!
3.4 Tips and tricks for controling sharpness of edges
But the Auto Smooth solution, even if being useful in a lot of cases, doesn't provide the user with exceptional control on the overall hardness of edges. Sometimes, the difference Angle would be small and you would like a sharp edge anyway. To solve this, you could, for example,
[E]xtrude the edges to keep as sharp, but on a very short distance, ideally not noticeable by human eye. Another way could be to cut an edge loop
[Ctrl]+[R] very close to the would-be-sharp-edge.
A sample of lathed object turned into 3d mesh
Let's discuss the case of a simple lathed object, consisting in a cylinder and a sphere connected together. It appears that all surfaces should be smooth, excepted the circular edges making the cap of the cylindar and the circular edges where the sphere and the cylinder are connecting altogether. Using
[Ctrl]+[R] we add two loops very close to the would-be-hard edges, and we then achieve the illusion of hard edges, with the entire model Set Smoothed.
With extra loops, the edges now look sharp!
But the pitfall of this solution is that it adds extra geometry to the model, which could be bothering when polycount matters.
3.5 Edge Split modifier
The Edge Split modifier that appeared in Blender v2.43 is a very good tool for the modeler, because it offers you a very good control on the edges sharpness. It works the very same way as the Seams (for the UV unwraping), in Edit mode : first, you need to select edges, and you can Mark Sharp them with the
[Ctrl]+[E] Edge Specials menu (you can also Clear Sharp edges the same way). Then, in Object mode, you can Add Modifier in the Modifiers tab of the Edit buttons and select EdgeSplit.
Basically, the smoothing will be calculated so that all faces are smooth, but the shading won't be interpolated on the area close to an edge marked as sharp. This is the purpose of the From Marked As Sharp option. Moreover, there's also a From Edge Angle option available ; its purpose is the same as the Auto Smooth option, as it uses a user-defined Split Angle to decide the smoothing of the faces : if the angle between the two faces at a specific edge exceeds the given angle, then the edge will be considered as sharp, and the faces will be shaded accordingly.
I hope this little discussion has been helpful, both to beginners who discover strange behaviors of their surfaces, and to the more seasoned blenderheads who don't master yet all the most recent features of Blender. Hopefully, you will now get a perfect control on the appearences of your manufactured models.