CS 779 Final Project: A-Patch Surface Beautification and Optimization

Main Objective: "Sealing" A-Patches of Different Subdivision Levels

With subdivision, a tesselated surface generated using the A-Patch method can yield tearing artifacts that are a result of different resolutions of tesselation for continuous curves.

One method of doing this is to seal the tears between the surface patches by generating a triangle strip between the edge of one patch to that of an adjacent subdivided patch. Although this method does not generate the most attractive surfaces due to "cliff artifacts" (areas of the surface that have a sudden change in orientation and result in a section that does not look smooth), generate a tight concentration of vertices long the patch boundaries and may result in very asymmetrical triangles that do not render well, but removes the tearing artifacts between surfaces.

A-Patch Stitching Algorithm

Extra Objective: Reducing Triangle Count of Patches with low Variation

In addition to resolving the incongruous edges between A-Patches at differing levels of subdivision, I chose to implement a technique that will reduce the number of triangles that are generated to form small and/or low curvature surfaces. Since the sealing algorithm relies on a particular set of edge points to work properly, the effectiveness of the method had to be reduced. In general, as the number of tesselations increase for a particular A-Patch, the greater the increase in the ratio of optimized triangles to unoptimized triangles.

The premise of the method is to reduce the number of triangles by removing all of the non-edge points of the A-Patch tesselation and to generate a new set of triangles with one of the vertices being the barycentric centre of the shape. For a triangle/3-sided patch this means finding the point whose barycentric coordinate is (1/3, 1/3, 1/3), whereas for a quadrilateral it means finding an approximate point that is the combination of a corner reference point and two vectors that are determined by half the distance of the edges that is formed by the reference point and its two neighbouring corners.

A-Patch Optimization Algorithm

Below are four screenshots demonstrating the difference between the unaltered subdivision and the one optimized by the algorithm.

A comparison between the two methods showing solid triangle geometry

A comparison between the two methods showing wire meshes