Remesh modifier: sharp mode

Example of the remesh modifier's sharp mode

I’ve noticed that people are often unsure why you’d ever want to use the Sharp mode of the Remesh modifier, rather than Smooth mode.* One simple example is 3D text. Converting 3D text to a mesh will tend to give you lots of skinny triangles; if you want to sculpt or animate the text, a more regular tessellation could be quite helpful. Sharp mode then gives excellent results. The edges of the text are pretty much perfectly preserved, and now you can go add fun things like a Cloth modifier and watch it deform much more smoothly.

Meshes created with the Boolean modifier are another good candidate for use of sharp mode, as can be seen in this old demo video:

* People do correctly understand that the Block mode is mostly a gimmick.

Small performance improvement for subsurf

r43572: Skip subsurf normal allocation/calculation when not needed.

CCGSubsurf, the code behind the subsurf modifier, stores “grids” of subdivided data, one grid for each corner of a face. Each element of the grid contains a coordinate stored as three floats. It can also calculate normals, adding another three floats to each element.

When a mesh has UV layers, the subsurf modifier can (optionally) subdivide UV coordinates. This is done as a separate calculation from subdivision of the mesh’s face/edge data, because the connectivity of faces might look different from the UV perspective (think seams.) Because of this difference, a whole new CCGSubsurf object is created, calculated, and destroyed for each UV layer.

The change introduced in this commit is to simply disable normals calculation when it’s not needed (as in the case of UV layers.) So subdivision should runs a little bit faster and uses a little bit less memory (only during subdivision itself though; the output will use the same amount of memory, so the “Mem” number in the header will look the same.)