Implementation of Efficient, Fair Interpolation using Catmull-Clark Surfaces

Tim MacPherson

CS679 Project



Overview

I implemented two surface subdivision schemes - Catmull-Clark and Doo-Sabin - and used the Halstead-Kass-DeRose method of efficient, fair interpolation. The program loads an obj file and outputs an iv file for viewing.

Pseudo-Code

  • Load OBJ file
  • Iterate through specified subdivision scheme a specified number of times
    • Generate new vertices according to scheme
    • Determine faces and edges
    • Determine normals
  • Output IV file

Catmull-Clark Subdivision

  • Each face interpolates its vertices to created a new f-vertex
  • Each edge interpolates its endpoints and the new vertices created by the faces it borders to create a new e-vertex
  • Each vertex interpolates itself and all the new vertices created by the faces and edges it touches to create a new v-vertex
  • New faces are determined by choosing a f-vertex and a v-vertex, then finding the two e-vertices that join them

Doo-Sabin Subdivision

  • Each face interpolates its center and each of its vertices to create a new vertex for each old vertex
  • Each face generates a new face of the same shape but smaller in scale.
  • Each edge generates a face connecting the four vertices generated from its endpoints on the two faces it borders
  • Each vertex generates a new face connecting all the new vertcies generated using itself

Project Basics

  • Implemented Catmull-Clark Surface Subdivision

Project Extras

  • Implemented Doo-Sabin Surface Subdivision

Subdivision Surface Comparisons
  • Cube
  • No subdivision

    Catmull-Clark Subdivision - 3 iterations

    Doo-Sabin Subdivision - 2 iterations


  • Dual Tetra
  • No Subdivision

    Catmull-Clark Subdivision - 3 iterations

  • Venus
  • No Subdivision

    Catmull-Clark Subdivision - 1 iteration
    References