Implementation of Non-Uniform Recursive Subdivision Surfaces

Normal Doo-Sabin subdivision surfaces are based on uniform quadratic B-splines. This makes it somewhat more difficult to produce an object with sharp creases or corners using normal Doo-Sabin subdivision. Non-Uniform Subdivision Surfaces on the other hand, allow for the possibility of creating an object that will keep specific points sharp based on the knot intervals that a particular edge is assigned in the model mesh. We have implemented an object-oriented application for the modeling of Non-Uniform Subdivision Surfaces that is based on the paper Non-Uniform Recursive Subdivision Surfaces [1]. In particular, we have focused on the implementation of non-uniform subdivision surfaces based on quadratic B-splines. In other words, we have implemented non-uniform Doo-Sabin subdivision surfaces. This application reads in . obj models and renders them on the screen, with the ability for the user to select specific points and alter the knot sequence for any edge connected to that point. The altered knot sequence will affect the subdivision of the object and result in a fine mesh altered from standard Doo-Sabin subdivision. 1. Overview 1.1 Non-Uniform Subdivision Surfaces NURSS is a method for producing subdivision surfaces that have sharp edges or creases in the final mesh if so desired. There are two possible methods for implementing NURSSs: quadratic B-spline and cubic B-spline. Non-uniform meshes are produced by assigning each point in the original control mesh a knot interval for all edges connected to that point, and then subdividing the mesh (taking into account the knot intervals of the adjacent edges at each vertex). When the knot intervals are all set to the same value, the non-uniform subdivision reduces to standard Doo-Sabin subdivision in the case of quadratic B-spline and to Catmull-Clark subdivision in the case of cubic B-spline. Our focus is on the quadratic B-spline case. Just like normal Doo-Sabin subdivision, non-uniform quadratic B-spline subdivision works best when used on meshes comprised of quadrilateral polygons, but will also work on polygons with an arbitrary number of edges. Also, non-uniform subdivision results in producing mostly quadrilaterals when the new faces are created. The mesh that non-uniform subdivision produces is very similar to that which normal Doo-Sabin subdivision produces; in fact Doo-Sabin is just a special case of non-uniform subdivision. Non-uniform subdivision produces a new set of refined vertices as well as three types of new faces: face-face faces, produced by contracting a face in the original mesh toward its centroid, faceedge faces, produced by connecting the new face-face faces to each other across the original edges, and face-vertex faces, produced in the same manner as face-edge faces, but existing where the vertices used in the original mesh are. The primary difference between Doo-Sabin subdivision and non-uniform quadratic B-spline subdivision is that the latter takes into account the knot intervals between the new knots inserted along a particular edge. Non-uniform subdivision does not use a normal subdivision mask like standard Doo-Sabin subdivision does. Instead, it uses a rather complex formula to calculate the locations of all the new vertices in the subdivided mesh, taking into account the knot intervals and the need for the mesh to retain its affine invariance through unit summation. To that end, the following formula (Figure 1a) was created by the original researchers to give the same properties as standard Doo-Sabin subdivision while allowing for non-uniformity in any given mesh. The formula is CPSC 589 Project Final Report Timothy Davison & Chris Thomason Figure 1a: the NURSS subdivision formula.