Mode: Any mode
Panel: Modifiers (Editing context, F9)
Hotkey: ⇧ ShiftO (toggle subsurf in Object mode)
Subdivision Surface is a method of subdividing the faces of a mesh to give a smooth appearance, to enable modeling of complex smooth surfaces with simple, low-vertex meshes. This allows high resolution mesh modeling without the need to save and maintain huge amounts of data and gives a smooth organic look to the object. With any regular mesh as a starting point, Blender can calculate a smooth subdivision on the fly, while modeling or while rendering, using a simple dummy subdivision surface (Subsurf in short), or the smarter Catmull-Clark one.
Subsurf is a modifier. To add it to a mesh, press Add Modifier and select Subsurf from the list.
- Subsurf Type
- This drop-down list allows you to choose the subdivision algorithm:
- Simple Subdiv. – Just subdivides the surfaces, without any smoothing (similar to Levels time W → Subdivide, in Edit mode). Rarely useful!
- Catmull-Clark – Default option, subdivides and smooths the surfaces.
- Defines the display resolution, or level of subdivision for Blender 3D views.
- Render Levels
- This is the subdivision level used during rendering.
These two settings allow you to keep a fast and lightweight approximation of your model when interacting with it in 3D, but use a higher quality version when rendering.
- Optimal Draw
- Restricts the wireframe display to only show the original mesh cage edges, rather than the subdivided result, to help visualization.
- Subsurf UV
- When enabled, the UV maps will also be subsurfed (i.e. Blender will add “virtual” coordinates for all sub-faces created by this modifier).
To view and edit the results of the subdivision (“isolines”) while you’re editing the mesh, you must enable the Editing Cage mode by clicking in the gray circle in the modifier panel header (next to the arrows for moving the modifier up and down the stack). This lets you grab the points as they lie in their new subdivided locations, rather than on the original mesh.
You can use ⇧ ShiftO if you are in Object mode to switch Subsurf On or Off in both the Object mode and at rendering. To only turn the subsurf view on/off in Object mode (to reduce lag), press ⇧ ShiftAltO. The Subsurf level can also be controlled via Ctrl1 to Ctrl4, but this only affects the visualization sub-division level.
A subsurfed mesh and a NURBS surface have many points in common such as they both rely on a “coarse” low-poly “mesh” to define a smooth “high definition” surface, however, there are notable differences:
- NURBS allow for finer control on the surface, since you can set “weights” independently on each control point of the control mesh. On a subsurfed mesh you cannot act on weights (except for edges crease, see bellow).
- Subsurfs have a more flexible modeling approach. Since a subsurf is a mathematical operation occurring on a mesh, you can use all the modeling tools and techniques described in the chapter on mesh modeling. There are more techniques, which are far more flexible, than those available for NURBS control polygons.
Since Subsurf computations are performed both real-time, while you model, and at render time, and they are CPU intensive, it is usually good practice to keep the subsurf Levels low (but non-zero) while modeling, and higher while rendering (Render Levels).
(Subsurfed Suzanne) is a series of pictures showing various different combinations of Subsurf options on a Suzanne mesh.
(SubSurf of simple square and triangular faces) shows a 0, 1, 2, 3 level of subsurf on a single square face or on a single triangular face. Such a subdivision is performed, on a generic mesh, for each square or triangular face.
It is obvious that the number of faces produced by the
n level of subdivision is:
- For a quadrangle :
- For a triangle :
3 × 4n-1.
This dramatic increase of face (and vertex) number results in a slow-down of all editing, and rendering, actions and calls for lower Subsurf level in the editing process than in the rendering one.
The Subsurf tool allows you to create very good “organic” models, but remember that a regular mesh with square faces, rather than triangular ones, gives the best results. (A Gargoyle base mesh (left) and pertinent level 2 subsurfed mesh (right)) and (Solid view (left) and final rendering (right) of the Gargoyle) show an example of what can be done with Blender subsurfs.
Limitations & Workarounds
Blender’s subdivision system is based on the Catmull-Clark algorithm. This produces nice smooth subsurfed meshes but any subsurfed face, that is, any small face created by the algorithm from a single face of the original mesh, shares the normal orientation of that original face.
This is not an issue for the shape itself, as (Side view of subsurfed meshes. With random normals (top) and with coherent normals (bottom)) shows, but it is an issue in the rendering phase and in solid mode, where abrupt normal changes can produce ugly black lines (Solid view of subsurfed meshes with inconsistent normals (top) and consistent normals (bottom)).
Use the CtrlN command in Edit mode, with all vertices selected, to recalculate the normals to point outside.
In these images the face normals are drawn cyan. You can enable drawing normals in the Editing context (F9), Mesh Tools More panel.
Note that Blender cannot recalculate normals correctly if the mesh is not “Manifold”. A “Non-Manifold” mesh is a mesh for which an “out” cannot unequivocally be computed. From the Blender point of view, it is a mesh where there are edges belonging to more than two faces.
(A “Non-Manifold” mesh) shows a very simple example of a “Non-Manifold” mesh. In general a non-manifold mesh occurs when you have internal faces and the like.
A non-manifold mesh is not a problem for conventional meshes, but can give rise to ugly artifacts when subsurfed. Also, it does not allow decimation, so it is better to avoid them as much as possible.
Use these two hints to tell whether a mesh is “Non Manifold”:
- The recalculation of normals leaves black lines somewhere.
- The Decimator tool in the Mesh panel refuses to work stating that the mesh is “Non-Manifold”.
Weighted creases for subdivision surfaces
Mode: Edit mode (mesh)
Panel: 3D View → Transform Properties (N)
Hotkey: ⇧ ShiftE
Menu: Mesh » Edges » Crease Subsurf
Weighted edge creases for subdivision surfaces allow you to change the way Subsurf subdivides the geometry to give the edges a smooth or sharp appearance.
The crease weight of selected edges can be changed interactively by using ⇧ ShiftE and moving the mouse towards or away from the selection. Moving the mouse away from the edge increases the weight. You can also use Transform Properties (N) and enter the value directly. A higher value makes the edge “stronger” and more resistant to subsurf. Another way to remember it is that the weight refers to the edge’s sharpness. Edges with a higher weight will be deformed less by subsurf. Recall that the subsurfed shape is a product of all intersecting edges, so to make the edges of an area sharper, you have to increase the weight of all the surrounding edges.
You can enable an indication of your edge sharpness by enabling Draw Creases. See (Mesh Tools More panel).
The sharpness value on the edge is indicated as a variation of the thickness on the edge. If the edge has a sharpness value of 1.0, it will be thicker than if it had a sharpness value of 0.0.