From BlenderWiki

Jump to: navigation, search

Subdivision Surfaces

Mode: Any mode

Panel: Modifiers (Editing context, F9)

Hotkey: ⇧ ShiftO (toggle subsurf in Object mode)

Description

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.

Options

Modifiers panel.

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 WSubdivide, in Edit mode). Rarely useful!
  • Catmull-Clark – Default option, subdivides and smooths the surfaces.
Levels
Defines the display resolution, or level of subdivision for Blender 3D views.
Render Levels
This is the subdivision level used during rendering.
Note
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.

Hints

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

Examples

(Subsurfed Suzanne) is a series of pictures showing various different combinations of Subsurf options on a Suzanne mesh.

Subsurfed Suzanne.

(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 : 4n.
  • 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.

SubSurf of simple square and triangular faces.

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.

A Gargoyle base mesh (left) and pertinent level 2 subsurfed mesh (right).
Solid view (left) and final rendering (right) of the Gargoyle.


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.

Side view of subsurfed meshes. With random normals (top) and with coherent normals (bottom).

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

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.

(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

Description

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.

Options

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

Transform Properties panel.
Mesh Tools More panel.


Examples

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.

Crease: 0.0.
Crease: 1.0.




Introduction
What is Blender?
Introduction
Blender’s History
License
Blender’s Community
About this Manual
What's changed with Blender 2.4
Installing Blender
Introduction
Python
Installing on Windows
Installing on GNU/Linux
Installing on Mac
Installing on other Operating Systems
Configuring Blender
Directory Layout
Starting
The Interface
Introduction
Keyboard and Mouse
Window System
Arranging frames
Headers
Console window
Window Types
Screens (Workspace Layouts)
Scenes
Configuration
Modes
Contexts
Menus
Panels
Buttons and Controls
Internationalization
Your First Animation
1/2: A static Gingerbread Man
2/2: Animating the Gingerbread Man
The Vital Functions
Quick render
Undo and Redo
Default scene
Screenshots
Help!
Setting Preferences
Configuring Preferences
Interface
Editing
Themes
File
System
Interaction in 3D
Introduction
Introduction
Navigation
Introduction
3D View
3D View Options
3D View Usage
Camera View
Layers
Local or Global View
Sketch in 3D Space
Introduction to Grease Pencil
Drawing sketches
Layers and Animation
Converting sketches to geometry
Transformations
Introduction
Basics
- Grab/Move
- Rotate
- Scale
- Gestures
Advanced
- Mirror
- To Sphere
- Shear
- Warp
- Push/Pull
Transform Control
Introduction
Precision of Transformations
Numeric Transformations
Transform Properties
Reset Object Transforms
Manipulators
Transform Orientations
Axis Locking
Pivot Point
- Active object
- Individual Centers
- 3D Cursor
- Median Point
- Bounding Box Center
Snapping
Snap to Mesh
Proportional Edit
Data System and Files
Blender's Data System
Blender's Library and Data System
Blender's Datablocks
Scenes
Working with Scenes
The Outliner Window
Appending and Linking
File operations
Introduction
Opening blender files
Saving blender files
Modeling
Introduction
Introduction
Objects
Objects
Selecting Objects
Editing Objects
Groups and Parenting
Tracking
Duplication
- DupliVerts
- DupliFaces
- DupliGroup
- DupliFrames
Mesh Objects
Meshes
- Mesh Structures
- Mesh Primitives
Selecting
- Selectable Elements
- Selection Basics
- Advanced Selecting
- Selecting Edges
- Selecting Faces
Editing
Basic Editing
- Translation, Rotation, Scale
- Adding Elements
- Deleting Elements
- Creating Faces and Edges
- Mirror editing
Vertex Editing
Edge Editing
Face Editing
Deforming Tools
- Mirror
- Shrink/Fatten Along Normals
- Smooth
- Noise
Duplicating Tools
- Duplicate
- Extrude
- Extrude Dup
- Spin
- Spin Dup
- Screw
Subdividing Tools
- Subdivide
- Subdivide fractal
- Subdivide smooth
- Loop Subdivide
- Knife Subdivide
- Bevel
Miscellaneous Tools
Retopo Tool
Sculpt Mode
Multi Resolution Mesh
Vertex Groups
Weight Paint
Mesh Smoothing
Curve Objects
Curves
Selecting
Editing
Advanced Editing
Surface Objects
Surfaces
Selecting
Editing
Text Objects
Texts
Editing
Meta Objects
Metas
Editing
Empty Objects
Empties
Group Objects
Groups
Scripts
Modeling Scripts
Modifiers and Deformation
Introduction
Introduction
Modifiers Stack
Modify
UVProject
Generate
Array
Bevel
Booleans
Build
Decimate
EdgeSplit
Mask
Mirror
Subsurf
Deform
Armature
Cast
Curve
Displace
Hooks
Lattice
MeshDeform
Shrinkwrap
SimpleDeform
Smooth
Wave
Simulate
Cloth
Collision
Explode
Fluid
Particle Instance
Particle System
Soft Body
Lighting
Introduction
Introduction
Lights
Introduction
Light Properties
Light Attenuation
Light Textures
What Light Affects
Lights In Other Contexts
Shadows
Introduction
Shadow Properties
Raytraced Shadow Properties
Volumetric Lights
Introduction
Lamps
Introduction
Lamp Light
- Raytraced Shadows
Spot Light
- Raytraced Shadows
- Buffered Shadows
- Halos
Area Light
- Raytraced Shadows
Hemi Light
Sun Light
- Raytraced Shadows
- Sky & Atmosphere
Lighting Rigs
Radiosity
Introduction
Rendering
Baking
Scene Light
Ambient Light
Ambient Occlusion
Exposure
Exposure
Materials
Introduction
Introduction to Shading
Materials Introduction
Usage
Assigning a material
Material Preview
Material Options
Multiple Materials
Properties
Diffuse Shaders
Specular Shaders
Ambient Light Effect
Color Ramps
Raytraced Reflections
Raytraced Transparency
Subsurface Scattering (SSS)
Strands
Node Materials
Material Nodes
Nodes Editor
Node Controls
Nodes usage
Nodes Groups
Material Node Types
- Input Nodes
- Output
- Color
- Vector
- Convertor
- Dynamic
Vertex Paint
Using Vertex Paint
Halos
Halos
Textures
Introduction
Introduction
UV/Image Editor
Common Options
Texture Stack
Texture Types
Texture Types
Procedural Textures
Image Textures
Video Textures
Texture Nodes
- Nodes Editor
- Node Controls
- Nodes usage
- Nodes Groups
-- Textures Input Nodes
-- Textures Output Nodes
-- Textures Color Nodes
-- Textures Patterns Nodes
-- Textures Textures Nodes
-- Textures Convertor Nodes
-- Textures Distort Nodes
Texture Plugins
Texture Painting
Painting the Texture
- Projection Paint
Mapping
Mapping
Environment Maps
UV Unwrapping Explained
- Unwrapping a Mesh
- Managing the UV Layout
- Editing the UV Layout
- Applying an Image
Influence
Influence
- Material
-- Bump and Normal
-- Displacement
- Particles
- World
World and Ambient Effects
World
Introduction
World Background
Ambient Effects
Mist
Stars
Rigging
Introduction
Introduction to Rigging
Armatures
Armature Objects
Panels overview
Bones
Visualization
Structure
Selecting
Editing
- Bones
- Properties
- Sketching
- Templating
Skinning
Introduction
Linking Objects to Bones
Skinning to Objects’ Shapes
Retargeting
Posing
Introduction
Visualization
Editing Poses
Pose Library
Using Constraints
Inverse Kinematics
Constraints
Introduction
Introduction
Constraints Common Interface
Constraints’ Stack
Transform Constraints
Copy Location
Copy Rotation
Copy Scale
Limit Distance
Limit Location
Limit Rotation
Limit Scale
Transformation
Tracking Constraints
Clamp To
IK Solver
Locked Track
Stretch To
Track To
Relationship Constraints
Action
Child Of
Floor
Follow Path
Null
Rigid Body Joint
Script
Shrinkwrap
Animation
Introduction
Introduction
The Timeline
Markers
3D Views
Animation Editors
Animation Editors
Ipo Editor
Ipo Curves and Keyframes
Ipo Datablocks
Ipo Types
Ipo Editor Interface
Editing
- Ipo Curves
- Keyframes
Ipo Drivers
Action Editor
Editing Action Channels
NLA Editor
Editing NLA Strips
Strip Modifiers
Animation Techniques
Introduction
Animating Objects
- Using Constraints
- Moving Objects on a Path
Animating Shapes
- Shape Keys
- Editing Shape Keys
- Animating Shape Keys
- Shape Keys Examples
Indirect Shape Animation
Animating Armatures
- Stride
Animating Lamps
Animating Cameras
Animating Materials
Animating Textures
Animating World
Physical Simulation
Introduction
Introduction
Dynamics
Force Fields
Collisions
Particles
Particles
Types
Physics
- Newtonian
- Keyed
- Boids
Visualization
Controlling Emission, Interaction and Time
Cache & Bake
Hair
Children
Vertex Groups
Particle Mode
Soft Body
Introduction
Exterior Forces
Interior Forces
Collisions
Simple Examples
Combination with Armatures
Combination with Hair Particles
Reference
Cloth
Introduction
Fluids
Fluid
Using the Game Engine
Using the Game Engine
Rendering
Introduction
Introduction
Camera
The Camera
Perspective (Vanishing points)
Depth Of Field
Render
Displaying Renders
Basic Options
Antialiasing (Oversampling)
Rendering Animations
Panoramic
Render Baking
Using the Command Line
Output
Output
Video Output
Effects and Post Processing
Introduction
Render Layers
Render Passes
Edges & Toon
Stamp
Color Management & Exposure
Depth Of Field
Motion Blur
Render Performance
Rendering Performance
Distributed Rendering
External Render Engines
Introduction
YafRay
Compositing with nodes
Composite Nodes
Introduction
Nodes Editor
Node Controls
Nodes usage
Nodes Groups
Composite Node types
Composite Node types
Input Nodes
Output Nodes
Color Nodes
Vector Nodes
Filter Nodes
Convertor Nodes
Matte Nodes
Distortion Nodes
Editing Sequences
Introduction
Introduction
The sequencer
Usage
Sequencer Modes
Sequence Screen Layout
Effects
Built-in Effects
Plugin Effects
Audio
Audio Sequences
Extending Blender
Introduction
Introduction
Python Scripting
Python Scripting in Blender
Setting up Python
The Text Editor
A working example
References
Python Scripts
Script Catalog
Bundled Scripts
Plugins
Blender's Plugins System
Texture plugins specifications
Sequence plugins specifications
Game Engine
Introduction
Introduction
The Logic Editor
Usage
Game Properties
Sensors
Introduction
Sensor Types
Controllers
Introduction
Expressions
Actuators
Introduction
Action
Camera
CD
Constraint
Edit Object
Ipo
2D Filters
Game
Message
Motion
Parent
Property
Random
Scene
Shape Action
Sound
State
Visibility
Cameras
Cameras
Dome Camera
Physics
Physics Engine
Material Physics
Object Types
- Static
- No Collision
- Dynamic
- Rigid Body
- Soft Body
- Occluder
- Sensor
Python API
Bullet physics
VideoTexture
Various resources
List of Features
External resources
Game Engine Basics (BSoD Tutorial)
FAQ