Subdivision Surfaces Seminar Final Project

This is still a work in progress, especially since I've agreed to put a little more time into it to see if I can get it working better, and on more general surfaces. However, here I present the results I have so far.

The following table shows various levels of subdivison on an eight sided shape, as well as the results of applying my "inverse" subdivision once and twice. This is to show that it indeed works as a (one sided, at least) inverse. Note that the second application isn't quite working perfectly. This is due to problems figuring out what "every other" vertex is. There's an easy hack for 4, 6, 8, and all even degree vertices, but I haven't implemented that as yet.

LevelResult of Subdividing"Inverting" OnceApplying a Second "Inverse"
Original
1
2
3
4
5
6



"So what?" you say... I can subdivide and invert a simple 8 sided diamond shape. Can I do anything tougher? Well, yes and no. Below is a head shape that I found online. The only problem with this shape is that it isn't closed, and as my code stands it doesn't handle non-closed objects well. Conceptually, there's nothing stopping me from handling non-closed objects, but it's that many more bugs to work out :-)

The original "head"

The head subdivided once.
Notice the points sticking out of his head. This is my subdivison algorithm not handling the edges of the surface correctly. These "points" cause problems for my inverse.

The head subdivided a second time.
The points are still there!

The head subdivided twice, and "inverted" once.
Note that the pointy "spikes" from the head are what cause all the triangles with vertices at the origin... Ignoring those, the inverse works pretty well here too.


Last Modified: Saturday, January 13, 2001

Chris Wyman (wyman@cs.utah.edu)