# CS 679 Project - Subdivision Surfaces

Bonny Liu

I have implemented 4 subdivision schemes for my project:

• Catmull-Clark
• can handle interior cases, boundary cases and extraordinary vertices
• Peter
• can handle interior points
• Loop
• triangulation
• can handle interior cases, boundary cases and extraordinary vertices
• Modified Butterfly
• triangulation
• can handle interior cases, boundary cases and extraordinary vertices

## Catmull-Clark

• I used the extraordinary point coefficients from the original paper
• Catmull-Clark works well on quadrilateral meshes
• works poorly on some of the triangular meshes (with many extraordinary vertices)
• may easily create artifacts like ripples and ditches around the extraordinary vertices

Here is an example (a cube) of the Catmull-Clark scheme:

Original Cube
One level of subdivision
Two levels
Three levels
Four levels
Four levels of subdivision with normals. The vertex normals are obtained by averaging the normals of adjacent triangles.
Another example (to illustration the boundary cases are handled correctly):
Original patch
3 levels of Catmull Clark subdivision

## Peter

• does not necessarily always provide smooth looking surfaces
• may have spiky points resulting from the original face mid-point
• needs many levels of subdivision
• easy to implement
Cube, 6 levels of Peter subdivision

## Loop

• works on triangular meshes therefore needs to triangulate model first
• triangulation - by joining face mid-point with the corners.
• works fairly well in general
• most of time, it smooths out significantly more than Catmull Clark.

## Modified-Butterfly

• works on triangular meshes therefore needs to triangulate model first
• interpolating scheme - therefore the quality is highly model dependent
• I first used mid-point triangulation. Since it's an interpolation scheme, it tries to interpolate the midpoints, which are not necessarily meant to be on the surface.  Therefore I tried the "Zig-Zag" triangulation, however this triangulation is not symmetrical.

Note: "Zig-Zag" triangulation is not symmetrical in general, both with Loop or Modified butterfly scheme.

The followings are subdivisions of Loop and Modified Butterfly schemes. (Cube)  They are to illustrate the difference of the two triangulation methods.Modified Butterfly (4 levels, Zig-Zag triangulation)
Loop (3 levels, Zig-Zag triangulation).  NOTE: might be hard to see, but it's not symmetrical
Modified Butterfly (4 levels, mid-point triangulation) NOTE: it tries to interpolate the face mid-points.
Loop (3 levels, midpoint triangulation)

I have compared the above schemes using some models:

• dualtetra.obj

Original model
Catmull Clark (3 levels)
Peter (6 levels)
Loop (3 levels)
Modified Butterfly (4 levels)

• tree1.obj
Original model
Catmull Clark (3 levels)
Peter (3 levels)
Loop (3 levels)
Modified Butterfly (3 levles)

Observations:
• Peter scheme doesn't provide a smooth surface as others
• Loop smooths out a lot more than Catmull Clark
• Modified Butterfly looks the closest to the orginal shape because it interpolates rather than approximates

• venusm.obj

Original Model

Catmull Clark (2 levels)

Peter (2 levels)
Loop (2 levels)
Modified Butterfly (2 levels)

Observations
• Loop scheme look the best.
• Catmull Clark doesn't look as good probaly because the original model is in triangular form and hence create many extraoridinary vertices
• Modified Butterfly tries to interpolate all the points and therefore doesn't necessarily provide "visual" smooth surface.
• In general, Loop scheme performs the best.

#### Assumptions of my program

• convex polygons
• each face must be >= 3 vertices
• counterclockwise ordering
• all edges have only up to 2 adjacent faces
• no "double-sided" polygons

Special thanks to Ian Bell and Vincent Ma for their help.