Surface Subdivision


This project involved reading in a control mesh, and then subdividing each resulting face (which must be a triangle) into four more faces. The vertices of these new faces are then re-weighted with respect to neighboring vertices so that the entire surface becomes smoother. I then implemented some additional features, such as the ability to smooth shade or texture map the subdivided surface, the ability to move vertices in the control mesh in a number of ways and have those changes change the shape of the subdivided mesh as well. Also implemented was detail elision, so that when the surface is moved (it is drawn into an interactive OpenGL environment) fewer polygons have to be drawn at each step of the motion. Subdivision was accomplished by storing hierarchical meshes, where each mesh stores vertices, edges, and faces, all of which know the corresponding things around them. In this way changes to parent meshes can be peculated down to child meshes.

Implemented Features



Images

Spaceship

This spaceship is a manipulated cylinder, where the vertices at one end are all pulled together, so that a point can be formed that doesn't get rounded out, and the the rest of the surface is just done doing other vertex manipulation. The texture is mapped to the original cylinder, and then manipulated along with the rest of the object.

Landscape

The landscape was made just by getting a plane that was fairly subdivided, and then manipulating some of the vertices to give it heights in different places, so that the mountains (in the texture) are high, and the water is low.

Other Images

This is just a simple mesh, where the control mesh is represented by green edges and vertices, and the subdivided mesh by white edges and vertices. This is after two subdivisions, and does a good job of showing the vertex repositioning as well.


This image shows how vertices that are dragged in the control mesh effect faces in the subdivided mesh, in this case a single vertex was dragged out along it's normal. The surface is also smooth shaded.